Histórico da Página
...
Durante a criação das funcionalidades do Helper, houve poderá ser necessário a necessidade da utilização de campos específicos para algumas integrações. Assim, criou-se o conceito de CustomInformation, onde é possível enviar informações customizadas a partir de demandas como regras específicas para clientes.
Na geração dos adapters pelo programa EAI0032, são gerados sempre dois arquivos. Utilizando como exemplo a transação de unidade de medida temos os arquivos EAIAdapterUnitOfMeasure e o EAIHelperUnitOfMeasure. No arquivo EAIAdapterUnitOfMeasure é gerada a função padrão EAIAdapterUnitOfMeasure2EAIAdapterUnitOfMeasure_LoadCustomContent como mostra o código abaixo.
Bloco de código | ||||
---|---|---|---|---|
| ||||
#-----------------------------------------------------# FUNCTION EAIAdapterUnitOfMeasure2EAIAdapterUnitOfMeasure_LoadCustomContent() #-----------------------------------------------------# ### Nesse ponto serão carregados os dados customizados para a mensagem de envio. RETURN TRUE END FUNCTION |
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#-----------------------------------------------------# FUNCTION EAIAdapterUnitOfMeasure2_LoadCustomContent() #-----------------------------------------------------# DEFINE l_tabela VARCHAR(100), l_index SMALLINT, l_chave VARCHAR(100), l_valor VARCHAR(100) ### Nesse ponto serão carregados os dados customizados para a mensagem de envio. LET l_tabela = "labInfo", l_index = 1, l_chave = "quanticMass", l_value = "120" CALL EAIHelperUnitOfMeasure2_set_custom_info_negocio("labInfo"l_tabela, 1l_index, "quanticMass"l_chave, "120"l_value) RETURN TRUE END FUNCTION |
Observando a chamada da A função EAIHelperUnitOfMeasure2_set_custom_info_negocio os dados passado como parâmetros estão fixos, e está função deverá ser criada no que está sendo chamada logo após a recuperação dos dados, deverá ser no arquivo EAIHelperUnitOfMeasure2, como o exemplo abaixo:
...
Dentro da função EAIHelperUnitOfMeasure2_set_custom_info_negocio o desenvolvedor poderá deverá fazer a chamada da função ADVPL "_ADPVL_eai_add_custom_info", passando os parâmetros necessários para ela, como mostra o exemplo abaixo.
...
A função eai_add_custom_info necessita que seja informada uma lista de parâmetros. Esta lista o desenvolvedor deverá passar no primeiro parâmetro a mensagem:
- Primeiro parâmetro - Mensagem (o objeto)
...
- ;
- Segundo parâmetro - poderá ser informado o nome da tabela onde está sendo buscado as informações, está
...
- informações serão impressas no xml;
- Terceiro parâmetro - será o informado o índice, este dado
...
- será utilizado para ordenar a exposição dos campos no arquivo xml
...
- ;
- Quarto parâmetro - o nome do campo que está sendo
...
- buscado o dado
...
- ;
- Quinto parâmetro - o valor do
...
- referente ao
...
- quarto parâmetro.
O Xml abaixo é exemplo é exemplifica o resultado de um adapter customizado.
Exemplo no XML da Mensagem
Bloco de código | ||||
---|---|---|---|---|
| ||||
Na tag CustomInformation está as informações referente a customização do adapter de Unidade de Medida.
<?xml version="1.0" encoding="UTF-8"?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xmlschema/material/events/unitofmeasure_11_1_0.xsd">
<MessageInformation version="11.1.0">
<UUID>UnitOfMe-asur-eUps-ertE-vent00000000</UUID>
<Type>BusinessMessage</Type>
<Transaction>UnitOfMeasure</Transaction>
<StandardVersion>1.0</StandardVersion>
<SourceApplication>TestApplication</SourceApplication>
<Product name="ExternalApp" version="1.0"/>
<GeneratedOn>2001-12-31T12:00:00.000-03:00</GeneratedOn>
<DeliveryType>Sync</DeliveryType>
</MessageInformation>
<BusinessMessage>
<BusinessEvent>
<Entity>UnitOfMeasure</Entity>
<Event>upsert</Event>
<Identification>
<key name="code">UN</key>
</Identification>
</BusinessEvent>
<BusinessContent>
<Code>UN</Code>
<Description>Unidade</Description>
</BusinessContent>
<CustomInformation>
<Table name="labInfo">
<Record>
<Field name="quanticMass">120</Field>
</Record>
</Table>
</CustomInformation>
</BusinessMessage>
</TOTVSMessage> |