DataWeave é a linguagem de expressão do MuleSoft para acessar, analisar e transformar dados que trafegam por um aplicativo Mule.
O DataWeave no Apex complementa o suporte nativo do Apex para processamento JSON e XML, e torna a transformação de dados mais fácil de codificar, mais escalável e eficiente. Ele usa a biblioteca Mulesoft DataWeave para ler e analisar dados de um formato, transformá-los e exportá-los em um formato diferente.
Você pode criar scripts DataWeave como metadados e invocá-los diretamente do Apex. Assim como o Apex, os scripts DataWeave são executados dentro dos servidores de aplicativos Salesforce, aplicando os mesmos limites de heap e CPU no código em execução.
Vamos ver um exemplo para analisar json e criar registros de contato usando scripts DataWeave.
- Criar scripts DataWeave
Crie um arquivo de origem do script DataWeave: json2Contacts.dwl.
%dw 2.0 registros de entrada application/json aplicativo de saída /apex --- registros map(record) -> { FirstName: record.first_name , LastName: record.last_name , Email: record.email } como Objeto { class: "Contact" }
Crie o arquivo de metadados associado: json2Contacts.dwl-meta.xml.
<?xml version= "1.0" encoding= "UTF-8" ?> < DataWeaveResource xmlns = "http://soap.sforce.com/2006/04/metadata" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" > < content xsi:nil = "true" /> < apiVersion > 59.0 </ apiVersion > < isGlobal > false </ isGlobal > < isProtected > false </ isProtected > </ DataWeaveResource >
Você pode implantar este arquivo usando o VSCode ou o Salesforce CLI.
2. Invoque o script DataWeave do Apex e verifique os resultados do Apex anônimo
Mapa < String , Objeto > parâmetros = novo Mapa < String , Objeto >(); parâmetros. put ( 'registros' , '[{"primeiro_nome":"TestFN", "sobrenome":"TestLN", "email":"teste@gmail.com"}]' ); DataWeave . Script script = novo DataWeaveScriptResource . json2Contacts (); DataWeave . Resultado resultado = script. execute (parâmetros); Lista < Contato > contatos = ( Lista < Contato >)result. getValue (); Sistema . debug (contatos);
Você pode ver o resultado abaixo nos logs
Notas:
- O namespace DataWeave fornece classes e métodos para dar suporte à invocação de scripts DataWeave do Apex.
- Para cada script DataWeave, uma classe interna do tipo DataWeaveScriptResource.<ScriptName> é gerada.
Recursos:
- https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/DataWeaveInApex_UseCase.htm?_ga=2.258491788.748266058.1731253467-599394452.1731251836
- https://github.com/developerforce/DataWeaveInApex/blob/main/force-app/main/default/dw/json2sObjects.dwl
Fonte: https://medium.com/@sfdcpulse