Árvore de páginas

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;
}