...
Documentar a estrutura, funcionamento e práticas relacionadas a mensagem padronizada TOTVS utilizando REST como padrão de comunicação e JSON como formato de mensagem.
Informações | ||
---|---|---|
| ||
Este documento leva em consideração que o leitor tenha um conhecimento prévio da mensagem padronizada TOTVS utilizando XML e SOAP. Caso algum termo não esteja suficientemente descrito, recomenda-se consultar o documento Padrão para criação de mensagem padronizada, disponível no portal de Integrações TOTVS. |
A partir da estrutura original da mensagem padronizada, baseada em SOAP e XML, temos os seguintes elementos:
Graficamente, a nova proposta pode ser descrita conforme abaixo:
<Inserir gráfico>
A dinâmica envolvendo o envio e recebimento de mensagens não se altera com a nova proposta. O que muda, de fato, são o formato da mensagem e a interface.
...
A geração das mensagens continua a cargo dos adapters, que entregam para a Engine do EAI a estrutura de dados necessária para gerar a mensagem no padrão TOTVS. Da mesma, forma o recebimento das mensagens continua sendo intermediado pelo Engine de EAI, que determinará qual o adapter responsável por processar a mensagem recebida.
...
A mensagem padronizada, utilizando JSON como formato terá as seguintes características, será composta dos seguintes elementos:
Headerheader: contem informações equivalentes a tag MessageInformation, e algumas mais, conforme segue:
, do formato XML. Os atributos JSON correspondentes seguem as mesmas convenções de obrigatoriedade do padrão original. As tags que não estão descritas aqui, a principio, não serão utilizadas.
contentContent: contem informações equivalentes a tag BusinessContent, para mensagens de negócio, ou a tag ReturnContent, para mensagens de resposta. Devido a isso, os atributos podem variar de acordo com a definição da transação. Quando a mensagem for de resposta, o atributo content terá a seguinte estrutura:
Uma mensagem da transação CostCenter, versão 2.000, seria expressa da seguinte forma, usando o formato JSON proposto:
Bloco de código | ||
---|---|---|
| ||
{
"header" : {
"UUID" : "d6bbfa63-ca27-e2ac-0b14-101970f59a5b",
"type" : "BusinessMessage",
"subType" : "event",
"transaction" : "CostCenter",
"version" : "2.000",
"sourceApplication": "P1299",
"productName" : "PROTHEUS",
"productVersion" : "12.1.17",
"companyId" : "99",
"branchId" : "01",
"generatedOn" : "2017-11-14T11:47:00-03:00",
"deliveryType" : "async",
},
"content" : {
"CompanyId" : "",
"BranchId" : "",
"CompanyInternalId" : "",
"Code" : "",
"InternalId" : "",
"RegisterSituation" : "",
"Name" : "",
"ShortCode" : "",
"SPED" : "",
"Class" : ""
}
} |
A mensagem de resposta correspondente seria semelhante ao exemplo abaixo:
Bloco de código | ||
---|---|---|
| ||
{
"header" : {
"UUID" : "",
"type" : "Response",
"subType" : "",
"transaction" : "",
"version" : "",
"sourceApplication" : "",
"productName" : "",
"productVersion" : "",
"generatedOn" : "",
"deliveryType": ""
},
"content" : {
"receivedMessage" : {
"UUID" : "<originalMsgUUID>",
"SentBy" : "<sourceApplication>",
"event" : "upsert|delete"
},
"processingInformation" : {
"processedOn" : "",
"status" : "OK|ERROR|WARNING",
"details" : [
{
"code" : "",
"message" : "",
"detailedMessage" : "",
"helpUrl" : "http://<serverName>" // Opcional
},
{
"code" : "",
"message" : "",
"detailedMessage" : "",
"helpUrl" : "http://<serverName>" // Opcional
}
]
},
"returnContent" : {
"atributo1" : "",
"atributo2" : "",
"listOfInternalID" : [ // Opcional em caso de resposta de requests
{
"name" : "InternalIdName",
"origin" : "",
"destination" : ""
},
{
"name" : "InternalIdName",
"origin" : "",
"destination" : ""
}
]
}
}
} |
As mensagens padronizadas em formato JSON serão recebidas por um endpoint padrão, conforme descrito abaixo:
...