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 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
languageruby
linenumberstrue
#---------------------------------------------------------------------------------------#
 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
languageruby
linenumberstrue
#---------------------------------------------------------------------------------------#
 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
languagexml
linenumberstrue
<?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>