Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
(Obrigatório)
Informações Gerais
Especificação | |||
Produto | Logix | Módulo | Foundation |
Segmento Executor | Tecnologia | ||
Projeto1 | LD_FRW_FRW002 | IRM1 | PCREQ-9903 |
Requisito1 |
| Subtarefa1 |
|
Chamado2 |
| ||
PCREQ-9904 | Sub tarefa | PDR_LD_FRW001-241 | |
País | ( X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro ______________. | ||
Outros | <Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. |
Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos).
(Obrigatório)
Objetivo
<Nesta etapa informar o objetivo da especificação do requisito, ou seja, o que a funcionalidade deve fazer. Exemplo: Permitir que o usuário defina o percentual mínimo em espécie (dinheiro), a referência mínima para calculo dos débitos do aluno e o período de validade do parâmetro de negociação>.
Objetivo
Desenvolver uma ferramenta que efetue a exportação e publicação das estruturas das APIs Logix, desenvolvidos nos padrões determinados em Desenvolvimento de API - LGX e o novo serviço, denominado GetSchema, que provê a consulta às estruturas publicadas retornando-as no formato de XML Schema (XSD).
Definição da Regra de Negócio
(Obrigatório)
Definição da Regra de Negócio
<Regra de negócio é o que define a forma de fazer o negócio, o processo definido e/ou as regras que devem ser contempladas. Devem ser descritas restrições, validações, condições e exceções do processo. Caso necessário, incluir neste capítulo também regras de integridade que devem ser observadas no momento do desenvolvimento>.
<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.
Rotina | Tipo de Operação | Opção de Menu |
---|
LOG00070 - Publicação de |
[ACAA040 – Parâmetros]
[Alteração]
[Atualizações -> Acadêmico-> Tesouraria]
-
[ACAA050 – Negociação Financeira]
[Envolvida]
[Atualizações -> Acadêmico-> Tesouraria]
-
[ACAA060 – Cadastro de Pedidos]
[Criação]
[Atualizações -> Acadêmico-> Cadastros]
-
Exemplo de Aplicação:
- Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
- Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades como a referência mínima para calcular o débito total do aluno.
- Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
- O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.
Tabelas Utilizadas
- SE2 – Cadastro de Contas a Pagar
- FI9 – Controle de Emissão de DARF>.
Opcional
Protótipo de Tela
<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.
Protótipo 01
Opcional
Fluxo do Processo
<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>.
Opcional
Dicionário de Dados
Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/
Índice | Chave |
01 | <FI9_FILIAL+FI9_IDDARF+FI9_STATUS> |
02 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF> |
03 | <FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO> |
Campo | <AAA_PERESP> |
Tipo | <N> |
Tamanho | <6> |
Valor Inicial | <Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>. |
Mandatório | Sim ( ) Não ( ) |
Descrição | <Referência Mínima para Cálculo> |
Título | <Ref.Calc.> |
Picture | <@E999.99> |
Help de Campo | <Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação> |
(Opcional)
Grupo de Perguntas
<Informações utilizadas na linha Protheus>.
Nome: FINSRF2
X1_ORDEM | 01 |
X1_PERGUNT | Emissão De |
X1_TIPO | D |
X1_TAMANHO | 8 |
X1_GSC | G |
X1_VAR01 | MV_PAR01 |
X1_DEF01 | Comum |
X1_CNT01 | '01/01/08' |
X1_HELP | Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório |
(Opcional)
Consulta Padrão
<Informações utilizadas na linha Protheus>
Consulta: AMB
Descrição | Configurações de Planejamento |
Tipo | Consulta Padrão |
Tabela | “AMB” |
Índice | “Código” |
Campo | “Código”; ”Descrição” |
Retorno | AMB->AMB_CODIGO |
APIs | Criação | Administração Logix > Controle Geral > Desenvolvimento |
Índice minLevel 3
1. Introdução
Recentemente foram definidos novos padrões para o desenvolvimento de API na tecnologia Logix 4GL, disponível em Desenvolvimento de API - LGX, permitindo sua execução através de Web Services. Porém, para permitir a execução desta API é necessária uma ferramenta que efetue a exportação e publicação de sua estrutura de dados para que os serviços externos (como o TOTVS HTML Framework e EAI) saibam quais parâmetros de entrada e de saída deverão ser informados para a execução da mesma.
2. Funcionamento
A ferramenta de publicação será responsável por ler o conteúdo do código fonte da API e gerar a estrutura de todos os métodos públicos encontrados e seus respectivos parâmetros de entrada e saída. Após gerada a estrutura no formato JSON
, a ferramenta deve disponibilizar esta estrutura em um arquivo, a API ficará disponível publicamente para execução apenas após a compilação deste arquivo no RPO.
3. Serviço GetSchema
O serviço GetSchema será responsável por retornar a estrutura das APIs públicas, este fará parte da nova arquitetura de integração EAI, a qual está sendo denominada Mensageria TOTVS e que visa, entre outras coisas, definir os responsáveis de uma integração e reduzir o custo total de suporte em situações de inconsistências. O GetSchema será desenvolvido utilizando uma transação do tipo Mensagem Única TOTVS utilizando o a estrutura do XSD disponível neste link.
O fluxo abaixo demonstra como o serviço GetSchema será utilizado no contexto das integrações:
No lado Logix, que no fluxo acima é representado como ERP, será desenvolvido um adapter seguindo os padrões de Mensagem Única TOTVS, o qual utilizará a classe Helper gerada a partir do XSD da transação GetSchema versão 1.000. O adapter, de nome EAIAdapterGetSchema, receberá o XML com o nome do objeto de negócio e a resposta será um XML com o XSD da estrutura contendo os parâmetros de entrada e saída do objeto solicitado.
Informações | ||
---|---|---|
| ||
Ambas as funções de Adapters ou Helpers podem ser geradas pelo processo EAI0032 que interpreta o XSD de uma determinada mensagem e os converte em funções 4GL. Estas funções são compiladas e disponibilizadas em um repositório comum e são utilizadas por todos que desejam utilizar o padrão de mensagem única para integração via EAI. |
A geração do XSD se dará a partir da conversão da execução da função responsável por retornar a estrutura em JSON
gerada através da ferramenta de publicação de API (item 2.Funcionamento deste documento).
3.1 Mensagem de Envio
Segue abaixo um exemplo do XML que deverá ser enviado pelo aplicativo que deseja obter o XSD de determinado objeto de negócio, seguindo o padrão definido para uma mensagem do tipo BusinessMessage.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../xmlschema/general/requests/getSchema_1_000.xsd">
<MessageInformation version="1.000">
<UUID>a8eef627-a4f7-47ad-97dc-706ab15b995d</UUID>
<Type>BusinessMessage</Type>
<Transaction>GetSchema</Transaction>
<StandardVersion>1.000</StandardVersion>
<SourceApplication>SoapUI</SourceApplication>
<Product name="SoapUI" version="5.2.1"/>
<GeneratedOn>2016-01-01T00:00:00.000-00:00</GeneratedOn>
<DeliveryType>sync</DeliveryType>
</MessageInformation>
<BusinessMessage>
<BusinessRequest>
<Operation>GetSchema</Operation>
</BusinessRequest>
<BusinessContent>
<Adapter>Logix/logr2.logr2_pub_create_companies</Adapter>
</BusinessContent>
</BusinessMessage>
</TOTVSMessage> |
Observe na mensagem acima que no elemento <Adapter>
o nome do objeto de negócio deve vir precedido do nome do produto (Logix) e do nome da API (logr2) sempre que for realizada a requisição do XSD.
3.2 Mensagem de Reposta
Segue abaixo um exemplo do XML de retorno, o qual segue o padrão definido para uma mensagem do tipo ResponseMessage.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TOTVSMessage>
<MessageInformation version="1.000">
<UUID>66567771-f4b2-77f7-94f6-9dd1c22c3dbf</UUID>
<Type>Response</Type>
<Transaction>GetSchema</Transaction>
<StandardVersion>1.000</StandardVersion>
<SourceApplication>SoapUI</SourceApplication>
<BranchId/>
<Product name="SoapUI" version="5.1.2"/>
<GeneratedOn>2016-00-00T00:00:00</GeneratedOn>
<DeliveryType>sync</DeliveryType>
</MessageInformation>
<ResponseMessage>
<ReceivedMessage>
<SentBy>SoapUI</SentBy>
<UUID>a8eef627-a4f7-47ad-97dc-706ab15b995d</UUID>
<MessageContent>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../xmlschema/general/requests/getSchema_1_000.xsd">
<MessageInformation version="1.000">
<UUID>a8eef627-a4f7-47ad-97dc-706ab15b995d</UUID>
<Type>BusinessMessage</Type>
<Transaction>GetSchema</Transaction>
<StandardVersion>1.000</StandardVersion>
<SourceApplication>SoapUI</SourceApplication>
<Product name="SoapUI" version="5.1.2"/>
<GeneratedOn>2016-00-00T00:00:00</GeneratedOn>
<DeliveryType>sync</DeliveryType>
</MessageInformation>
<BusinessMessage>
<BusinessRequest>
<Operation>GetSchema</Operation>
</BusinessRequest>
<BusinessContent>
<Adapter>Logix/logr2.logr2_pub_create_companies</Adapter>
</BusinessContent>
</BusinessMessage>
</TOTVSMessage>]]>
</MessageContent>
</ReceivedMessage>
<ProcessingInformation>
<ProcessedOn>2016-00-00T00:00:00</ProcessedOn>
<Status>ok</Status>
</ProcessingInformation>
<ReturnContent>
<XSD>
<Adapter>logr2_pub_create_companies</Adapter>
<Schema>
<![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="logr2_pub_create_companies">
<xs:complexType>
<xs:choice>
<xs:element name="input" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lr_empresa" type="lr_empresa" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="output" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="lr_return" type="lr_return"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="api" type="xs:string" fixed="logr2"/>
</xs:complexType>
</xs:element>
<xs:complexType name="lr_empresa">
<xs:sequence>
<xs:element name="cod_empresa" type="xs:string"/>
<xs:element name="den_empresa" type="xs:string"/>
<xs:element name="den_reduz" type="xs:string"/>
<xs:element name="end_empresa" type="xs:string"/>
<xs:element name="den_bairro" type="xs:string"/>
<xs:element name="den_munic" type="xs:string"/>
<xs:element name="uni_feder" type="xs:string"/>
<xs:element name="ins_estadual" type="xs:string"/>
<xs:element name="num_cgc" type="xs:string"/>
<xs:element name="num_caixa_postal" type="xs:string"/>
<xs:element name="cod_cep" type="xs:string"/>
<xs:element name="num_telefone" type="xs:string"/>
<xs:element name="num_telex" type="xs:string"/>
<xs:element name="num_fax" type="xs:string"/>
<xs:element name="end_telegraf" type="xs:string"/>
<xs:element name="num_reg_junta" type="xs:string"/>
<xs:element name="dat_inclu_junta" type="xs:date"/>
<xs:element name="ies_filial" type="xs:string"/>
<xs:element name="dat_fundacao" type="xs:date"/>
<xs:element name="cod_cliente" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lr_return">
<xs:sequence>
<xs:element name="status" type="xs:integer"/>
<xs:element name="retmsg" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>]]>
</Schema>
</XSD>
</ReturnContent>
</ResponseMessage>
</TOTVSMessage> |
No elemento <ReturnContent>
encontra-se o elemento <XSD>
e logo abaixo encontram-se os elementos <Adapter>
e <Schema>
, no qual se encontra o conteúdo do XSD correspondente com a estrutura do objeto de negócio e seus respectivos parâmetros de entrada e saída. O XSD gerado terá dois grupos de parâmetros, sendo um para os de entrada (representado pelo elemento <input>
) e outro para os de saída (representado pelo elemento <output>
).
4. Considerações Finais
A transação GetSchema, assim como a transação WhoIs, deve ser considerada padrão do EAI e, portanto, não necessita ser habilitada e deve ser aceita por outros EAI de forma anônima, ou seja, sem que o aplicativo de origem esteja cadastrado no destino.
Protótipo de Tela
Imagem 1: tela para informação do código fonte da API e exibindo as APIs já publicadas.
(Opcional)
Estrutura de Menu
<Informações utilizadas na linha Datasul>.
Procedimentos
Procedimento |
|
|
|
Descrição | (Max 40 posições) | (Max 40 posições) | (Max 40 posições) |
Módulo |
|
|
|
Programa base |
|
|
|
Nome Menu | (Max 32 posições) | (Max 32 posições) | (Max 32 posições) |
Interface | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex |
Registro padrão | Sim | Sim | Sim |
Visualiza Menu | Sim/Não | Sim/Não | Sim/Não |
Release de Liberação |
|
|
|
Programas
Programa |
|
|
|
Descrição | (Max 40 posições) | (Max 40 posições) | (Max 40 posições) |
Nome Externo |
|
|
|
Nome Menu/Programa | (Max 32 posições) | (Max 32 posições) | (Max 32 posições) |
Nome Verbalizado[1] | (Max 254 posições) | (Max 254 posições) | (Max 254 posições) |
Procedimento |
|
|
|
Template | (Verificar lista de opções no man01211) | (Verificar lista de opções no man01211) | (Verificar lista de opções no man01211) |
Tipo[2] | Consulta/Manutenção/ Relatório/Tarefas | Consulta/Manutenção/ Relatório/Tarefas | Consulta/Manutenção/ Relatório/Tarefas |
Interface | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex | GUI/WEB/ChUI/Flex |
Categoria[3] |
|
|
|
Executa via RPC | Sim/Não | Sim/Não | Sim/Não |
Registro padrão | Sim | Sim | Sim |
Outro Produto | Não | Não | Não |
Visualiza Menu | Sim/Não | Sim/Não | Sim/Não |
Query on-line | Sim/Não | Sim/Não | Sim/Não |
Log Exec. | Sim/Não | Sim/Não | Sim/Não |
Rotina (EMS) |
|
|
|
Sub-Rotina (EMS) |
|
|
|
Localização dentro da Sub Rotina (EMS) |
|
|
|
Compact[4] | Sim/Não | Sim/Não | Sim/Não |
Home[5] | Sim/Não | Sim/Não | Sim/Não |
Posição do Portlet[6] | 0 – Top Left 1 – Top Right 2 – Bottom Left 3 – Bottom Right | 0 – Top Left 1 – Top Right 2 – Bottom Left 3 – Bottom Right | 0 – Top Left 1 – Top Right 2 – Bottom Left 3 – Bottom Right |
Informar os papeis com os quais o programa deve ser vinculado |
|
|
|
Cadastro de Papéis
<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.
<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.
Código Papel | (máx 3 posições) |
Descrição em Português* |
|
Descrição em Inglês* |
|
[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.
[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante
[3] Categorias são obrigatórias para os programas FLEX.
[4] Obrigatório quando o projeto for FLEX
[5] Obrigatório quando o projeto for FLEX
[6] Obrigatório quando o projeto for FLEX
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|