Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleÍndice

Índice
stylesquare

Objetivo

...

Durante a criação das funcionalidades do Adapter, pode ser necessária 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, regras específicas para determinados aplicativos ou regras específicas entre aplicativos.

...

Bloco de código
languagexml
themeEmacs
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>

Como construir

...

Incluir a interface ICustomization na definição da classe.

...

Bloco de código
languageactionscript3
themeEmacs
linenumberstrue
CLASS com.totvs.datasul.eai.test.CustomUnitOfMeasure IMPLEMENTS ICustomization:
    DEFINE TEMP-TABLE ttLabInfo
        FIELD lab_id        AS CHARACTER.
 
    DEFINE TEMP-TABLE ttLabInfo2
        FIELD quanticMass   AS INTEGER
        FIELD fusionMethod  AS CHARACTER.
 
    METHOD VOID addCustomInformation(oMsg AS BusinessMessage):
        CREATE ttLabInfo2.
        ASSIGN
            ttLabInfo2.quanticMass = 120
            ttLabInfo2.fusionMethod = "Nuclear1".
       
        oMsg:CustomInformation:addCustomTable ("labInfo", INPUT TABLE ttLabInfo2).
       
        /* Repetindo para testar a validação se os dados serão duplicados ou não */
         ttLabInfo2.fusionMethod = "Nuclear".
        oMsg:CustomInformation:addCustomTable ("labInfo", INPUT TABLE ttLabInfo2).
    END.
 
    METHOD VOID addCustomInformation(oMsg AS ResponseMessage):
        CREATE ttLabInfo.
        ttLabInfo.lab_id = "05".
        oMsg:CustomInformation:addCustomTable ("lab_info", INPUT TABLE ttLabInfo).
 
        /* Repetindo para testar a validação se os dados serão duplicados ou não */
        ttLabInfo.lab_id = "10".
        oMsg:CustomInformation:addCustomTable ("lab_info", INPUT TABLE ttLabInfo).
 
    END.
END.


Como utilizar uma classe de customização?

A classe de customização deve ser vinculada a uma transação, para ser utilizada. Este vínculo deve ser feito no momento em que se carrega a transação no aplicativo interno.

...

Na tag <class> deve-se informar a classe do adapter. Na tag <customClass> deve-se informar a classe de customização. A tag <custom-adaptersRow> agrupa as duas tags anteriores. É permitido mais de um agrupamento (multiplas tags <custom-adaptersRow>) por arquivo.

Atribuição e Leitura

...

Para atribuição e leitura dos valores de campos customizados na mensagem é necessária uma classe específica para customização que possuirá os atributos com os valores para o envio. Essa classe se relacionará com o Adapter da mensagem.

Fluxo da Atribuição dos Valores

...

No Adapter é montada a mensagem de negócio (BusinessMessage) ou a mensagem de retorno (ResponseMessage).

...

Ao chamar o método dispatchMessage() a mensagem será enviada com as informações customizadas.

Fluxo da Leitura dos Atributos

...

Os dados customizados estarão na mensagem de negócio (BusinessMessage) ou na mensagem de retorno (ResponseMessage), e podem ser acessados pelo método getCustomInformation() (Java) ou pela propriedade CustomInformation (Progress).

...