Páginas filhas
  • 4. CustomInformation

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
languageruby
linenumberstrue
#-----------------------------------------------------#
 FUNCTION EAIAdapterUnitOfMeasure2EAIAdapterUnitOfMeasure_LoadCustomContent()
#-----------------------------------------------------#
  ### Nesse ponto serão carregados os dados customizados para a mensagem de envio.  
  RETURN TRUE
END FUNCTION

...

Bloco de código
languageruby
linenumberstrue
#-----------------------------------------------------#
 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
languagexml
linenumberstrue
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>