Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
SEQUENTIAL_EXECUTOR
Quando utilizzare
A SEQUENTIAL_EXECUTOR esegue una serie di funzioni una alla volta, in ordine. Ogni passaggio può utilizzare i risultati dei passaggi precedenti.
SEQUENTIAL_EXECUTORUtilizzalo quando la tua logica richiede più passaggi che dipendono dai risultati reciproci. I casi d'uso più comuni includono il recupero dei dati di identità e il loro utilizzo per recuperare segmenti di pubblico, l'esecuzione di una fase di classificazione e quindi la chiamata condizionale a diversi servizi esterni in base al risultato e la creazione di URL complessi di richieste di annunci da più fonti di dati.
Campi di configurazione
Una SEQUENTIAL_EXECUTOR funzione ha i seguenti campi:
-
Runtime: il linguaggio delle espressioni. Imposta questo valore su
JSONATA. -
FunctionList— Un elenco ordinato da 1 a 10 passaggi. Ogni passaggio specifica
FunctionIdla funzione da eseguire. Facoltativamente, è possibile aggiungere un'RunConditionespressione per controllare se il passaggio viene eseguito o saltato. -
Output: definisce i valori da produrre dopo il completamento di tutti i passaggi. Ogni voce associa una chiave di output (ad esempio
player_params.envelope) a un'espressione che può fare riferimento ai dati prodotti da qualsiasi fase della sequenza. Se omesso, viene utilizzato tutto l'output delle singole funzioni della sequenza. -
TimeoutMilliseconds(obbligatorio) — Il tempo massimo di completamento dell'intera sequenza. Se la sequenza supera questo timeout, MediaTailor scarta tutto l'output della sequenza.
Esecuzione ordinata e flusso di dati
MediaTailor esegue ogni passaggio della sequenza dal primo all'ultimo. Al termine di ogni passaggio, i valori prodotti vengono uniti in un set di risultati in esecuzione. I passaggi successivi possono accedere ai dati della sessione originale e a tutti i valori prodotti dai passaggi precedenti.
I dati temporanei sono il meccanismo principale per il passaggio dei dati tra i passaggi. Quando una funzione scrive su una temp.* chiave, il passaggio successivo consente di leggere quel valore. I parametri del player e i campi di richiesta degli annunci scritti nei passaggi precedenti sono visibili anche nei passaggi successivi.
Nota
I dati temporanei accettano qualsiasi tipo di dati, inclusi oggetti e matrici. I parametri del giocatore e i campi di richiesta degli annunci (accettano solo stringhe, numeri, valori booleani e null).
Per-step condizioni di esecuzione
Ogni passaggio della sequenza ha un RunCondition campo opzionale. Questo campo contiene un'espressione che restituisce true ofalse. MediaTailor valuta l'RunConditionespressione immediatamente prima di eseguire quel passaggio.
Se l'RunConditionespressione restituisce afalse, MediaTailor salta completamente il passaggio e passa a quello successivo. Se il RunCondition campo viene omesso, il passaggio viene sempre eseguito.
{ "FunctionId": "retryFetch", "RunCondition": "{%temp.statusCode = 500%}" }
Questo meccanismo consente di creare pipeline condizionali. Ad esempio, è possibile eseguire un recupero dell'identità nel passaggio 1, quindi eseguire in modo condizionale una ricerca di segmenti nel passaggio 2 solo se il passaggio 1 ha restituito un'identità valida.
Come funziona il blocco di output
Il blocco di output su a SEQUENTIAL_EXECUTOR controlla ciò che la sequenza produce dopo il completamento di tutti i passaggi:
-
Blocco di output presente: MediaTailor valuta le espressioni nel blocco di output rispetto allo stato finale accumulato e salva solo tali output. Tutti gli output prodotti dai passaggi precedenti che non sono referenziati nel blocco di output sequenziale vengono scartati.
-
Blocco di output assente: MediaTailor salva direttamente tutti gli output accumulati da tutti i passaggi.
Suggerimento
Omettete il blocco di output quando volete che l'output di ogni funzione passi. Aggiungi un blocco di output quando devi filtrare, rinominare o trasformare i risultati accumulati prima di salvarli.
Configurazione del timeout
Il TimeoutMilliseconds campo imposta una scadenza per l'intera sequenza. Questo timeout copre tutti i passaggi, incluse le chiamate HTTP effettuate dalle funzioni. Se la sequenza supera il timeout, MediaTailor elimina tutto l'output della sequenza e procede come se non fosse associata alcuna funzione.
HTTP_REQUESTLe singole funzioni rispettano comunque le proprie impostazioni. RequestTimeoutMilliseconds Il timeout della sequenza funge da limite esterno che limita il tempo totale di esecuzione.
Esempio: riprova in caso di errore HTTP
Questo esempio chiama un'API di identità e riprova automaticamente se la prima chiamata restituisce un errore del server. Utilizza due funzioni HTTP_REQUEST orchestrate da un SEQUENTIAL_EXECUTOR.
Fase 1 — Primary fetchIdentity fetch ():
{ "FunctionId": "fetchIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }
Passaggio 2: riprova in caso di errore ()retryIdentity:
{ "FunctionId": "retryIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity-fallback.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }
Sequenza (identityWithRetry):
{ "FunctionId": "identityWithRetry", "FunctionType": "SEQUENTIAL_EXECUTOR", "SequentialExecutorConfiguration": { "Runtime": "JSONATA", "TimeoutMilliseconds": 2000, "FunctionList": [ { "FunctionId": "fetchIdentity" }, { "FunctionId": "retryIdentity", "RunCondition": "{%temp.statusCode >= 500%}" } ], "Output": { "player_params.envelope": "{%temp.envelope%}" } } }
Come funziona:
-
fetchIdentitychiama l'API di identità e scrive il codice di stato e la busta sutemp.*. -
Se il codice di stato è 500 o superiore,
RunConditionil passaggio 2 valutatrueeretryIdentityviene eseguito. Sovrascrivetemp.statusCodeetemp.enveloperiprova. -
Se la prima chiamata ha avuto esito positivo, il passaggio 2 viene saltato.
-
La sequenza in cui il blocco Output scrive
temp.envelope.player_params.envelope