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).
...