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 | FRAMEWORK | Módulo: | EAI |
Segmento Executor |
| ||
Projeto1 | R_FRW_FRW002 | IRM | PCREQ-9646 |
Requisito1 | PCREQ-9648 | Subtarefa: | PDR_FRW_FRW002-52 |
Chamado2 |
| ||
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>. |
Objetivo:
Melhorar as mensagens de erros do EAI e propor um mecanismo de geração e gravação de logs de execução de mensagens do EAI.
Definição da Regra de Negócio
Será utilizado o padrão de SysLog para geração dos Logs do EAI da RM.
Trata-se de um padrão definido pelo Totvs para implementação de mecanismos de geração de log.
Esse padrão foi implementado pela Lib RM e diversos recursos já utilizam do mesmo. ex: DataServers, Host, Process, Jobs, etc.
1) - Ativação do log do EAI:
a) Atributo "TRACESYSLOG":
O atributo "TRACESYSLOG" (disponível nos arquivos de configuração do Host) deve ser ativado (TRACESYSLOG" = true).
Isso possibilitará o uso do padrão SysLog nos processos do ERP, inclusive nas rotinas do EAI.
b) - Atributo "TRACESYSLOGDEBUG":
O atributo "TRACESYSDEBUG" (disponível nos arquivos de configuração do Host) permitirá que informações do contexto de debug sejam também logadas.
A ativação desse atributo causará a produção de logs mais detalhados, aumentando assim o volume dos logs gerados.
c) Atributo "TRACESYSLOGEAI":
Será criado o atributo "TRACESYSLOGEAI" nos arquivos de configuração do Host.
Por default, esse atributo estará desligado = "False".
Quando estiver ligado = "true", as mensagens de log do EAI serão geradas e gravadas na nova tabela de Log do EAI "HcLogMensagem".
Caso contrário, nenhum log será gravado na tabela de log do EAI.
2) - Estrutura de tabelas
1)
Informações de log
- Criação da tabela: HCMonitor.
Uma linha nessa tabela indicará um "monitoramento de uma determinada ação no EAI". Basicamente essa tabela será usada para agrupar mensagens relacionadas;
Informações principais:
ID- Identificador do monitor
IDPROCESSO Identificador do processo
Exemplo:
a) - No RM o usuário cadastra um novo centro de custo (COSTCENTER 2.000);
b) - Existem duas integrações mapeadas para a mensagem COSTCENTER 2.000;
c) - O EAI será chamado para executar o envio da mensagem de centro de custo;
d) - Será gerada uma única linha na tabela HCMonitor (responsável em agrupar as mensagens geradas na fila);
d) - Serão geradas duas linhas na fila HCFilaMensagem (uma linha para cada integração mapeada);
2)- Criação da coluna "MonitorID" na tabela "HCFilaMensagem" com referência para tabela HCMonitor;
A mensagem gravada na fila (HCFilaMensagem) está vinculada a uma informação de monitor.
3) - Criação da tabela: HCLogMensagem.
Todos os logs gerados para uma determinada mensagem serão gravados nessa tabela.
Uma linha nessa tabela indicará uma única mensagem de log, ou seja, várias linhas serão incluídas nessa tabela para cada tentativa de execução da mensagem.
Informações principais:
UUID- Identificador da mensagem na fila
SEQUENCIAL- Compor chave primária
DATAMENSAGEM: Data e hora da geração do log
TIPOLOG : Tipo da mensagem de log [error, warning, info, danger]
Error: Mensagem de erro
Warning: Mensagem de aviso
Info: Mensagem de informação
Danger: Perigo
INFOLOG: mensagem de log.
DEBUGINFO: Informações de debug
3) - Mapeamento dos logs gerados pela engine do EAI
Abaixo serão listados todos os logs a serem disponibilizados durante o processo de gravação e execução da mensagem.
Serão listados abaixo todos os logs disponibilizados no processo do EAI bem como sua localização.
Informações |
---|
A coluna "Todas as marcas" indicará se o log deve ou não ser implementado nos EAIs das outras marcas. |
a) - Informações de log disponibilizadas durante o processo de "Recebimento de mensagens":
Localização | Mensagem | Tipo de menagem (E) - Erro A - (Aviso) I - (Informação) | Todas as marcas |
Inclusão Fila | INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE RECEBIMENTO NA FILA | I | Sim |
Inclusão Fila | Xml recebido é válido | I | Sim |
Inclusão Fila | Xml recebido não é válido | E | Sim |
Inclusão Fila | Informação das integrações recuperadas | I | Sim |
Inclusão Fila | Id da integração recuperada | I | Não |
Inclusão Fila | Não foi possível localizar nenhuma integração + Erro técnico | E | Sim |
Inclusão Fila | Não foi encontrado nenhuma entidade mapeada + Erro técnico | E | Não |
Inclusão Fila | Maoa de integração carregado | I | Não |
Inclusão Fila | Erro ao carregar mapa de integração | E | Não |
Inclusão Fila | XSLT de entrada está vazio | E | Não |
Inclusão Fila | Recebimento de mensagem assincrona | I | Sim |
Inclusão Fila | Evento CanSaveQueue será executado | I | Não |
Inclusão Fila | Mensagem gravada na fila | I | Sim |
Inclusão Fila | Erro ao salvar mensagem na fila + Erro técnico | E | Sim |
Inclusão Fila | Fim do processo de salvar mensagem de recebimento na fila | I | Sim |
Execução mensagem | Início do processo de execução da mensagem de recebimento | I | Sim |
Execução mensagem | Mensagem recuperada da fila | I | Sim |
Carga de informações | Não foi encontrado nenhuma entidade mapeada + Erro técnico | E | Não |
Carga de informações | Mapa de integração carregado | I | Não |
Carga de informações | Erro ao carregar mapa da integração | E | Não |
Carga de informações | Evento CanExecuteQueue executado | I | Não |
Carga de informações | Entidade não mapeada | E | Não |
Carga de informações | XSLT de entrada vazio | E | Não |
Preparação de contexto | Preparação de contexto | I | Não |
Preparação de contexto | Coligada e filial recuperados | I | Não |
Preparação de contexto | Alterando código de todas as coligadas e filiais encontradas | I | Não |
Preparação da execução | Evento BeforeExecuteHandle será executado | I | Não |
Preparação da execução | Início da execução do manipulador (handle)! | I | Não |
Preparação da execução | Manipulador (Handle) de 'DataServer' definido! | I | Não |
Preparação da execução | Manipulador (Handle) de 'Process' definido! | I | Não |
Preparação da execução | Manipulador (Handle) de 'Module' definido! | I | Não |
Preparação da execução | Manipulador (Handle) de 'CustomHandle' definido! | I | Não |
Preparação da execução | Contexto da RM (RMSContext) criado: | I | Não |
Preparação da execução | Inicio do processo de transformação via xslt! | I | Não |
Preparação da execução | Evento BeforeTransformReceive será executado! | I | Não |
Preparação da execução | Evento BeforeTransformReceive será executado! | I | Não |
Preparação da execução | Evento AfterTransformReceive será executado! | I | Não' |
Preparação da execução | Evento AfterTransformDataSet será executado! | I | Não |
Preparação da execução | Fim do processo de transformaçaõ via xslt | I | Não |
Preparação da execução | DataSet vazio | E | Não |
Execução de dataServer | Início da execução do manipulador de Dataserver! | I | Não |
Execução de dataServer | Executando dataServer:", "Nome do dataServer | I | Não |
Execução de dataServer | Evento BeforeSave será executado! | I | Não |
Execução de dataServer | Schema do dataServer recuperado! | I | Não |
Execução de dataServer | Início da recuperação dos valores da chave primária | I | Não |
Execução de dataServer | Valor Chave primária: Serão listados os valores da chave primária | I | Não |
Execução de dataServer | Fim da recuperação dos valores da chave primária | I | Não |
Execução de dataServer | Preechimento dos relacionamentos! | I | Não |
Execução de dataServer | Linha principal do dataSet em estado de exclusão! | I | Não |
Execução de dataServer | Linha principal do dataSet em estado de alteração! | I | Não |
Execução de dataServer | Linha principal do dataSet em estado de inclusão! | I | Não |
Execução de dataServer | Método 'SaveRecord' do dataServer executado: | I | Não |
Atualização De/Para | Atualizando De/Para da tabela | I | Sim |
Atualização De/Para | A coluna 'INTERNALID' não existe no dataSet a ser enviado para o DataServer. O De/Para não será atualizado! | A | Não |
Atualização De/Para | Não existe chave primária na tabela. O De/Para não será atualizado! | A | Não |
Atualização De/Para | Informações do De/Para a ser gravado: Serão listados os dados do de/para | I | Sim |
Atualização De/Para | Informações do De/Para serão excluídas | I | Sim |
Atualização De/Para | Erro ao atualizar De/Para | E | Sim |
Execução de dataServer | Evento AfterSave será executado | I | Não |
Execução de dataServer | Fim da execução do manipulador de Dataserver! | I | Não |
Execução de processServer | Início da execução do manipulador de process | I | Não |
Execução de processServer | Evento BeforeExecute será executado | I | Não |
Execução de processServer | Fim da execução do manipulador de process | I | Não |
Execução de processServe | Evento AfterExecute será executado | I | Não |
Execução de módule | Início da execução do manipulador de module | I | Não |
Execução de módule | Evento BeforeExecuteMethod será executado | I | Não |
Execução de módule | Evento AfterExecuteMethod será executado | I | Não |
Execução de módule | Fim da execução do manipulador de module! | I | Não |
Após Execução | Erro ao executar manipulador (handle) | E | Não |
Construção da resposta | Início da recuperação do xml de resposta | I | Não |
Construção da resposta | Evento CreateResponse será executado | I' | Não |
Construção da resposta | Início da construção da tag ReturnContent do dataServer! | I | Não |
Construção da resposta | Informações do internalId.[Serão listados os dados dos internalsIds] | I | Sim |
Construção da resposta | Fim da construção da tag ReturnContent do dataServer | I | Não |
Construção da resposta | Fim da recuperação do xml de resposta | I | Sim |
Após execução | Fim da execução do manipulador (handle) | I | Não |
Após execução | Evento AfterExecuteHandle será executado! | I | Não |
Após execução | Informações de execução da mensagem foram gravadas na fila | I | Não |
Após execução | Informações de execução da mensagem. Serão listados os dados de status da execução | I | Sim |
Após execução | FIM DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE RECEBIMENTO! | I | Sim |
b) - Informações de log disponibilizadas durante o processo de "Envio de mensagens":
Localização | Mensagem | Tipo de menagem (E) - Erro A - (Aviso) I - (Informação) | Todas as marcas |
Inclusão Fila | INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA | I | Sim |
InclusãoFilaFila | Recuperação das integrações | I | Sim |
InclusãoFilaFila | Mensagem não foi gravada na fila, pois não existe integração mapeada! | I | Sim |
InclusãoFilaFila | Entidade não foi mapeada | E | Não |
InclusãoFilaFila | Mapa de integração carregado. | I | Não |
InclusãoFilaFila | Erro ao carregar mapa de integração | E | Não |
InclusãoFilaFila | Executando mensagem da integração. [Serão listados os dados da integração] | I | Não |
InclusãoFilaFila | Evento CanSaveQueue será executado! | E | Não |
InclusãoFilaFila | Mensagem gravada na fila | I | Sim |
InclusãoFilaFila | Erro ao salvar mensagem na fila | E | Sim |
InclusãoFilaFila | Dados da mensagem gravada. [Serão listados os dados da mensgem gravada na fila] | I | Sim |
InclusãoFilaFila | FIM DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA | I | Sim |
Execução mensagem | INICIO DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE ENVIO NA FILA! | I | Sim |
Execução mensagem | Mensagem recuperada da fila! | I | Sim |
Execução mensagem | Execução da mensagem de forma sincrona! | I | Sim |
Execução mensagem | Execução da mensagem de forma assincrona! | I | Sim |
Carga Informações | Entidade não mapeada | E | Não |
Carga Informações | Mapa de integração carregado. | I | Não |
Carga Informações | Erro na carga de informações | E | Não |
Carga Informações | Evento CanExecuteQueue será executado! | I | Não |
Preparação contexto | Coligada não foi encontrada no dataSet enviado pelo produto! | A | Não |
Preparação contexto | Filial não foi encontrada no dataSet enviado pelo produto! | A | Não |
Preparação contexto | Coligada e filial recuperados | I | Não |
Preparação contexto | Início da execução do manipulador (handle) | I | Não |
Preparação contexto | Inicio do processo de transformação via xslt! | I | Não' |
Preparação contexto | Evento BeforeTransformSend será executado! | I | Não |
Preparação contexto | Evento AfterTransformSend será executado! | I | Não |
Preparação contexto | Fim do processo de transformação via xslt! | I | Não |
Execução handle WebServices | Início da execução do manipulador de WebServices! | I | Não |
Execução handle WebServices | Evento BeforeSendWebService será executado! | I | Não |
Execução handle WebServices | Inicio da execução do webServices! | I | Não |
Execução handle WebServices | Objeto wsdl não gerado! | E | Não |
Execução handle WebServices | Informações do assemblyProxy não encontradas! | E | Não |
Execução handle WebServices | Proxy não recuperado! | E | Não |
Execução handle WebServices | Fim da execução do webServices! | I | Sim |
Execução handle WebServices | Evento AfterSendWebService será executado! | I | Não |
Execução handle WebServices | Erro ao executar manipulador (handle): | E | Não |
Construção da resposta | A resposta da execução do WebServices foi bem sucedida! | I | Sim |
Construção da resposta | Erro ao realizar parser da resposta da mensagem (ResponseMessage): | E | Sim |
Construção da resposta | Informações retornadas na resposta da mensagem:[Serão listadas as informações retornas de InternalId] | I | Sim |
De/Para | Início do processo de salvar De/para! | I | Sim |
De/Para | Atributo 'ListOfInternalId' retornado no conteúdo da resposa da mensagem! | I | Sim |
De/Para | Informações do De/Para a ser gravado:[Serão listados dados do De/para] | I | Sim |
De/Para | Tabela não existente no dataSet original da mensagem: | A | Não |
De/Para | De/para não atualizado. Indentificador do internalId não localizado na lista! | A | Não |
De/Para | De/Para excluído com sucesso! | I | Sim |
De/Para | Exclusão de De/Para não retornou nenhum valor! | A | Sim |
De/Para | Não foi possível encontrar valores no de/para para exclusão! | A | Sim |
De/Para | Valor do 'internalId' não foi encontrado! | A | Não |
De/Para | Campo 'InternalId' não foi encontrado no dataSet de transformação! | A | Não |
De/Para | Campos chaves do De/Para não foram informados! | A | Não |
De/Para | Não foi encontrada a tabela no dataSet original | A | Não |
De/Para | Tabela não encontrada no dataSet original: | A | Não |
De/Para | De/para não atualizado. Atributo 'ListOfInternalId' não retornado no conteúdo da resposa da mensagem! | I | Sim |
De/Para | Conteúdo da mensagem (ReturnContent) não retornado na resposta da mensagem. De/para não atualizado. | A | Sim |
De/Para | Fim do processo de salvar De/para! | I | Sim |
De/Para | Erro ao salvar tabela De-Para: | E | Sim |
Execução handle webServices | Fim da execução do manipulador (handle) | I | Não |
Execução handle webServices | Evento AfterExecuteHandle será executado! | I | Não |
Execução da mensagem | Mensagem não foi executada. | I | Sim |
Execução da mensagem | Informações de execução da mensagem [ Serão listados dados de status da execução] | I | Sim |
Execução da mensagem | FIM DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE ENVIO NA FILA! | I | Sim |
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>.
Dicionário de Dados
1) - Criação da tabela: HCMonitor.
Uma linha nessa tabela indicará um "monitoramento de uma determinada ação no EAI".Basicamente essa tabela será usada para agrupar mensagens relacionadas;
Estrutura:
ID - Identificador do nonitor
IDPROCESSO - Identificador do processo
Exemplo:
a) - No RM o usuário cadastra um novo centro de custo (COSTCENTER 2.000);
b) - Existem duas integrações mapeadas para a mensagem COSTCENTER 2.000;
c) - O EAI será chamado para executar o envio da mensagem de centro de custo;
d) - Será gerada uma única linha na tabela HCMonitor (contendo informações do processo);
d) - Serão geradas duas linhas na fila HCFilaMensagem (uma linha para cada integração mapeada);
2)- Criação da coluna "MonitorID" na tabela "HCFilaMensagem" com referência para tabela HCMonitor;
3) - Será criada a tabela HCLogMensagem:
Todos os logs gerados para uma determinada mensagem serão gravados nessa tabela.
Uma linha nessa tabela indicará uma única mensagem de log, ou seja, várias linhas serão incluídas nessa tabela para cada tentativa de execução da mensagem.
Estrutura:
UUID- Identificador da mensagem na fila
SEQUENCIAL- Compor chave primária
DATAMENSAGEM: Data e hora da geração do log
TIPOLOG : Tipo da mensagem de log [error, warning, info, danger]
Error: Mensagem de erro
Warning: Mensagem de aviso
Info: Mensagem de informação
Danger: Perigo
INFOLOG: mensagem de log.
Scripts:
CREATE TABLE HCMONITOR -- Monitor do EAI
(
ID VARCHAR(255) NOT NULL,--Identificador do nonitor
IDPROCESSO VARCHAR(100) NULL, --Identicador do processo
RECCREATEDBY VARCHAR(50) NULL,
RECCREATEDON DATETIME NULL,
RECMODIFIEDBY VARCHAR(50) NULL,
RECMODIFIEDON DATETIME NULL,
)
ALTER TABLE HCMONITOR
ADD CONSTRAINT PK_HCMONITOR PRIMARY KEY (ID)
CREATE TABLE HCLOGMENSAGEM -- Log de mensagens.
(
UUID VARCHAR(255) NOT NULL,--Identificador do log
SEQUENCIAL INT NOT NULL,--Número sequencial
DATAMENSAGEM DATETIME NULL, --Data de inclusão da mensagem.
TIPOLOG INT NULL, --Tipo do log [error, warning, info, danger]
INFOLOG TEXT NULL,--Informações de Log do monitor
RECCREATEDBY VARCHAR(50) NULL,
RECCREATEDON DATETIME NULL,
RECMODIFIEDBY VARCHAR(50) NULL,
RECMODIFIEDON DATETIME NULL,
)
ALTER TABLE HCLOGMENSAGEM
ADD CONSTRAINT PK_HCLOGMENSAGEM PRIMARY KEY(UUID, SEQUENCIAL)
ALTER TABLE HCLOGMENSAGEM
ADD CONSTRAINT FK_HCLOGMENSAGEM_HCFILAMENSAGEM FOREIGN KEY(UUID)
REFERENCES HCFILAMENSAGEM (UUID)
--ALTERAÇÕES NA TABELA DE FILA DE MENSAGEM
ALTER TABLE HCFILAMENSAGEM
ADD MONITORID VARCHAR(255) NULL --Identificador do monitor.
ALTER TABLE HCFILAMENSAGEM
ADD CONSTRAINT FK_HCFILAMENSAGEM_HCMONITOR FOREIGN KEY (MONITORID)
REFERENCES HCMONITOR(ID)
ALTER TABLE HCFILAMENSAGEM
ADD STATUSMENSAGEM INT NULL --Status da mensagem.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|