Páginas filhas
  • 4. CustomInformation

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>