Durante a criação das funcionalidades do Helper, poderá ser necessário a 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 EAIAdapterUnitOfMeasure_LoadCustomContent como mostra o código abaixo.
#-----------------------------------------------------# FUNCTION EAIAdapterUnitOfMeasure_LoadCustomContent() #-----------------------------------------------------# ### Nesse ponto serão carregados os dados customizados para a mensagem de envio. RETURN TRUE END FUNCTION
Na função EAIAdapterUnitOfMeasure2_LoadCustomContent, o desenvolvedor poderá recuperar as informações que serão passadas para Helper, realizando a leitura de uma tabela específica. Abaixo um trecho do código exemplificando esta chamada.
#-----------------------------------------------------# 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(l_tabela, l_index, l_chave, l_value) RETURN TRUE END FUNCTION
A função EAIHelperUnitOfMeasure2_set_custom_info_negocio que está sendo chamada logo após a recuperação dos dados, deverá ser no arquivo EAIHelperUnitOfMeasure2, como o exemplo abaixo:
#---------------------------------------------------------------------------------------# FUNCTION EAIHelperUnitOfMeasure2_set_custom_info_negocio(l_tabela, l_index, l_chave, l_valor) #---------------------------------------------------------------------------------------# DEFINE l_tabela VARCHAR(100), l_index SMALLINT, l_chave VARCHAR(100), l_valor VARCHAR(100) END FUNCTION
Dentro da função EAIHelperUnitOfMeasure2_set_custom_info_negocio o desenvolvedor 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.
#---------------------------------------------------------------------------------------# FUNCTION EAIHelperUnitOfMeasure2_set_custom_info_negocio(l_tabela, l_index, l_chave, l_valor) #---------------------------------------------------------------------------------------# DEFINE l_tabela VARCHAR(100), l_index SMALLINT, l_chave VARCHAR(100), l_valor VARCHAR(100) CALL _ADPVL_eai_add_custom_info(g_eai_msg_negocio, l_tabela, l_index, l_chave, l_valor) END FUNCTION
A função eai_add_custom_info necessita que seja informada uma lista de parâmetros:
- 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 exemplifica o resultado de um adapter customizado.
Exemplo no XML da Mensagem
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>