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 erro do EAI e propor um mecanismo de geração e gravação de logs de execução de mensagens do EAI.
Introdução
Será utilizado o padrão de SysLog para geração dos Logs do EAI da RM.
Trata-se de um padrão definido pelo pela Totvs para implementação de mecanismos de geração de loglogs.
Esse padrão foi implementado pela Lib RM e na Lib RM, e atualmente diversos recursos já da Lib utilizam do o mesmo. ex: DataServers, Host, Process, Jobs, etc.
Definição da Regra de Negócio
1) - Ativação Regras para 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 de debug sejam também logadas.
A ativação desse atributo causará permitirá 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 = "Falsefalse".
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
a) - 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
ExemploCenário:
- No RM o usuário cadastra um novo centro de custo (COSTCENTER 2.000); - Existem duas integrações Em um determinado cliente existem duas integrações mapeadas para a mensagem COSTCENTER "COSTCENTER 2.000; - O EAI será chamado para executar o envio da " (mensagem de centro de custo);
- Será gerada uma única linha na tabela HCMonitor (responsável em agrupar as mensagens geradas na fila);
- Serão geradas duas linhas na fila HCFilaMensagem (uma linha para cada integração mapeada);
b)- 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.
c) - 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
Integração A: RM ---> Protheus
Integração B: RM —> DataSul
- Ao cadastrar um centro de custo no RM, ocorrerá o seguinte:
- O EAI RM será chamado para executar o envio da mensagem de centro de custo;
- Será gerada uma única linha na tabela HCMonitor (responsável em agrupar as mensagens geradas na fila);
- Serão geradas duas linhas na fila HCFilaMensagem (uma linha para cada integração mapeada);
b)- Criação da coluna "MonitorID" na tabela "HCFilaMensagem" com referência para tabela HCMonitor;
As mensagens gravadas na fila (HCFilaMensagem) estarão vinculadas a uma informação de monitor (HCMonitor).
c) - 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
LOCALIZACAO: região do eai que gerou a mensagem
TIPOLOG : Tipo da mensagem de log [error, warning, info]
Info: 0 - Mensagem de informação
Danger: Perigo INFOLOG Warning: 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.
Informações |
---|
Todas as mensagens de erro logadas serão acompanhadas de seus respectivos erros técnicos (exceções geradas). |
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":
1 - Mensagem de aviso
Error: 2 - Mensagem de erro
INFOLOG: mensagem de log.
INFODEBUG: Informações de debug. Nesse campo serão gravadas informações de valores de variáveis, propriedades de objetos, contextos existentes no momento da geração do log.
3) - Geração de logs customizados:
a) - Será disponibilizada na classe "HandleServices" (localizada no projeto: RM.Con.TotvsMessage.IServices" uma instância para o objeto "LogServices".
Informações |
---|
Um objeto da classe "HandleServices" está disponível atualmente nos extensions e estará disponível nas futuras classes de adapters. |
b) - Será disponibilizado no objeto "LogServices" três métodos:
- WriteTraceInformation: responsável pelo envio de mensagens de informação;
- WriteTraceError: responsável pelo envio de mensagens de erro;
- WriteTraceWarning: responsável pelo envio de mensagens de aviso;
Esses métodos recebem como parâmetro os seguintes dados:
- Identificador do monitor : disponível no contexto global do EAI. (this.TotvsMessageContext.Monitor.MonitorId);
- Mensagem de log: texto contendo a mensagem de log;
- Informações de debug: Devem ser enviadas no seguinte formato: "Identificação da inf. de debug", "Valor da informação de debug";
Segue abaixo um exemplo de criação customizada de logs nos adapters / extensions:
4) - 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.
Informações |
---|
Todas as mensagens de erro logadas serão acompanhadas de seus respectivos erros técnicos (exceções geradas). |
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 | ||||
Fila | INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE RECEBIMENTO NA FILA | I | Sim | ||||
Fila | Xml recebido é válido | I | Sim | ||||
Fila | Xml recebido não é válido | E | Sim | ||||
Fila | Integrações recuperadas. | I | Sim | ||||
Fila | Id da integração recuperada | I | Não | ||||
Fila | Não foi possível localizar nenhuma integração. | E | Sim | ||||
Fila | Não foi encontrada nenhuma entidade mapeada. | E | Não | ||||
Fila | Mapa de integração carregado. | I | Não | ||||
Fila | Erro ao carregar mapa de integração. | E | Não | ||||
Fila | XSLT de entrada não foi preenchido. | E | Não | ||||
Fila | Recebimento de mensagem assíncrona. | I | Sim | ||||
Fila | Evento CanSaveQueue será executado. | I | Não | ||||
Fila | Mensagem gravada na fila. | I | Sim | ||||
Fila | Erro ao salvar mensagem na fila. | E | Sim | ||||
Fila | FIM DO PROCESSO DE SALVAR MENSAGEM NA FILA. | I | Sim | ||||
Inicializando execução | INÍCIO DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE RECEBIMENTO. | I | Sim | ||||
Inicializando execução | Mensagem recuperada da fila. | I | Sim | ||||
Validação de execução | Não foi encontrada nenhuma entidade mapeada. | E | Não | ||||
Validação de execução | Mapa de integração carregado. | I | Não | ||||
Validação de execução | Erro ao carregar mapa da integração. | E | Não | ||||
Validação de execução | Evento CanExecuteQueue executado | I | Não | ||||
Validação de execução | Entidade não mapeada | E | Não | ||||
Validação de execução | XSLT de entrada não foi preenchido. | 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. | ||||||
Localização | Mensagem | Tipo de menagem (E) - Erro A - (Aviso) I - (Informação) | Todas as marcas | ||||
Fila | INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE RECEBIMENTO NA FILA | I | Sim | ||||
Fila | Xml recebido é válido | I | Sim | ||||
Fila | Xml recebido não é válido | E | Sim | ||||
Fila | Informação das integrações recuperadas | I | Sim | ||||
Fila | Id da integração recuperada | I | Não | ||||
Fila | Não foi possível localizar nenhuma integração | E | Sim | ||||
Fila | Não foi encontrado nenhuma entidade mapeada | E | Não | ||||
Fila | Maoa de integração carregado | I | Não | ||||
Fila | Erro ao carregar mapa de integração | E | Não | ||||
Fila | XSLT de entrada está vazio | E | Não | ||||
Fila | Recebimento de mensagem assincrona | I | Sim | ||||
Fila | Evento CanSaveQueue será executado | I | Não | ||||
Fila | Mensagem gravada na fila | I | Sim | ||||
Fila | Erro ao salvar mensagem na fila | E | Sim | ||||
Fila | Fim do processo de salvar mensagem de recebimento na fila | I | Sim | ||||
Execução | Início do processo de execução da mensagem de recebimento | I | Sim | ||||
Execução | Mensagem recuperada da fila | I | Sim | ||||
Preparação de informações | Não foi encontrado nenhuma entidade mapeada + Erro técnico | E | Não | ||||
Preparação de informações | Mapa de integração carregado | I | Não | ||||
Preparação de informações | Erro ao carregar mapa da integração | E | Não | ||||
Preparação de informações | Evento CanExecuteQueue executado | I | Não | ||||
Preparação de informações | Entidade não mapeada | E | Não | ||||
Preparação 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 BeforeExecuteHandle será executado!. | I | Não | ||||
Preparação da execuçãoEvento BeforeTransformReceive será executado! | Início da execução do manipulador (handle) | I | Não | ||||
Preparação da execução | Evento AfterTransformReceive será executadoManipulador (Handle) de 'DataServer' definido! | I | Não' | ||||
Preparação da execução | Evento AfterTransformDataSet será executadoManipulador (Handle) de 'Process' definido! | I | Não | ||||
Preparação da execução | Fim do processo de transformaçaõ via xsltManipulador (Handle) de 'Module' definido! | I | Não | ||||
Preparação da execução | DataSet vazio | E | Nã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 | Execução de dataServer | Início da execução do manipulador de Dataserver! | I | Não | ||
Preparação da execução | Evento BeforeTransformReceive será executado! | Execução de dataServer | Executando dataServer:", "Nome do dataServer | I | NãoExecução de dataServer | ||
Preparação da execução | Evento BeforeSave BeforeTransformReceive será executado! | I | Não | ||||
Preparação da execução | Evento AfterTransformReceive será executado | Execução de dataServer | Schema do dataServer recuperado! | I | Não' | ||
Preparação da execução | Evento AfterTransformDataSet será executado! | Execução de dataServer | Início da recuperação dos valores da chave primária | I | Não | ||
Preparação da execução | Fim do processo de transformaçaõ via xslt | Execução de dataServer | Valor Chave primária: | I | Não | ||
Execução de dataServer | Fim da recuperação dos valores da chave primária | I | Não | ||||
Preparação da execução | DataSet está vazio | E | Não | ||||
Executando handle de dataServer | Início da execução do manipulador de Dataserver | Execução de dataServer | Preechimento dos relacionamentos! | I | Não | ||
Execução Executando handle de dataServerLinha principal do dataSet em estado de exclusão! | Executando o dataServer + "Nome do dataServer" | I | Não | ||||
Execução Executando handle de dataServer | Linha principal do dataSet em estado de alteraçãoEvento BeforeSave será executado! | I | Não | ||||
Execução Executando handle de dataServer | Linha principal do dataSet em estado de inclusãoSchema do dataServer recuperado! | I | Não | ||||
Execução Executando handle de dataServerMétodo 'SaveRecord' do dataServer executado: | Início da recuperação dos valores da chave primária | I | Não | ||||
Executando handle de dataServer | Valor Chave primária:[serão informados os valores da chave primária" | I | Não | ||||
Executando handle de dataServer | Fim da recuperação dos valores da chave primária | De/Para | Atualizando De/Para da tabela | I | Sim | ||
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 | ||||
De/Para | Não existe chave primária na tabela. O De/Para não será atualizado! | A | Não | ||||
De/Para | Informações do De/Para a ser gravado: | I | Sim | ||||
De/Para | Informações do De/Para serão excluídas | I | Sim | ||||
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 | ||||
Não | |||||||
Executando handle de dataServer | Preechimento dos relacionamentos! | I | Não | ||||
Executando handle de dataServer | Linha principal do dataSet em estado de exclusão! | I | Não | ||||
Executando handle de dataServer | Linha principal do dataSet em estado de alteração! | I | Não | ||||
Executando handle de dataServer | Linha principal do dataSet em estado de inclusão! | I | Não | ||||
Executando handle de dataServer | Método 'SaveRecord' do dataServer executado: | I | Não | ||||
Atualização De/Para | Atualizando De/Para da tabela + "Nome 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 serem gravados:[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 | ||||
Executando handle de dataServer | Evento AfterSave | Execução de processServe | Evento AfterExecute será executado | I | Não | ||
Execução Executando handle de móduledataServer | Início Fim da execução do manipulador de moduleDataserver! | I | Não | ||||
Execução Executando handle de móduleEvento BeforeExecuteMethod será executadoProcesso | Início da execução do manipulador de processo. | I | Não | ||||
Execução de handle de móduleProcesso | Evento AfterExecuteMethod BeforeExecute será executado | I | Não | ||||
Execução de handle de móduleProcesso | Fim da execução do manipulador de module!process | I | Não | ||||
Execução | Erro ao executar manipulador (handle) | de handle de Processo | Evento AfterExecute será executado | IE | NãoResposta | ||
Execução de handle de módule | Início da recuperação execução do xml manipulador de respostamodule | I | NãoResposta | ||||
Execução de handle de módule | Evento CreateResponse BeforeExecuteMethod será executado | I' | Não | ||||
Execução de handle de módule | Evento AfterExecuteMethod será executado | Resposta | Início da construção da tag ReturnContent do dataServer! | I | Não | ||
Execução de handle de módule | Fim da execução do manipulador de module! | Resposta | Informações do internalId. | I | SimNão | Resposta | Fim da construção da tag ReturnContent do dataServer |
Finalizando execução | Erro ao executar manipulador (handle) | EI | NãoResposta | ||||
Gerrando resposta | Fim Início da recuperação do xml de resposta | I | Sim | Execução | Fim da execução do manipulador (handle) | I | NãoExecução |
Gerrando resposta | Evento AfterExecuteHandle CreateResponse será executado! | I' | Não | ||||
Gerrando resposta | Início da construção da tag ReturnContent do dataServer! | Execução | Informações de execução da mensagem foram gravadas na fila | I | NãoExecução | ||
Gerrando resposta | Informações de execução da mensagem.do internalId. Dados do internalId | I | Sim | ||||
Gerrando resposta | Fim da construção da tag ReturnContent do dataServer | Execução | FIM DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE RECEBIMENTO! | I | SimNão | ||
b) - Informações de log disponibilizadas durante o processo de "Envio de mensagens":
Gerrando resposta | Fim da recuperação do xml de resposta | I | Sim |
Finalizando execução | Fim da execução do manipulador (handle) | I | Não |
Finalizando execução | Evento AfterExecuteHandle será executado! | I | Não |
Finalizando execução | Informações de execução da mensagem foram gravadas na fila | I | Não |
Finalizando execução | Informações de execução da mensagem. | I | Sim |
Finalizando Execução | FIM DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE RECEBIMENTO |
Localização
Mensagem
Tipo de menagem
(E) - Erro
A - (Aviso)
I - (Informação)
Todas as marcas
Fila
INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA
I
Sim
! | 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 | |
Fila | INÍCIO DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA | I | Sim | |
Fila | Recuperação das integrações | I | Sim | |
Fila | Mensagem não foi gravada na fila, pois não existe integração mapeada! | |||
Fila | Entidade não foi mapeada | E | Não | |
Fila | Mapa de integração carregado. | I | Não | |
Fila | Erro ao carregar mapa de integração | E | Não | |
Fila | Executando mensagem da integração. [Serão listados os dados da integração] | I | Não | |
Fila | Evento CanSaveQueue será executado! | E | Não | |
Fila | Mensagem gravada na fila | I | Sim | |
FilaErro ao salvar mensagem na fila | Entidade não foi mapeada | E | SimNão | |
Fila | Dados da mensagem gravada. [Serão listados os dados da mensgem gravada na fila] | I | Sim | |
Fila | FIM DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA | I | Sim | |
Mapa de integração carregado. | I | Não | ||
Fila | Erro ao carregar mapa de integração | E | Não | |
Fila | Executando mensagem da integração. [Serão listados os dados da integração] | I | Não | |
Fila | Evento CanSaveQueue será executado! | E | Não | |
Fila | Mensagem gravada na fila | I | Sim | |
Fila | Erro ao salvar mensagem na fila | E | Sim | |
Fila | Dados da mensagem gravada. [Serão listados os dados da mensgem gravada na fila] | I | Sim | |
Fila | FIM DO PROCESSO DE SALVAR MENSAGEM DE ENVIO NA FILA | I | Sim | |
Inicializando execução | Execução mensagem | INICIO DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE ENVIO NA FILA! | I | SimExecução |
mensagemInicializando execução | Mensagem recuperada da fila! | I | SimExecução | |
mensagemInicializando execução | Execução da mensagem de forma sincrona! | I | SimExecução | |
mensagemInicializando execução | Execução da mensagem de forma assincrona! | I | SimCarga Informações | |
Validação de execução | Entidade não mapeada | E | NãoCarga Informações | |
Validação de execução | Mapa de integração carregado. | I | NãoCarga Informações | |
Validação de execução | Erro na carga de informações | E | NãoCarga Informações | |
Validação de execução | Evento CanExecuteQueue será executado! | I | Não | |
Preparação de contexto | Coligada não foi encontrada no dataSet enviado pelo produto! | A | Não | |
Preparação de contexto | Filial não foi encontrada no dataSet enviado pelo produto! | A | Não | |
Preparação de contexto | Coligada e filial recuperados | I | Não | |
Preparação de contexto | Início da execução do manipulador (handle) | I | Não | |
Preparação de contexto | Inicio do processo de transformação via xslt! | I | Não' | |
Preparação de contexto | Evento BeforeTransformSend será executado! | I | Não | |
Preparação de contexto | Evento AfterTransformSend será executado! | I | Não | |
Preparação de 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 Validação da resposta | A resposta da execução do WebServices foi bem sucedida! | I | Sim | |
Construção Validação da resposta | Erro ao realizar parser da resposta da mensagem (ResponseMessage): | E | Sim | |
Construção Validação da resposta | Informações retornadas na resposta da mensagem:[Serão listadas as informações retornas de InternalId] | I | Sim | |
Atualização De/Para | Início do processo de salvar De/para! | I | Sim | |
Atualização De/Para | Atributo 'ListOfInternalId' retornado no conteúdo da resposa da mensagem! | I | Sim | |
Atualização De/Para | Informações do De/Para a ser gravado:[Serão listados dados do De/para] | I | Sim | |
Atualização De/Para | Tabela não existente no dataSet original da mensagem: | A | Não | |
Atualização De/Para | De/para não atualizado. Indentificador do internalId não localizado na lista! | A | Não | |
Atualização De/Para | De/Para excluído com sucesso! | I | Sim | |
Atualização De/Para | Exclusão de De/Para não retornou nenhum valor! | A | Sim | |
Atualização De/Para | Não foi possível encontrar valores no de/para para exclusão! | A | Sim | |
Atualização De/Para | Valor do 'internalId' não foi encontrado! | A | Não | |
Atualização De/Para | Campo 'InternalId' não foi encontrado no dataSet de transformação! | A | Não | |
Atualização De/Para | Campos chaves do De/Para não foram informados! | A | Não | |
Atualização De/Para | Não foi encontrada a tabela no dataSet original | A | Não | |
Atualização De/Para | Tabela não encontrada no dataSet original: | A | Não | |
Atualização De/Para | De/para não atualizado. Atributo 'ListOfInternalId' não retornado no conteúdo da resposa da mensagem! | I | Sim | |
Atualização De/Para | Conteúdo da mensagem (ReturnContent) não retornado na resposta da mensagem. De/para não atualizado. | A | Sim | |
Atualização De/Para | Fim do processo de salvar De/para! | I | Sim | |
Atualização De/Para | Erro ao salvar tabela De-Para: | E | SimExecução | |
handle webServicesFinalizando execução | Fim da execução do manipulador (handle) | I | NãoExecução handle webServices | |
Finalizando execução | Evento AfterExecuteHandle será executado! | I | NãoExecução | |
da mensagemFinalizando execução | Mensagem não foi executada. | I | SimExecução da mensagem | |
Finalizando execução | Informações de execução da mensagem [ Serão listados dados de status da execução] | I | SimExecução da mensagem | |
Finalizando execução | FIM DO PROCESSO DE EXECUÇÃO DA MENSAGEM DE ENVIO NA FILA! | I | Sim |
4) - Procedimentos para geração de logs pelos produtos.
a) - Será disponibilizado na classe "HandleServices" (localizado no projeto: RM.Con.TotvsMessage.IServices" uma instância para o objeto "LogServices".
Um objeto dessa classe já está disponível nos extensions e estará disponível nas futuras classes de adapters.
b) - Será disponibilizado no objeto "LogServices" três métodos:
- WriteTraceInformation: responsável pelo envio de mensagens de "informações";
- WriteTraceError: responsável pelo envio de mensagens de "erro";
- WriteTraceWarning: responsável pelo envio de mensagens de "aviso";
Esses métodos recebem como parâmetro os seguintes dados:
- Identificador do monitor : disponível em "this.TotvsMessageContext.Monitor.MonitorId";
- Mensagem de log: texto contendo a mensagem de log;
- Informações de debug: Devem ser enviadas no seguinte formato: "Identificação da inf. de debug", "Valor da informação de debug";
Segue abaixo um exemplo de criação customizada de logs nos adapters / extensions:
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>.
Si |
Dicionário de Dados
HCMONITOR
CAMPO | DESCRIÇÃO | TIPO |
---|---|---|
ID | Identificador do monitor | int |
IDPROCESSO | Identificador do processo | varchar(255) |
RECCREATEDBY | Usuário de criação | varchar(50) |
RECCREATEDON | Data de criação | datetime |
RECMODIFIEDBY | Usuário de alteração | varchar(50) |
RECMODIFIEDON | Data de alteração | datetime |
HCLOGMENSAGEM
CAMPO | DESCRIÇÃO | TIPO |
---|---|---|
UUID | Identificador da mensagem na fila | varchar(255) |
SEQUENCIAL | Sequencial | int |
DATAMENSAGEM | Data de geração da mensagem | datetime |
TIPOLOG | Tipo do Log 0 - Information 1 - Warning 2 - Error | int |
LOCALIZACAO | localização do log na engine do eai | varchar(100) |
INFOLOG | dados do log | text |
INFODEBUG | dados do debugger | text |
RECCREATEDBY | usuário de criação | varchar(50) |
RECCREATEDON | Data de criaçaõ | datetime |
RECMODIFIEDBY | usuário de alteração | varchar(50) |
RECMODIFIEDON | data de alteração | datetime |
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(100255) 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]
LOCALIZACAO VARCHAR(100) NULL, --localização dolog na engine do eai
INFOLOG TEXT NULL,--Informações de Log do monitor
INFODEBUG TEXT NULL, --Informações de debug
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. |
---|