...
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.
Bloco de código |
---|
language | ruby |
---|
linenumbers | true |
---|
|
#-----------------------------------------------------#
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.
Bloco de código |
---|
language | ruby |
---|
linenumbers | true |
---|
|
#-----------------------------------------------------#
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:
Bloco de código |
---|
language | ruby |
---|
linenumbers | true |
---|
|
#---------------------------------------------------------------------------------------#
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.
Bloco de código |
---|
language | ruby |
---|
linenumbers | true |
---|
|
#---------------------------------------------------------------------------------------#
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
Bloco de código |
---|
language | xml |
---|
linenumbers | true |
---|
|
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> |