Histórico da Página
Tipo da Integração
Mensagem de Negócio
Para criação do objeto BusinessMessage para envio ao EAI através do método dispatchMessage, deve ser utilizada a classe da mensagem de negócio.
Exemplo Progress:
Bloco de código | ||||
---|---|---|---|---|
|
...
| |||
DEFINE VARIABLE oBusinessMessage AS BusinessMessage NO-UNDO.
DEFINE VARIABLE oBusinessContent AS BusinessContentType NO-UNDO.
DEFINE VARIABLE oHelper AS UnitOfMeasure NO-UNDO.
/* Cria o conteúdo da mensagem */
oHelper = NEW UnitOfMeasure().
oBusinessContent = CAST( |
...
oHelper:createBusinessContent(), "com.totvs.datasul.eai2.unitofmeasure_11_1_0.BusinessContentType"). oBusinessContent:CODE = "DZ". oBusinessContent:DESCRIPTION = "Duzia". /* Cria a mensagem de negócio */ oBusinessMessage = BusinessMessage:createBusinessMessage(oBusinessContent). /* Insere informações sobre key-fields */ oBusinessMessage:Keys:addProperty("code", "DZ"). /* Define qual foi o evento que ocorreu */ oBusinessMessage:EVENT = "upsert". /* Define o modelo de mensagem: Síncrono (sync) ou Assíncrono (async) */ oBusinessMessage:DeliveryType = “sync”. |
...
Exemplo Java:
...
Exemplo Java:
Bloco de código |
---|
...
theme | Emacs |
---|---|
language | actionscript3 |
linenumbers | true |
...
/* Envia a mensagem para o Engine do EAI */
DO ON ERROR UNDO:
DEFINE VARIABLE oResponse AS ResponseMessage NO-UNDO.
oResponse = EAIEngine:Instance:dispatchMessage(oBusinessMessage).
CATCH eaiError AS EAIException:
MESSAGE "Erro ao realizar integração: " eaiError:getMessage(1).
RETURN.
END.
END.
|
| ||
BusinessMessage oBusinessMessage; BusinessContentType oBusinessContent; |
...
UnitOfMeasuer |
...
oHelper = |
...
new UnitOfMeasure(); /* Cria o conteudo da mensagem */ oBusinessContent = (BusinessContentType) |
...
oHelper.createBusinessContent(); oBusinessContent.setCode("UN"); oBusinessContent.setDescription("Unidade"); /* Cria a mensagem TOTVS */ oBusinessMessage = BusinessMessage.createBusinessMessage(oBusinessContent); /* Insere informacoes sobre key-fields */ oBusinessMessage.getKeys().put("code", "UN"); /* Define qual foi o evento que ocorreu: upsert, delete ou branco (request).*/ oBusinessMessage.setEvent("upsert"); /* Define o modelo de mensagem (Sincrono ou Assincrono) */ oBusinessMessage.setDeliveryType(mode); |
Envio do objeto para o EAI
Depois de preenchido os atributos de negócio da mensagem, o objeto deve ser enviado ao EAI para integração:
Exemplo Progress:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
/* Envia a mensagem para o Engine do EAI */
DO ON ERROR UNDO:
DEFINE VARIABLE oResponse AS ResponseMessage NO-UNDO.
oResponse = EAIEngine:Instance:dispatchMessage(oBusinessMessage).
CATCH eaiError AS EAIException:
MESSAGE "Erro ao realizar integração: " eaiError:getMessage(1).
RETURN.
END.
END. |
Exemplo Java:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
/* Envia a mensagem para o Engine do EAI */
try {
oResponse = EAIEngine.getInstance().dispatchMessage(oBusinessMessage);
uuid = oBusinessMessage.getUUID();
} catch (EAIException e) {
EAILog.error("UnitOfMeasureAdapter: erro: " + e.getMessage());
}
return oResponse; |
...
Nesse momento, deve se atentar ao tipo de integração definido no atributo DeliveryType da mensagem de negócio: síncrono (sync) ou assíncrono (async).
No caso de uma integração síncrona, a resposta (oResponse - RespondeMessage) virá preenchida com ou sem erro na integração e deve ser tratada pelo adapter logo após a chamada do método dispatchMessage.
Em uma integração assíncrona, a resposta (oResponse – ResponseMessage) virá com o valor nulo (?). O tratamento do retorno dessa integração, deverá ser tratada no método processMessage(ResponseMessage), que será invocado automaticamente pelo EAI posteriormente.