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:
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:
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:
/* 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:
/* 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.