Páginas filhas
  • ER_FRWJOI01-3_Serviços_para_monitoramento_de_EAI

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.

  

Informações Gerais

 

Especificação

Produto

TOTVS

Módulo

EAI

Segmento Executor

Framework

Projeto1

FRWJOI01

IRM1

Evolução EAI

Requisito1

FRWJOI01-3

Subtarefa1

FRWJOI01-84

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). 


Objetivo

 

Descrever os serviços WEB que devem ser disponibilizados pelos produtos TOTVS para monitoramento do EAI (status do serviço, mensagens e configurações).


Definição da Regra de Negócio


Pré-requisitos


Os serviços de monitoramento de EAI disponibilizados pelos produtos deverão atender os seguintes pré-requisitos:

  • Plataforma com suporte a REST e autenticação HTTP Basic.
  • Suporte a expressões XPath, para pesquisa de conteúdo em documentos XML.
  • Suporte a tratamento de cross-domain, por conta das requisições de serviços em servidores de domínio diferente.

Definições gerais dos serviços

 

Todas as linhas de produto deverão definir uma URL base, a partir da qual os serviços REST do monitor de EAI serão disponibilizados. Todos os caminhos descritos neste documento serão relativos a esta URL base.

As URLs dos serviços - por exemplo, /totvseai/monitor/v1/admin - são compostas pelos seguintes elementos:

  • totvseai - designa o contexto dos serviços relacionados ao EAI TOTVS.
  • monitor - designa o sub-contexto dos serviços. Neste caso, são os serviços relacionados ao monitoramento. Outro sub-contexto possível seria config, para agrupar serviços de configuração do EAI.
  • v1 - descreve a versão dos serviços dentro do sub-contexto. Isso permite a evolução dos serviços, sem quebrar clientes dos serviços de versões anteriores.
  • entidade - descreve a entidade que provê os recursos acessados pelo serviço. No caso dos serviços de monitoramento, teremos apps, transactions, msgs, entre outras.

Os retornos dos serviços REST devem estar encapsulados dentro de um objeto JSON com a seguinte especificação:

Bloco de código
languagejs
{
	“messages” : [ { ... }, { ... }, ... ],
	“length” : 999,
	“data” : [{ ... }]
}

 

Conteúdos de negócio, listas, dados e objetos devem estar contidos dentro do atributo data. O atributo length especifica o tamanho da lista ou a quantidade de dados contida no atributo data; No caso das listas, o atributo length, quando aplicável, contém a quantidade total de itens correspondentes aos parâmetros de pesquisa, e não apenas os que estão contidos no retorno, o que é comum quando há paginação de dados. O atributo messages contém uma lista de mensagens para exibir ao usuário (mensagens de erro ou de negócio). Cada elemento do array será um objeto que obedece a seguinte estrutura:

Bloco de código
languagejs
{
	“code” : “string”,
	“type” : “danger|error|warning|info|success”,
	“detail” : “string”
}

 

O atributo code representa o código da mensagem. Caso a mensagem possua um detalhamento técnico, este deve constar no atributo detail. O atributo type identifica o tipo de mensagem a ser exibida ao usuário: danger (perigo), error (erro), warning (aviso), info (informação) ou success (sucesso).

Descrição dos serviços do monitor

 

Os serviços de monitoramento que serão descritos a seguir estão divididos nas seguintes categorias:

  • Serviços de administração;
  • Serviços de aplicativo;
  • Serviços de mensagem;
  • Serviços de sumarização de mensagem;
  • Serviços de listagem de mensagem;
  • Serviços de filtro de mensagem;
  • Serviços de mapeamento de valores (“de-para”);

Na descrição de cada serviço podemos encontrar os seguintes elementos:

  • Esquema geral da URL do serviço;
  • Parâmetros de entrada e saída;
  • Descrição do serviço com detalhes relativos ao seu funcionamento;
  • Exemplos de uso do serviço, com URLs em situações específicas, e o respectivo retorno.


Âncora
admin
admin
Serviços de Administração

 

GET /totvseai/monitor/v1/admin/context

Recebe

Não recebe parâmetros

Retorna

Application/JSON

 O método /totvseai/monitor/v1/admin/context é utilizado para obter informações de contexto de EAI do aplicativo, seja ele interno ou externo. No JSON de retorno, no atributo data, deve constar as seguintes informações:               

  • hostAppID: Código do aplicativo interno (host application);
  • databaseType: O tipo de banco de dados em uso pelo produto (ORACLE, SQLSERVER, PROGRESS, DB2, MYSQL, etc.);
  • productName: Nome do produto instalado (DATASUL, PROTHEUS, RM, LOGIX, etc.);
  • productVersion: Versão do produto instalado;
  • userCode: código do usuário logado. Corresponde ao identificador único gerado pelo produto, por exemplo, “jose.silva”, “santos001”, etc.;
  • userName: nome do usuário logado, por exemplo, “José da Silva”, “Luiz dos Santos”, etc.;
  • userEmail: e-mail do usuário logado. Por exemplo: “[email protected]”, “[email protected]”, etc.;
  • userDialect: dialeto do usuário logado, utilizado para fins de tradução da interface do usuário (i18n). Por exemplo, “pt-BR”, “es-ES”, “en-US”, etc.;
  • userCanMonitor: indica se o usuário logado pode acessar o monitor de EAI (serviços e interface) ou não. Pode ser “true” ou “false”.

 

Informações
Importante: Em relação ao acesso, este será o único serviço que um usuário não autorizado poderá acessar e obter retorno. Os demais serviços retornarão código HTTP 403 (Forbidden) caso não tenham permissão (userCanMonitor = “false”).

 

Exemplo de JSON de retorno:

Bloco de código
languagejs
titleGET /totvseai/monitor/v1/admin/context
{
	“messages” : [],
	“length” : 1,
	“data” : [{
    	“hostAppID” : “app1”,
		“databaseType” : “ORACLE”,
		“productName” : “PROTHEUS”,
		“productVersion” : “12.1.11”,
		“userCode” : “jose.silva”,
		“userName" : “Jose da Silva”,
		“userEmail” : “[email protected]”,
		“userDialect” : “pt-BR”,
		“userCanMonitor” : true
	}]

}

 

Serviços de Aplicativo

 

GET /totvseai/monitor/v1/apps/{appID}?page={page}&perPage={perPage}

Recebe

appID   – string – path parameter

 

page    - int    - query parameter

 

perPage – int    – query parameter

Retorna

Application/JSON

 

Este método lista os detalhes do aplicativo solicitado, seja ele interno ou externo. Quando o parâmetro appID é omitido, todos os aplicativos serão considerados. O serviço ainda suporta os seguintes parâmetros:

  • page: Indica qual a página de dados desejada. Quando não informado, assume a página 1.
  • perPage: Indica a quantidade de registros por página. Quando não informado, assume por padrão 10 registros por página.

Para melhor compreensão do uso dos parâmetros acima, quando for informado algo como ?page=2&perPage=20, o JSON de retorno conterá, no atributo data, os elementos de nr. 21 a 40.

Os dados retornados para um aplicativo são:

  • appID: código (identificador único) do aplicativo;
  • name: nome (ou descrição resumida) do aplicativo;
  • description: descrição longa do aplicativo;
  • productCode: nome do produto do aplicativo (PROTHEUS, DATASUL, LOGIX, etc.);
  • productVersion: versão do produto do aplicativo;
  • isHost: indica se o aplicativo é interno (host application) no contexto que se está pesquisando. Os valores válidos para o atributo são ‘true’ e ‘false’;
  • msgValidation: indica a forma de validação das mensagens recebidas e enviadas pelo aplicativo contra os XML Schemas que definem as transações (XSDs). Os valores possíveis para este atributo são:
    • skip: para indicar que não será feita validação;
    • sendOnly: as mensagens serão validadas somente no envio por parte do aplicativo;
    • receiveOnly: as mensagens serão validadas somente no recebimento por parte do aplicativo;
    • always: as mensagens serão validadas sempre que forem recebidas ou enviadas.
    • wsdlUrl: URL usada para conexão ao aplicativo, a qual aponta para o WSDL do serviço de recebimento de mensagens;
    • portName: nome da porta do web service, destinado a receber mensagens;
    • monitorUrl: URL base dos serviços REST de monitoramento no aplicativo. Esta URL será utilizada para obter informações de mensagens no aplicativo, a partir do monitor de outro aplicativo.

O JSON de retorno terá o seguinte formato:

GET /totvseai/v1/monitor/apps

{

       “messages” : [],

       “length” : 2, # total de registros, considerando page=1, perPage=10

       “data” : [{

              “appID“ : “app1”,

              “name” : “Aplicativo 1”,

              “description” : “Nome do aplicativo 1”,

              “productCode” : “DATASUL”,

              “productVersion” : “12.1.11”,

              “isHost” : true,

              “msgValidation” : “skip”,

              “wsdlUrl” : “http://localhost:8080/eai2-ws/EAIService?wsdl”,

              “portName” : “EAI”,

              “monitorUrl” : “http://localhost:8080/

}, {

              “appID“ : “app2”,

              “name” : “Aplicativo 2”,

              “description” : “Nome do aplicativo 2”,

              “productCode” : “PROTHEUS”,

              “productVersion” : “12.1.9”,

              “isHost” : false,

              “msgValidation” : “sendOnly”,

              “wsdlUrl” : “http://localhost:8180/ws/EAIService.apw?wsdl”,

              “portName” : “EAISERVICESOAP”,

              “monitorUrl” : “http://localhost:8182

}]

}

 

GET /totvseai/v1/monitor/apps?page=2&perPage=10

{

       “messages” : [],

       “length” : 0, # não há registros dentro dos critérios informados

       “data” : []

}

 

GET /totvseai/monitor/v1/apps/app1

{

       “messages” : [],

       “length” : 1,  # Para requisições de um item, não há o que paginar

       “data” : [{

              “appID“ : “app1”,

              “name” : “Aplicativo 1”,

              “description” : “Nome do aplicativo 1”,

              “productCode” : “DATASUL”,

              “productVersion” : “12.1.11”,

              “isHost” : true,

              “msgValidation” : “skip”,

              “wsdlUrl” : “http://localhost:8080/eai2-ws/EAIService?wsdl”,

              “portName” : “EAI”,

              “monitorUrl” : “http://localhost:8080/

}]

}

 

GET /totvseai/monitor/v1/apps/inspect-new-app

Recebe

Application/JSON – form parameters

Retorna

Application/JSON

 

Este método permite obter dados de um novo aplicativo a partir das propriedades de conexão fornecidas (URL do WSDL, porta WSDL, usuário e senha).

O JSON a ser enviado no corpo da requisição REST (payload), contendo os dados de conexão ao aplicativo, deve ter os seguintes atributos:

  • wsdlUrl: URL usada para conectar ao web service do aplicativo.
  • portType: porta SOAP usada para conectar ao web service do aplicativo.
  • user: código do usuário usado para conectar ao web service do aplicativo.
  • password: senha do usuário usado para conectar ao web service do aplicativo.

Exemplo de JSON de envio:

{

       “wsdlUrl” : “http://localhost:8480/EAISERVICE.apw?wsdl”,

       “portType” : “EAISERVICESOAP”,

       “user” : “”,

       “password” : “”

}

O JSON de retorno conterá os dados do aplicativo (código, nome, descrição, entre outros) e suas respectivas transações.

Os dados relativos ao aplicativo seguem o formato definido para o serviço GET /totvseai/monitor/v1/apps, ao qual é adicionado o atributo transactions, um array com as transações disponíveis no aplicativo em questão.

Cada objeto dentro do array transactions terá os seguintes atributos:

  • transactionID: Nome da transação;
  • version: Versão da transação;
  • supportedMode: Modo suportado pela transação, ou seja, são as formas possíveis de uso da mesma. Os valores possíveis são:
    • send_enabled: A transação só pode ser usada no aplicativo para enviar mensagens;
    • receive_enabled: A transação só pode ser usada no aplicativo para receber mensagens;
    • both_enabled: A transação pode ser usada tanto para envio quanto para recebimento de mensagens.
    • enabledMode: Modo habilitado da transação, ou seja, o que de fato está habilitado no momento, que pode ser um dos valores a seguir:
      • send_enabled: indica que a transação, naquele aplicativo, está apenas enviando mensagens. Se o aplicativo receber mensagens dessa transação, elas serão recusadas;
      • receive_enabled: indica que o aplicativo apenas recebe mensagens dessa transação;
      • both_enabled: significando que a transação, naquele aplicativo, está apta a receber e enviar mensagens;
      • not_enabled: a transação não está habilitada no aplicativo.
      • allowAnonymous: indica se a transação pode ser requisitada de aplicativos anônimos, ou seja, que não estejam registrados no aplicativo como aplicativos externos;
      • includeOriginalMsg: indica se a mensagem de resposta de uma transação incluirá o corpo da mensagem original.

Veja exemplo completo do JSON de retorno:

{

       “messages” : [],

       “length” : 1,

       “data” : [{

            “appID“ : “app3”,

              “name” : “Aplicativo 3”,

              “description” : “Nome do aplicativo 3”,

              “productCode” : “LOGIX”,

              “productVersion” : “12.1.8”,

              “isHost” : false,

              “msgValidation” : “always”,

              “wsdlUrl” : “http://localhost:8480/EAISERVICE.apw?wsdl”,

              “portName” : “EAISERVICESOAP”,

              “monitorUrl” : “http://localhost:8481/”,

              “transactions” : [{

                     “transactionID” : “AccountPayable”,

                    “version” : “1.000”,

                    “supportedMode” : “both_enabled”,

                     “enabledMode” : “both_enabled”,

                    “allowAnonymous” : false,

                     “includeOriginalMsg” : false

              }, {

                     “transactionID” : “AccountReceivable”,

                    “version” : “1.003”,

                    “supportedMode” : “both_enabled”,

                     “enabledMode” : “receive_enabled”,

                    “allowAnonymous” : false,

                    “includeOriginalMsg” : false

              }]

       }]

}

 

GET /totvseai/monitor/v1/apps/{appID}/transactions?page={page}&perPage={perPage}

Recebe

appID   - string – path parameter

 

page    - int    - query parameter

 

perPage – int    – query parameter

Retorna

Application/JSON

 

Este serviço retorna a lista de transações para um aplicativo fornecido. O parâmetro de entrada – appID – deve ser informado na URL da requisição. Adicionalmente outros dois parâmetros podem ser informados:

  • page: Indica qual a “página” de dados desejada. Quando não informado, assume a página 1.
  • perPage: Indica a quantidade de registros por página. Quando não informado, assume por padrão 10 registros por página.

O JSON de retorno conterá, no atributo data, um array com as transações do aplicativo. A definição dos atributos presentes no retorno é a mesma do serviço anterior, exceto pelo fato que será retornado apenas as transações do aplicativo, não suas propriedades.

Segue JSON de exemplo para o retorno:

GET /totvseai/monitor/v1/apps/app1/transactions

{

       “messages” : [],

       “length” : 3, # implicitamente, page=1, perPage=10

       “data” : [{

             “transactionID” : “order”,

             “version” : “2.000”,

             “supportedMode” : “both_enabled”,

             “enabledMode” : “both_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : false

       } , {

             “transactionID” : “request”,

             “version” : “1.002”,

             “supportedMode” : “both_enabled”,

             “enabledMode” : “receive_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : true

       } , {

             “transactionID” : “unitofmeasure”,

             “version” : “1.000”,

             “supportedMode” : “send_enabled”,

             “enabledMode” : “send_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : true

       }]

}

 

GET /totvseai/monitor/v1/apps/app1/transactions?page=1&perPage=5

{

       “messages” : [],

       “length” : 3,

       “data” : [{

             “transactionID” : “order”,

             “version” : “2.000”,

             “supportedMode” : “both_enabled”,

             “enabledMode” : “both_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : false

       } , {

             “transactionID” : “request”,

             “version” : “1.002”,

             “supportedMode” : “both_enabled”,

             “enabledMode” : “receive_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : true

       } , {

             “transactionID” : “unitofmeasure”,

             “version” : “1.000”,

             “supportedMode” : “send_enabled”,

             “enabledMode” : “send_enabled”,

             “allowAnonymous” : false,

             “includeOriginalMsg” : true

       }]

}

 

GET /totvseai/monitor/v1/apps/{appID}/transactions/{transactionID}

Recebe

appID         - string – path parameter

transactionID - string – path parameter

Retorna

Application/JSON

 

Este serviço retorna detalhes da transação solicitada, como os contextos e as rotas estabelecidas. É possível que mais de uma versão da transação esteja registrada no aplicativo. Neste caso, todas as versões da transação serão retornadas.

Os dados serão retornados em um array no atributo data. Segue descrição dos atributos dos elementos do array:

  • transactionID: nome da transação;
  • version: versão da transação;
  • contexts: array com os contextos registrados para a transação. Pelo menos o contexto padrão “*” deve constar no atributo. Atualmente, o conceito de contexto está em uso somente no LOGIX e no DATASUL. As demais marcas podem sempre retornar “*” neste atributo.
  • routes: array com as rotas estabelecidas. Cada elemento do array tem os seguintes atributos:
    • context: nome do contexto ao qual está vinculada a rota (padrão “*”);
    • destination: nome do aplicativo de destino.

Segue exemplo de JSON de retorno:

GET /totvseai/monitor/v1/apps/app1/transactions/request

{

       “messages” : [],

       “length” : 2,

       “data” : [{

             “transactionID” : “request”,

             “version” : “1.000”,

             “contexts” : [“*”,”CRM”],

             “routes” : [{

                    “context” : “*”,

                    “destination” : “logix11”

             },{

                    “context” : “CRM”,

                    “destination” : “dts12”

             }]

       },{

              “transactionID” : “request”,

             “version” : “2.000”,

             “contexts” : [“*”],

             “routes” : []

       }]

}

 

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

 

(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.