Histórico da Página
...
Durante a criação das funcionalidades do Helper, houve 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 EAIAdapterUnitOfMeasure2_LoadCustomContent como mostra o código abaixo.
...
Observando a chamada da função EAIHelperUnitOfMeasure2_set_custom_info_negocio os dados passado como parâmetros estão fixos, e está função deverá ser criada no arquivo EAIHelperUnitOfMeasureEAIHelperUnitOfMeasure2, como o exemplo abaixo:
Bloco de código | ||||
---|---|---|---|---|
| ||||
#---------------------------------------------------------------------------------------# 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 fará a chamada par
Durante a criação das funcionalidades do Helper, houve 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.
Existem duas maneiras de enviar funções customizadas, que são pela BusinessMessage e pela ReturnMessage.
As funções de manutenção das informações de customização da BusinessMessage são:
...
poderá 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.
Bloco de código | ||||
---|---|---|---|---|
| ||||
#---------------------------------------------------------------------------------------# 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. Esta lista o desenvolvedor deverá passar no primeiro parâmetro a mensagem(o objeto), no segundo parâmetro poderá ser informado o nome da tabela onde está sendo buscado as informações, está informação será impressa no xml de envio. O terceiro parâmetro será o informado o índice, este dado é será utilizado para ordenar a exposição dos campos no arquivo xml. O quarto parâmetro o campo que está sendo pego o dado e por fim o ultimo parâmetro o valor do que pertence ao campo informado no quarto parâmetro. O Xml abaixo é exemplo é o resultado de um adapter customizado
Já as funções de manutenção das informações de customização da ReturnMessage são:
- EAIHelperSalesOrder1_set_custom_info_resposta(l_tabela, l_index, l_chave, l_valor)
- EAIHelperSalesOrder1_get_custom_info_resposta(l_tabela, l_index, l_chave)
- EAIHelperSalesOrder1_get_custom_info_size_resposta(l_tabela)
Com isso, a CustomInformation ficará disponível no XML da mensagem conforme a seguir.
Exemplo no XML da Mensagem
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
<?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> <Field name="fusionMethod">Nuclear</Field> </Record> </Table> </CustomInformation> </BusinessMessage> </TOTVSMessage> |