Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Especificação | |||
Produto | Logix | Módulo | Foundation |
Segmento Executor | Tecnologia | ||
Projeto | FRWJOI01 | ||
Requisito | FRWJOI01-131 | Sub tarefa | FRWJOI01-132 |
País | (X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro ______________. |
Permitir a execução dos objetos de negócio públicos do Logix, através de mensagens baseadas no padrão de Mensagem Única preparadas para portar os parâmetros de entrada necessários e os dados de retorno gerados após a execução do referido objeto.
Para que seja possível que aplicativos externos consumam os objetos de negócio através da Mensageria TOTVS é necessário que as mensagens sejam informadas com o modelo de dados do aplicativo que, naquela integração, possuir o papel de ERP. A definição dos papéis na integração ficará a cargo do segmento que estiver demandando a mesma.
Considerando um cenário onde o Logix atue como ERP na integração, teremos todas as mensagens trafegadas com o formato de dados do Logix. Tomando por exemplo uma integração de cadastro de empresa entre Protheus e Logix, o fluxo será o seguinte:
Assumindo o fluxo acima, a responsabilidade pela conversão dos dados e pela montagem da mensagem de um modelo para outro fica sob responsabilidade do papel da vertical, ou seja, o Protheus.
Seguindo as especificações da Mensageria TOTVS, o conteúdo do elemento <BusinessContent>
de uma mensagem terá o formato descrito no XML Schema do objeto de negócio presente em <Transaction>
. Neste elemento, o objeto será sempre precedido pelo nome do ERP e, para o caso do Logix, com o nome do objeto seguindo do nome da API, ex.: Logix/logr2.logr2_pub_create_companies
.
Segue abaixo uma mensagem, do tipo BusinessMessage
, de exemplo de execução da API fictícia logr2_pub_create_companies
para a criação de empresas no Logix:
<?xml version="1.0" encoding="UTF-8"?> <TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xmlschema/general/totvsmsg.xsd"> <MessageInformation version="12.1.X"> <UUID>${=java.util.UUID.randomUUID()}</UUID> <Type>BusinessMessage</Type> <Transaction>Logix/logr2.logr2_pub_create_companies</Transaction> <StandardVersion>12.1.X</StandardVersion> <SourceApplication>SoapUI</SourceApplication> <Product name="SoapUI" version="5.1.2"/> <GeneratedOn>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</GeneratedOn> <DeliveryType>sync</DeliveryType> </MessageInformation> <BusinessMessage> <BusinessRequest> <Operation>Logix/logr2.logr2_pub_create_companies</Operation> </BusinessRequest> <BusinessContent> <logr2_pub_create_companies api="logr2"> <input> <lr_empresa> <cod_empresa>01</cod_empresa> <den_empresa>Empresa de Testes 01</den_empresa> <den_reduz>EMP 01</den_reduz> <end_empresa>Rua Dos Bobos, 01</end_empresa> <den_bairro>Los Angeles</den_bairro> <den_munic>Joinville</den_munic> <uni_feder>SC</uni_feder> <ins_estadual>000000000</ins_estadual> <num_cgc>00.000.000/0000-00</num_cgc> <num_caixa_postal/> <cod_cep>00000-00</cod_cep> <num_telefone>0000000000</num_telefone> <num_telex/> <num_fax/> <end_telegraf/> <num_reg_junta/> <dat_inclu_junta>${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date())}</dat_inclu_junta> <ies_filial/> <dat_fundacao>${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date())}</dat_fundacao> <cod_cliente/> </lr_empresa> </input> </logr2_pub_create_companies> </BusinessContent> </BusinessMessage> </TOTVSMessage> |
As transações retornadas pelo WhoIs devem ser previamente cadastradas a partir do programa EAI10000 na opção "TOTVS > Configuração > Aplicativo Hospedeiro". Portanto será necessário alterar este programa para que, além de buscar no repositório de objetos do Logix (RPO) as transações de mensagem única, busquem também as transações da mensageria TOTVS.
O programa deverá fazer distinção em tela das transações pertencentes a mensageria TOTVS, sendo que o nome das transações será o nome da API combinado com "." (ponto) mais o nome da função do objeto de negócio. Por exemplo para a API logr2, onde existem as funções logr2_pub_create_companies e logr2_pub_delete_companies, as duas novas transações serao criadas conforme a tabela abaixo:
API | Função | Transação |
---|---|---|
logr2 | logr2_pub_create_companies | logr2.logr2_pub_create_companies |
logr2 | logr2_pub_delete_companies | logr2.logr2_pub_delete_companies |
Além da diferença acima, a tela deve exibir de forma mais clara para o usuário quais são as transações de mensagens únicas e quais são as da mensageria TOTVS através de um indicador visível em tela, conforme mostra o protótipo de tela #1.
A transação WhoIs encontra-se atualmente na versão 1.000 permitindo que o mesmo retorne apenas as informações das transações que fazem parte da implementação de Mensagem Única. Para possibilitar que o mesmo retorne também as transações da implementação de Mensageria TOTVS, será necessário atualizá-lo criando assim a versão 1.001.
A versão 1.001 da transação WhoIs requer uma nova informação no corpo da mensagem, será incluído o elemento <RequestType>
com o atributo BusinessObjectOnly
, de tipo booleano, dentro do <BusinessContent>
da mensagem. O novo ADAPTER poderá ser gerado pela ferramenta EAI0032 através do XSD exemplificado abaixo:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:include schemaLocation="../totvsmsg.xsd"/> <xs:complexType name="BusinessContentType"> <xs:sequence> <xs:element name="RequestType" minOccurs="0"> <xs:complexType> <xs:attribute name="BusinessObjectOnly" default="false"> <xs:simpleType> <xs:restriction base="xs:boolean"/> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ReturnContentType"> <xs:sequence> <xs:element name="EnabledTransactions" minOccurs="0" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element name="Transaction" minOccurs="1" maxOccurs="unbounded"> <xs:complexType> <xs:all> <xs:element name="Name" minOccurs="1" type="xs:string"/> <xs:element name="BusinessObject" type="xs:string" minOccurs="0"/> <xs:element name="Version" type="xs:string" minOccurs="0"/> <xs:element name="Mode" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="SEND_ENABLED"/> <xs:enumeration value="RECEIVE_ENABLED"/> <xs:enumeration value="BOTH_ENABLED"/> <xs:enumeration value="send_enabled"/> <xs:enumeration value="receive_enabled"/> <xs:enumeration value="both_enabled"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:all> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="BusinessContent" type="BusinessContentType" substitutionGroup="AbstractBusinessContent"/> <xs:element name="ReturnContent" type="ReturnContentType" substitutionGroup="AbstractReturnContent"/> </xs:schema> |
O conteúdo retornado será determinado pelo atributo BusinessObjectOnly
, conforme tabela abaixo:
RequestType | BusinessObjectOnly | Retorno |
---|---|---|
Ausente | N/A | Transações de mensagem única e mensageria TOTVS. |
Presente | false | Transações de mensagem única e mensageria TOTVS. |
Presente | true | Transações de mensageria TOTVS. |
A transação WhoIs, na versão 1.000, manterá seu comportamento atual retornando somente transações de mensagem única. |
Imagem 1: indicador do tipo da transação.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|