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à.
Esecutore sequenziale
Quando utilizzarlo
A SEQUENTIAL_EXECUTOR esegue una serie di funzioni una alla volta, in ordine. Ogni passaggio può utilizzare i risultati dei passaggi precedenti.
Da utilizzare SEQUENTIAL_EXECUTOR quando la logica richiede più passaggi che dipendono l'uno dai risultati dell'altro. 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 di richiesta di annunci complessi da più fonti di dati.
Campi di configurazione
Una SEQUENTIAL_EXECUTOR funzione ha i seguenti campi:
-
Runtime: il linguaggio delle espressioni. Impostalo 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 passaggio della sequenza. Se omessa, viene utilizzato tutto l'output delle singole funzioni della sequenza. -
TimeoutMilliseconds(obbligatorio): il tempo massimo per il 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 una serie continua di risultati. I passaggi successivi possono accedere ai dati della sessione originale più tutti i valori prodotti dai passaggi precedenti.
I dati temporanei sono il meccanismo principale per il trasferimento dei dati tra le fasi. Quando una funzione scrive su un temp.* tasto, il passaggio successivo può leggere quel valore. I parametri del giocatore e i campi di richiesta di 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 di 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 un risultatofalse, 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 segmento 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 quegli output. Tutti gli output prodotti dai passaggi precedenti a cui non viene fatto riferimento nel blocco di output sequenziale vengono eliminati.
-
Blocco di uscita assente: MediaTailor salva direttamente tutti gli output accumulati da tutte le fasi.
Suggerimento
Ometti il blocco di output quando desideri 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 scarta 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%}" } } }
Fase 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 intemp.*. -
Se il codice di stato è 500 o superiore,
RunConditionil passaggio 2 restituiscetrueeretryIdentityviene eseguito. Sovrascrivetemp.statusCodeetemp.envelopecon la risposta Riprova. -
Se la prima chiamata è riuscita, il passaggio 2 viene saltato.
-
La sequenza Output block scrive su
temp.envelope.player_params.envelope