Processar registros de destino condicionalmente no Jitterbit Design Studio
Caso de uso
Conjunto de registros de entrada com vários registros, e um subconjunto de registros deve ser processado. O payload do conjunto de registros pode ser como resultado de uma consultar, mas filtragem adicional é necessária.
Exemplo
A operação 0101 Query SF Accounts
executa uma consultar de Contas SFDC e, em seguida, cria clientes no NetSuite, que por sua vez atualiza a Conta SFDC. Um processo de erro atualiza Contas em uma condição de erro associada ao tipo de Modelo PDF.
Os registros de contas devem ser avaliados registro por registro e, dependendo do valor de um campo, processados no cenário de sucesso principal ou passados para processamento de erros.
Usar uma condição em uma transformação permite que você avalie cada registro. Se a condição for avaliada como verdadeira, como neste caso, o registro será gravado no arquivo temporário. Se for falsa, ele será ignorado.
Especificamente, os valores são passados para RunScript()
, que retornará uma string de "Error" se a pesquisa falhar. Então, se a variável local "result" for igual a "Error", então a operação de falha é executada, a variável local "cond" é definida como false, e o registro é pulado.
// Skip records where the pdf template lookup is incorrect
result = RunScript("<TAG>Scripts/PDF Template Lookup</TAG>",
root$transaction.response$body$queryResponse$result$records.Account$CccccccAaaaaaaa_Entity__c$,
root$transaction.response$body$queryResponse$result$records.Account$CurrencyIsoCode$,
root$transaction.response$body$queryResponse$result$records.Account$Payment_Method__c$,
root$transaction.response$body$queryResponse$result$records.Account$BillingCountry$);
// Set Sync Error Code to 3 if cannot find a match. Determine if returned an "Error" or not.
WriteToOperationLog("Template Lookup: "+result);
If(result=="Error",
$Id = root$transaction.response$body$queryResponse$result$records.Account$Id$;
RunOperation("<TAG>Operations/01 SF->NS Create Customer/0199 Update Accounts PDF Template Error</TAG>");
cond=false, cond=true);
cond
Para completar o exemplo, este é o RunScript()
chamada. De interesse é o uso de ArgumentList()
, o que permite que este script se comporte como uma função reutilizável:
ArgumentList(Sub,Cur,Pay,Cnt);
Case(
Sub=='CccccccAaaaaaa AU' && Cur=='AUD' && (Pay =='Check'||Pay =='Wire/EFT/BACS'||Pay == 'PayPal'),2,
Sub=='CccccccAaaaaaa AU' && Cur=='AUD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),3,
Sub=='CccccccAaaaaaa Brands UK' && (Cur=='USD'||Cur=='EUR'||Cur=='GBP'),26,
Sub=='CccccccAaaaaaa YY LTDA' && Cur=='BRL',17,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal') && Cnt != 'CccccccAaaaaaa',4,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && Cnt == 'CccccccAaaaaaa',5,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),1,
Sub=='CccccccAaaaaaa Hong Kong' && Cur=='USD',19,
Sub=='CccccccAaaaaaa UK' && Cur=='GBP' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),6,
Sub=='CccccccAaaaaaa UK' && Cur=='EUR' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),24,
Sub=='CccccccAaaaaaa UK' && Cur=='GBP' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),7,
Sub=='CccccccAaaaaaa UK' && Cur=='EUR' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),8,
Sub=='CccccccAaaaaaa Washington LLC' && Cur=='USD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),9,
Sub=='CccccccAaaaaaa Washington LLC' && Cur=='USD' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),10,
true,"Error"
)
Veja também: Atualizando vários alvos de um único registro de origem