Histórico da Página
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:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
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:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
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