Histórico da Página
Informações | ||||
---|---|---|---|---|
| ||||
|
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
<?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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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).
...