Objetivo
Após o recebimento da mensagem, os dados referentes à InternalId estarão na mensagem de negócio (BusinessMessage) ou na mensagem de retorno (ResponseMessage), que podem ser acessados pelo método getInternalId().
No próprio método processMessage() do Adapter existe a possibilidade de inserir a lógica para recuperar os dados da InternalId e gravá-los conforme a necessidade. Ou então, a classe de InternalId pode ser preparada para processar estes dados, sendo chamada de dentro do método processMessage() do Adapter.
Durante o tratamento da InternalId, buscar os valores na mensagem e converter para os valores internos, utilizando as funções da classeInternalId.
Exemplo de utilização em Progress:
METHOD PUBLIC ResponseMessage processMessage( INPUT oMsg AS BusinessMessage ): DEFINE VARIABLE response AS ResponseMessage NO-UNDO. DEFINE VARIABLE externalCompanyInternalId AS CHARACTER NO-UNDO. DEFINE VARIABLE internalCompanyInternalId AS CHARACTER NO-UNDO. DEFINE VARIABLE companyInternalCode AS CHARACTER NO-UNDO. DEFINE VARIABLE businessContent AS com.totvs.datasul.eai2.messages.CostCenter_2_000.BusinessContentType NO-UNDO. DEFINE VARIABLE helper AS com.totvs.datasul.eai2.messages.CostCenter_2_000.CostCenter NO-UNDO. DEFINE VARIABLE returnContent AS com.totvs.datasul.eai2.messages.CostCenter_2_000.ReturnContentType NO-UNDO. DEFINE VARIABLE list AS com.totvs.datasul.eai2.messages.CostCenter_2_000.ListOfInternalIdType NO-UNDO. DEFINE VARIABLE internalId AS com.totvs.datasul.eai2.messages.CostCenter_2_000.InternalIdType NO-UNDO. businessContent = CAST( MessageContentHelper:createBusinessContent( oMsg, helper ), "com.totvs.datasul.eai2.messages.CostCenter_2_000.BusinessContentType" ). externalCompanyInternalId = businessContent:CompanyInternalId. /* Obtem o valor correspondente ao registro local */ internalCompanyInternalId = mapper:getValue( "CompanyInternalId", oMsg:SourceApp, externalCompanyInternalId ). IF internalCompanyInternalId <> ? THEN companyInternalCode = mapper:internalIdGetValue("CompanyInternalId", internalCompanyInternalId, "tbl_empresa", "empresa"). /* Neste ponto, utiliza-se o código interno obtido para acessar o registro e efetuar as ações exigidas pela regra de negócio. Estas ações podem ser: - Inclusão de um novo registro - Alteração de um registro existente - Eliminação de um registro Como cada produto tem sua regra particular, foge do escopo do exemplo descrever o código-fonte destas regras. */ /* "ABC" representa o código do registro criado no aplicativo local, que deve ser devolvido ao aplicativo externo que enviou seu internalId. */ internalCompanyInternalId = "ABC". mapper.setValue("CustomerInternalId", internalCompanyInternalId, oMsg:SourceApp, externalCompanyInternalId); returnContent = CAST(helper:createReturnContent(),"com.totvs.datasul.eai2.messages.CostCenter_2_000.ReturnContentType"). list = returnContent:ListOfInternalId. internalId = NEW com.totvs.datasul.eai2.messages.CostCenter_2_000.InternalIdType(). ASSIGN internalId:NAME = "CustomerInternalId" internalId:Origin = externalCompanyInternalId internalId:Destination = internalCompanyInternalId. list:addInternalId( internalId ). returnContent:ListOfInternalId = list. response = ResponseMessage:createResponse(oMsg, returnContent). RETURN response. END METHOD.
Exemplo de utilização em Java:
public ResponseMessage processMessage(BusinessMessage oMsg) { String externalCompanyInternalId; String internalCompanyInternalId; String companyInternalCode; ResponseMessage response; BusinessContentType businessContent = (BusinessContentType) MessageContentHelper.createBusinessContent(oMsg, new CostCenter()); externalCompanyInternalId = businessContent.getCompanyInternalId(); // Obtem o valor correspondente ao registro local internalCompanyInternalId = mapper.getValue("CompanyInternalId", oMsg.getSourceApp(), externalCompanyInternalId); if( internalCompanyInternalId != null) { companyInternalCode = mapper.internalIdGetValue("CompanyInternalId", internalCompanyInternalId, "tbl_empresa", "empresa"); } // Neste ponto, utiliza-se o código interno obtido para acessar o registro e efetuar as ações exigidas pela regra de negócio. // Estas ações podem ser: // - Inclusão de um novo registro // - Alteração de um registro existente // - Eliminação de um registro // Como cada produto tem sua regra particular, foge do escopo do exemplo descrever o código-fonte destas regras. // "ABC" representa o código do registro criado no aplicativo local, que deve ser devolvido ao aplicativo externo que // enviou seu internalId. internalCompanyInternalId = "ABC"; // Cadastrando o relacionamento dos valores dos InternalId. mapper.setValue("CompanyInternalId", internalCompanyInternalId, oMsg.getSourceApp(), externalCompanyInternalId); // Montando a resposta CostCenter helper = new CostCenter(); ReturnContentType returnContent = (ReturnContentType) helper.createReturnContent(); ListOfInternalIdType list = returnContent.getListOfInternalId(); // Atualizando o de-para do internal id para devolver à origem InternalIdType internalId = new InternalIdType(); internalId.setName( "CustomerInternalId" ); internalId.setOrigin( externalCompanyInternalId ); internalId.setDestination( internalCompanyInternalId ); list.addInternalId( internalId ); returnContent.setListOfInternalId( list ); response = ResponseMessage.createResponse(oMsg, returnContent); return response; }
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas