Wired · Send Signal

Schema del flow attuale

Questa pagina descrive il comportamento attuale del wired send signal, con tutti i casi principali: antenne, utenti, furni, conteggi e combinazioni finali. È pensata da inoltrare così com'è per un controllo del flow.

Formula finale

antenne × utenti × furni

Il numero totale di segnali emessi è dato dal prodotto tra antenne valide, rami utente e rami furni.

Regola utenti

Con per ogni utente = disattivo, il ramo usa sempre l'utente che innesca. Con per ogni utente = attivo, il ramo usa l'utente che innesca più gli utenti trovati dalla source.

Regola furni

Se la source furni restituisce elementi, il flow attuale apre un ramo per ogni furni. Se non restituisce nulla, viene emesso un solo ramo senza furni allegati.

Pseudo flow

  1. 1. Vengono risolte le antenne destinazione.
  2. 2. Restano valide solo le antenne reali; se non ne resta nessuna, il flow si ferma.
  3. 3. Viene preso l'utente che ha innescato, se esiste.
  4. 4. Vengono risolti gli utenti dalla source utenti.
  5. 5. Vengono risolti i furni dalla source furni.
  6. 6. Se “per ogni utente” è attivo, si costruisce una lista unica con:
    • sempre l'utente che innesca, se presente;
    • poi tutti gli utenti della source;
    • senza duplicati.
  7. 7. Se “per ogni utente” è disattivo, si usa un solo ramo utente: l'utente che innesca.
  8. 8. Se la source furni ha elementi, si apre un ramo per ogni furni.
  9. 9. Se la source furni è vuota, si apre un solo ramo senza furni.
  10. 10. Per ogni combinazione antenna + utente + furni viene emesso un segnale separato.
  11. 11. Ogni segnale porta con sé:
    • la tile dell'antenna;
    • l'utente del ramo corrente, se presente;
    • l'utente originario che ha innescato la chain, se presente;
    • il furni del ramo corrente, se presente;
    • le context variables;
    • la profondità della chain aggiornata;
    • i conteggi utenti/furni esposti al ramo ricevente.

Tabella casi · Utenti

Per ogni utente Utente che innesca Source utenti Rami utente emessi Nota
Disattivo Presente Vuota 1 Parte sempre con l'utente che innesca.
Disattivo Presente 3 utenti 1 Gli utenti source non diventano rami separati.
Disattivo Assente Vuota 1 Parte un ramo senza utente.
Attivo Presente Vuota 1 L'utente che innesca viene sempre incluso.
Attivo Presente 3 utenti diversi 4 Utente che innesca + 3 utenti della source.
Attivo Presente Contiene già l'utente che innesca Utenti unici Nessun duplicato.
Attivo Assente 3 utenti 3 Usa solo gli utenti trovati dalla source.
Attivo Assente Vuota 1 Parte un ramo senza utente.

Tabella casi · Furni

Source furni Furni trovati Rami furni emessi Dato nel singolo ramo
Vuota 0 1 Nessun furni allegato
1 furni 1 1 Quel furni
3 furni 3 3 Un furni diverso per ramo
7 furni 7 7 Un furni diverso per ramo

Nel comportamento attuale, se la source furni restituisce elementi, il flow si apre sempre per furni singolo.

Tabella casi · Combinazioni complete

Caso Antenne Rami utente Rami furni Totale segnali
Utente che innesca presente, per ogni utente disattivo, 3 furni 2 1 3 6
Utente che innesca presente, per ogni utente attivo, source utenti con 3 utenti, 3 furni 2 4 3 24
Utente che innesca presente, selector utenti vuoto, 7 furni 1 1 7 7
Nessun utente, source utenti vuota, 7 furni 1 1 7 7
Nessuna antenna valida 0 qualsiasi qualsiasi 0

Conteggi esposti al ricevente

  • Conteggio utenti con “per ogni utente” attivo: numero di utenti unici del merge tra utente che innesca e source utenti.
  • Conteggio utenti con “per ogni utente” disattivo: se la source utenti ha elementi, vale il numero di utenti trovati dalla source; altrimenti vale 1 se esiste l'utente che innesca, altrimenti 0.
  • Conteggio furni: nel singolo ramo vale 1 se c'è un furni allegato, altrimenti 0.

Nota importante sul comportamento attuale

Oggi il flow reale fa fan-out per furni quando la source furni restituisce elementi. Quindi, se dalla source arrivano 7 furni, il sistema apre 7 rami furni distinti. Questo è importante perché impatta sia il numero totale dei segnali sia i conteggi osservati a valle.

Inoltre il segnale conserva anche l'utente originario che ha avviato la chain, separato dall'utente del ramo corrente.