Ir para o conteúdo

Atualize Vários Destinos de um Único Registro de Origem

Caso de Uso

Onde uma consultar ou payload de entrada contém dados que requerem várias atualizações de um único objeto de destino.

Nota

Este padrão de design usa Design Studio como um exemplo; você pode aplicar os mesmos conceitos em Cloud Studio usando etapas semelhantes.

Exemplo

O SAP IDoc de entrada contém um preço único e o sistema SFDC de destino possui uma ou mais entradas do catálogo de preços que precisam ser atualizadas. Este exemplo usa 3 operações. O primeiro recebe um Inbound IDoc do SAP, o segundo executa uma atualização no SFDC e o terceiro executa um upsert.

anexo

A resposta do IDoc é mapeada para um arquivo simples. Observe que a origem é hierárquica, enquanto o destino é simples. A linha geradora preta escura é do nó mais baixo na fonte. Se a origem tiver 1 registro no primeiro nível, dois registros no segundo nível e três registros no terceiro, serão gerados seis registros.

anexo

Cada nó no destino atribui o valor a uma variável global. Este é o valor da 'Chave':

$key=OUTPUT$COND_A01.IDOC$E1KOMG$VAKEY$

Ao usar variáveis globais, podemos chamar operações individualmente por meio de scripts e passar os valores. Normalmente, as operações desse tipo não têm origem.

Como o Jitterbit executa ações com script no destino sequencialmente, o script que chama as operações deve estar no último nó. Um método alternativo e talvez preferido é criar uma nova condição e executar as atribuições no nó de condição (não confunda com a guia Condição). Nesse caso, a transformação original gravava em um arquivo de texto e era mais fácil fazer as atribuições de valor individualmente. (Se você usar um nó de condição, não se esqueça de passar um valor verdadeiro como saída, caso contrário, ele nunca será executado!)

Voltando ao script em Moeda - existem dois requisitos. Se um valor de condição for 923, execute o upsert. Se um valor de condição for 304, execute a atualização.

Primeiro, o valor desse registro é atribuído a uma variável global e gravado no log de operação. Em seguida, avalie se é 923 ou 304. Se for 923, executar uma operação. Se for 304, precisamos fazer mais processamento. Como pode haver mais de um catálogo de preços que precisa ser atualizado, precisamos consultar o SFDC para obter uma lista, que é atribuída a $pbeList. Este é um array, então, em seguida, iteramos através do array e chamamos a operação de atualização. Observe que SFLookupAll retornará uma matriz, enquanto SFLookup retornará um único valor.

$currency=OUTPUT$COND_A01.IDOC$E1KOMG$E1KONH.E1KONP.KONWA$;
writetooperationlog("Currency "+$currency);
if($ConditionValue == "923", RunOperation("<TAG>Operations/Jitterbit Connect™/Salesforce Upserts/Upsert Contracted Prices</TAG>"));
if($ConditionValue == "304",
 $soql="SELECT Id from PricebookEntry WHERE Product2.ProductCode = '" + Right($material,4) + "' AND UseStandardPrice = TRUE";
 $pbeList = SfLookupAll("<TAG>Salesforce Orgs/jitterbit@XXXXX.com.devpro1 (Sandbox)</TAG>",$soql);
 WriteToOperationLog('PbeList=' + $pbeList);
 $c = length($pbeList);
 $i = 0;
 while( $i < $c,
 $pbeId = $pbeList[$i][0];
 WriteToOperationLog('PbeList=' + $pbeId + ' Price=' + $price);
 RunOperation("<TAG>Operations/Jitterbit Connect™/Salesforce Updates/Update Price Book Entries</TAG>");
 $i++)
)

Operação Upsert

Quando este upsert foi construído usando o assistente, no ponto onde uma fonte é selecionada, a escolha feita foi 'None' (é a última seleção e frequentemente negligenciada). Isso cria uma transformação que não lerá de um arquivo de origem ou de um banco de dados, mas usará variáveis globais.

anexo

O cliente eleito usa o SFLookup para obter os id's da conta e do produto. Script para SBQQ_Account__c:

$material;
$soql="select id from Account where SAP_Key__c='"+$material+"'";
SfLookup("<TAG>Salesforce Orgs/jitterbit@XXXXX.com.devpro1 (Sandbox)</TAG>",$soql)

A alternativa é passar a variável global para os relacionamentos no mapeamento e deixar os campos em branco. Ou seja, abra SAP_Key__c e adicione $material. O SFDC realizará a pesquisa de Conta e Produto automaticamente e preencherá os campos Conta__c e Produto__c. (Você descobrirá que no Jitterbit geralmente há mais de uma maneira de fazer a mesma coisa!)

Operação de Atualização

Isso é muito semelhante ao exemplo anterior. Como é uma atualização, o ID é necessário.

anexo

Consulte também: Processando registros de destino condicionalmente