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.                                                             

  

(Obrigatório)

Informações Gerais

 

Especificação

Produto

RM

Módulo: EAI

 

Segmento Executor

 

Projeto1

Framework BH - 004

IRM1

 

Requisito1

FRW_FRW002-160 

Subtarefa1

FRW_FRW002-162

Chamado2

 

País

(X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Objetivo

Efetuar a migração das informações dos dados cadastrados nas tabelas de integração cadastradas no do EAI 1.0 para as novas tabelas do EAI 2.0.

Definições

Esse processo poderá ser executado uma única vez, ou seja, todas as integrações a serem convertidas deverão ser selecionadas nesse momento.

Não será possível converter outras integrações em outros momentos  visto que, após a conversão  o EAI 1.0 não poderá mais ser utilizado.

Modelo de solução

Abaixo será descrito as regras de negócio do conversor.

importantes

  • É importante que um backup da base seja feito  antes da execução desse processo;

Modelo de solução

Abaixo será descrito as regras de negócio do conversor.

1) - Localização 

O assistente de conversor deve ser chamado do caminho abaixo: 

Integração/Mensagem Única/Conversor EAI 2.0

Image Removed

 

Mensagens de conversão

Algumas mensagens aparecerão para o usuário nessa página do assistente.

O usuário deverá selecionar a opção  "Continuar Conversão" para prosseguir com o processo.

Image Removed

 

Integrações disponívels

Todas as integrações, com exceção das integrações inativas,  (cadastradas na tabela HCIntegracao) aparecerão na grid.

O usuário deverá selecionar uma ou várias integrações a serem convertidas para o novo modelo de EAI.

Esse assistente poderá ser executado uma única vez. Portanto, todas as integrações a serem convertidas deverão ser selecionadas nesse momento.

Não será possível converter outras integrações em outros momentos  visto que, não será posível 

 

Image Removed

 

lEAICONFIG (Configurações gerais do EAI)

Coluna

Descrição

Regras

TipoEAI

Tipo do EAI - Define a engine a ser executada no ambiente do cliente.

 

0 ou Null –EAI 1.0

1 – EAI 2.0

ProxyUsr

usuário proxy rede interna

 

ProxyPassword

senha proxy rede interna

 

Timeout

Tempo máximo de envio da mensagem.

Será utilizado o valor default em caso de não preenchimento

ValidaXsd

Habilita/desabilita validação xsd

Permite validar xml no recebimento/envio de mensagens usando o xsd (perda de performance)

0 ou NULL– Não valida

1 - valida

UsaLog

Habilita/desabilita gravação de log do EAI

0 OU NULL – NÃO USA

1 - USA LOG

UsaDebugLog

Habilita/desabilita gravação de informações de objetos de debug

DataSet e outros objetos serializados poderão ser gravados na tabela de log (perda de performance);

0 OU NULL – NÃO USA

1 - Usa

UsaContextoLog

Habilita/desabilita gravação do objeto de contexto do EAI na execução da mensagem

Perda de performance e espaço.

0 OU NULL – NÃO USA

1 - USA

UrlMonitorInterno

Endereço do monitor interno

 

UrlWSDLInterno

Endereço WSDL interno

 

NumTentativasExec

Número de tentativas de execução da mensagem em caso de mensagens assíncronas com erro

Valor maior que 0 informará o número de tentativas de execução.

Valor NULL ou 0 - Será executado uma única vez

IntervaloDeExecucao

Tempo de intervalo de execução (em milissegundos)

Valor NULL ou 0: será executado imediatamente

DesabilitaCustomizacao

Desabilita a execução das extensões de customização

0 ou NULL - Habilitado

1 - Desabilitado

 

 

 

 

GEAIAPP (cadastro de aplicativos)

Coluna

Descrição

Regras

Id (pk)

Identificador do aplicativo

autoinc

Nome

Nome do aplicativo

 

Descricao

Descrição longa do aplicativo

 

AppHost

Define se o app em questão é o app host (app interno)

Só haverá um app interno por instalação

0 – interno

1 - externo

SourceApplication

Informação enviada no protocolo “TotvsMessage” do atributo “MessageInformation/SourceApplication”.

No aplicativo interno, esse valor será o nome da instância do RM (Inicialmente será “RM”). Não será permitido o cadastro de mais de um aplicativo com o mesmo SourceApplication/CodProduto.

 

CodProduto

Nome do produto. Corresponde ao atributo “ProductName” enviado através do protocolo TotvsMessage.

Ex: Protheus, DataSul, Logix, RM.

No aplicativo interno, esse valor terá o nome “RM”.

Em se tratando de recebimento de mensagens, os valores “Sourceapplication” e “CodProduto“ enviados na mensagem definirão o aplicativo correto.

Caso não seja encontrado o aplicativo, a mensagem não será executada, retornando erro.

 

 

 

UrlWSDLExterno

Endereço WSDL do aplicativo externo

 

UsrWSDLExterno

Usuário para conectar na url  WSDL do aplicativo externo

 

PassWSDLExterno

senha para conectar nas url WSDL do aplicativo externo

 

Ativo

Ativo: ativa / desativa  um app

0 ou null – inativo

1 - ativo

RMColigadaNoProtheus

Mapeamento da coligada com o Protheus (em caso de aplicativo Protheus)

Grupo de empresa - 1

Unidade de negócio- 2

Empresa - 3

 

GEAITRANSACAO (cadastro de transação)

Coluna

Descrição

Regras

Id (pk)

Identificador da transação

Ex: COSTCENTER, BANK, CUSTOMERVENDOR, ORDER, etc.

 

Descricao

Descrição da transação

 

ModoSuportado

Modo suportado pela transação, ou seja, são as formas possíveis de uso da mesma

1 [envio_habilitado]: A transação só pode ser usada no aplicativo para enviar mensagens;

2 [recebimento_habilitado]: A transação só pode ser usada no aplicativo para receber mensagens;

3 [ambos_habilitado]: A transação pode ser usada tanto para envio quanto para recebimento;

 

SyncAsyncEnvio

Informa se a transação é síncrona ou assíncrona (em caso de envio)

0 – Sincrona

1 – Assincrona

Default é 0

PermiteRecAsync

Permite recebimento assíncrono em caso de recebimento?

0 – permite

1 – Não permite.

Default é 0

 

GEAITRANSACAOVERSAO: Mapeamento transação / versão

Coluna

Descrição

Regras

IdTransacao (pk) (fk)

Identificador da transação

chave estrangeira para tabela GEAITransacao

Versao (pk)

Versão da transação

 

NomeClasseAdapterCst

Nome da classe (fullName) do adapter de customização (se existir). Se estiver vazio (default) será usado o adapter nativo carregado automaticamente.

 

 

GEAITRANSACAOAPP: Cadastro de rotas (mapeamento entre app/transação/versão)

Coluna

Descrição

Regras

IdApp (pk)(fk)

Identificador do app

Chave estrangeira para tabela GEAIApp

IdTransacao (pk)(fk)

Identificador da transação.

Chave estrangeira para tabela GEAITransacaoVersao

Versao (fk)

Versão da mensagem ativada para o aplicativo em questão

  • Não será permitido cadastrar mais de um app/transação em versões diferentes.
  • Chave estrangeira para tabela GEAITransacaoVersao;
  • Não faz parte da chave primária;
  • Preenchimento obrigatório.

IdSourceCode (fk)

Identificador do código fonte customizado

Chave estrangeira para tabela GSourceCode;

IncluiMensagemOriginal

Indica se na mensagem de resposta de uma transação/versão será adicionado a mensagem original no corpo da mensagem de resposta

0 OU NULL –INCLUI

1 – Não INCLUI

Obs: Esse menu deve ser habilitado para o usuário no sistema de segurança do RM.

Image Added

2) - Opções do assistente de conversão 

a) - Tipo de execução

 

Converter para o EAI 2.0:

Efetuará a migração dos dados do EAI 1.0 para as tabelas do EAI 2.0. 

Porém, o EAI 2.0 ficará travado até a execução desse processo com a opção "Liberar utilização do EAI 2.0".

Durante esse período, tanto o EAI 1.0 quanto o EAI 2.0 ficarão fora de operação.

 

Voltar para o EAI 1.0

 Exclui todas as linhas geradas nas tabelas do EAI 2.0 e volta para o EAI 1.0.

 

Liberar utilização do EAI 2.0

Libera a utilização do EAI 2.0. A partir desse momento todas as mensagens recebidas e enviadas serão processadas pelo EI 2.0.

 

Image Added

b) - Mensagens de conversão

Algumas mensagens aparecerão para o usuário nessa página do assistente.

O usuário deverá selecionar a opção  "Continuar Conversão" para prosseguir com o processo.

Image Added

 

c) - Integrações disponíveis

Todas as integrações, com exceção das integrações inativas,  (cadastradas na tabela HCIntegracao) aparecerão na grid.

O usuário deverá selecionar uma ou várias integrações a serem convertidas para o novo modelo de EAI.

Informações
Opção "Atualiza informação de "Sourceapplication" dos aplicativos chamando a mensage Whois":

      Com essa opção marcada, o processo enviará uma mensagem de Whois para cada endereço de webServices cadastrado nas integrações selecionadas.

      O processo fará uma leitura na resposta dessa mensagem e buscará a informação de "SourceApplication".

      O valor desse atributo será usado para preencher o campo "SourceApplication" da tabela GEAIApp.

Caso essa opção não seja marcada no processo de conversão, o valor para o campo "SOURCEAPPLICATION", disponível no cadastro de aplicativos, deve ser alterado manualmente após a conversão.

Informações

Opção "Importa mensagens assíncronas":

   Com essa opção marcada, todas as mensagens assíncronas, que não foram processadas com sucesso, com menos de 5 (cinco) tentativas de processamento,

   serão migradas para a nova tabela de mensagens;

Informações

Opção "Data Início das mensagens":

Somente as mensagens assíncronas com data de inclusão maior que o informado serão migradas.

 

 

Image Added

 


3) - Mapeamento de informações (EAI 1.0 / 2.0)

 

Aplicativos

Tabela/Coluna EAI 1.0

Tabela/Coluna EAI 2.0

Regras

 GEAIAPP.IDauto incremento
 GEAIAPP.SOURCEAPPLICATION

O valor de SourceApplication será recuperado pela busca do atributo "SourceApplication" da resposta da mensagem de Whois.

A mensagem de whois será enviada para cada endereço de webServices cadastrado nas integrações a serem convertidas.

HCINTEGRACAO.SISTEMAINTEGRADO

GEAIAPP.CODDPRODUTO

 

 GEAIAPP.NOME

Concatenação dos campos HCIntegracao.SISTEMAINTEGRADO + "-" + SOURCEAPPLICATION

O valor de SourceApplication será recuperado pela busca do atributo "SourceApplication" da resposta da mensagem de Whois.

 

 GEAIAPP.DESCRICAO

Concatenação dos campos HCIntegracao.SISTEMAINTEGRADO + "-" + SOURCEAPPLICATION

O valor de SourceApplication será recuperado pela busca do atributo "SourceApplication" da resposta da mensagem de Whois

HCINTEGRACAO.WSURL

GEAIAPP.URLWSDLEXTERNO

 

 

HCINTEGRACAO.WSUSUARIO

GEAIAPP.USRWSDLEXTERNO

 

HCINTEGRACAO.WSSENHA

GEAIAPP.PASSWSDLEXTERNO

 
HCINTEGRACAO.RMCOLIGADAONPROTHEUSGEAIAPP.RMCOLIGADAONPROTHEUS 
Informações

Não poderá existir mais de um aplicativo com o mesmo "SourceApplication" / "CodProduto".

A partir de agora o RM poderá integrar com mais de um aplicativo "Protheus" desde que os mesmos possuem SourceApplications diferentes.

 

Transação 

Tabela/Coluna EAI 1.0

Tabela/Coluna EAI 2.0

Regras

 GEAITRANSACAO.IDAuto incremento

HCTRANSFORMACAO.TRANSACTIONID

GEAITRANSACAO.TRANSACAO

 

 

HCTRANSFORMACAO.DESCRICAO

GEAITRANSACAO.DESCRICAO

 

 

GEAITRANSACAO.MODOSUPORTADO

1 - Envio

HCTRANSFORMACAO.XSLTSAIDA diferente de vazio

HCTRANSFORMACAO.XSLTENTREDA vazio

2 - Recebimento

HCTRANSFORMACAO.XSLTSAIDA vazio

HCTRANSFORMACAO.XSLTENTREDA diferente de vazio

3 - Ambos

HCTRANSFORMACAO.XSLTSAIDA diferente de vazio

HCTRANSFORMACAO.XSLTENTREDA diferente de vazio

 

GEAITRANSACAO.SYNCASYNCENVIO

Será gravado o valor "0 - Sincrono".

No EAI 1.0 RM não deve existir mensagens assincronas, pois o mesmo não foi projetadopara enviar

/receber esse tipo de mensagem. Somente mensagens com características de "falso assíncrono" que será detalhado nesse mesmo documento.

 

GEAITRANSACAO.PERMITERECASYNC

Será gravado o valor "0 - Não permite"

O EAI 1.0 não está preparado para envio/recebimento assíncrono

 GEAITRANSACAO.EXECVIAJOB

Esse campo definirá se as mensagens de envio (nas transações em questão) serão executadas via Job ou imediatamente na chamada do método.

Esse campo foi criado para resolver a situação do "falso assíncrono". Algumas mensagens são enviadas para o EAI 1.0 com o tipo de entrega assíncrono.

Porém, essas mensagens , no momento de execução pelo Job, são enviadas para outro aplicativo com o tipo entrega "sincrono".

Abaixo serão listadas essas transações com esse comportamento:

DEVICEEQUIPMENTAPPOINTMENT

DEVICETASKSAPPOINTMENT

DEVICETRANSPORTCYCLEAPPOINTMENT

LABORDEVICETASKSAPPOINTMENT


 

Transação / Versão

 

 

 

Tabela/Coluna EAI 1.0

Tabela/Coluna EAI 2.0

Regras

HCMAPAINTEGRACAO.VERSAOMENSAGEM

GEAITRANSACAOVERSAO.VERSAO

 

 

HCMAPAINTEGRACAO.ENTIDADE

GEAITRANSACAOVERSAO.IDTRANSACAO

 O campo identificação da transação será buscado da tabela GEAITransacao.

 

 

 

 

Transação / Aplicativo (rotas)

 

Tabela/Coluna EAI 1.0

Tabela/Coluna EAI 2.0

Regras

HCMAPAINTEGRACAO.IDINTEGRACAO

HCINTEGRACAO.SISTEMAINTEGRADO

GEAITRANSACAOAPP.IDAPP

 

O identificador do App será buscado da tabela GEAIApp.

HCMAPAINTEGRACAO.ENTIDADE

GEAITRANSACAOAPP.IDTRANSACAO

 O campo identificação da transação será buscado da tabela GEAITransacao.

HCMAPAINTEGRACAO.VERSAOMENSAGEM

GEAITRANSACAOAPP.IDTRANSACAO

 
 GEAITRANSACAOAPP.IDSOURCECODE

Identificador do código fonte (GSourceCode).

 GEAITRANSACAOAPP.INCLUIMENSAGEMORIGINALSerá gravado o valor 1. Por default, a mensagem original sempre será incluída na mensagem de resposta.
 GEAITRANSACAOAPP.MODOHABILITADOO valor será copiado da transação (GEAITRANSACAO.MODOSUPORTADO)
   
Informações

Não será permitido o mapeamento entre um aplicativo e uma transação em versões diferentes.

Ex: A transação "COSTCENTER" poderá ser mapeada para o aplicativo "Protheus/Enviromment" somente na versão 1.000.

Informações

Os códigos fontes cadastrados na tabela GSourceCode e mapeados na tabela "HCMapaTransacao.Extensions" não serão migrados para tabela GEAITransacaoApp.IdSourceCode.

No EAI 2.0 esse campo será usado exclusivamente para armazenar códigos customizados feitos pelo cliente/customização.

Informações

Ex: Transação mapeada para mais de um um aplicativo:

O RM ao enviar uma mensagem dessa transação, a mesma poderá ser enviada somente em caso assíncrono.

O RM ao receber uma mensagem, os atributos "SourceApplication" e "ProductCode" do xml TotvsMessage serão recuperados e usados para localizar o aplicativo correto.

 

Pacote de instalação

 

Tabela/Coluna EAI 1.0

Tabela/Coluna EAI 2.0

Regras

HCINTEGRACAO.NOMEINTEGRACAO

GEAIPACOTEINSTALADO.NOMEPACOTE

 

 

HCINTEGRACAO.NOMEREDUZIDO

GEAIPACOTEINSTALADO.NOMEREDUZIDO

 

 

GEAIPACOTEINSTALADO.ID

Novo Guid

HCINTEGRACAO.SISTEMAINTEGRADO

GEAIPACOTEINSTALADO.APPID

O valor do campo "SistemaIntegrado" será usado para buscar o AppId da tabela GEAIApp.

 

 

 

 

4) - Atualização das informações de DE/PARA

  • A chave primária da tabela "HCINTEGRACAOID" foi removida;
  • Foi criada nessa tabela a coluna "APPID" para armazenar o identificador do aplicativo responsável pela inclusão/atualização do De/Para;
    • Ex: O centro de custo do RM 001, no protheus/Produção  possuirá o externalId 1|001 e no Protheus/Homologação o externalId 0007.
  • A coluna "SistemaIntegrado" dessa tabela  não será mais usada. A mesma não será removida para questões de histórico.
  • A coluna AppId será atualizada de acordo com o campo "SistemaIntegrado". 

5) - Migração das mensagens assíncronas

  • Todas as mensagens assíncronas, que não possuem execução com sucesso e com menso de 5 tentativas de execução serão migradas para a nova tabela de mensagens;
  • Para cada uma dessas mensagens migradas, será criado um job responsável em executar essa mensagem em questão;
  • Mensagens de envio "assíncronas" serão tratadas como "falso assíncrono"
    Essas serão processas pelo Job  (da mesma forma que uma mensagem assíncrona) porém serão enviadas para o aplicativo destino como uma mensagem síncrona;
  • Sentença de seleção das mensagens:

    Bloco de código
    select HCFILAMENSAGEM.UUID, HCFILAMENSAGEM.TIPOENTREGA, HCFILAMENSAGEM.NOMEPRODUTO, 
                                                    HCFILAMENSAGEM.ENTRADASAIDA, HCFILAMENSAGEM.EVENTOMENSAGEM, HCFILAMENSAGEM.TIPOMENSAGEM, 
                                                    HCFILAMENSAGEM.TRANSACTIONID, HCFILAMENSAGEM.STATUSPROCESSAMENTO,HCFILAMENSAGEM.VERSAOMENSAGEM, 
                                                    HCFILAMENSAGEM.DATAINCLUSAO, HCFILAMENSAGEM.MENSAGEMORIGINAL, HCFILAMENSAGEM.IDINTEGRACAO, 
                                                    HCFILAMENSAGEM.CODCOLIGADA, HCFILAMENSAGEM.CODFILIAL, HCFILAMENSAGEM.CODUSUARIO, 
                                                    HCINTEGRACAO.SISTEMAINTEGRADO
                                             from HCFILAMENSAGEM (nolock)
                                              INNER JOIN HCINTEGRACAO (NOLOCK)
                                                ON (HCFILAMENSAGEM.IDINTEGRACAO = HCINTEGRACAO.IDINTEGRACAO)
                                             where UUID not in (select HCFILAEXECUCAO.UUID
                                                                from HCFILAEXECUCAO (nolock)
                                                                where HCFILAMENSAGEM.UUID = HCFILAEXECUCAO.UUID                  
                                                                and STATUSEXECUCAO = 1)
                                             and  ((select count(HCFILAEXECUCAO.UUID)
                                                    from HCFILAEXECUCAO (nolock)
                                                     where HCFILAMENSAGEM.UUID = HCFILAEXECUCAO.UUID) <= 5)
                                             and TIPOENTREGA = 1
                                             and  HCINTEGRACAO.SISTEMAINTEGRADO = :sistemaintegrado
                                             and  HCFILAMENSAGEM.DATAINCLUSAO >= :datainicio
                                             and HCFILAMENSAGEM.STATUSPROCESSAMENTO = 0
                                             ORDER BY HCFILAMENSAGEM.DATAINCLUSAO

ModoHabilitado

Modo habilitado da transação, ou seja, o que de fato está habilitado no momento.

1 [envio_habilitado]: A transação só pode ser usada no aplicativo para enviar mensagens;

2 [recebimento_habilitado]: A transação só pode ser usada no aplicativo para receber mensagens;

3 [ambos_habilitados]: A transação pode ser usada tanto para envio quanto para recebimento ;

4 [Não_habilitado]: a transação não está habilitada para essa versão de mensagem no app em questão;

 

GEAIPACOTEINSTALADO: pacotes instalados

Coluna

Descrição

Regras

IdPacote (pk)

identificador do pacote instalado

Número do Guid incluído nos arquivos de configuração de  integração (json)

NomePacote

nome do pacote instalado

 

NomeReduzido

Nome reduzido do pacote instalado

 

AppId (fk)

Identificador do aplicativo instalado

Chave estrangeira para tabela GEAIAPP

 

GEAIGRUPOMENSAGEM: Agrupador de mensagens

Coluna

Descrição

Id (pk)

identificador único do grupo

autoinc

Grupo

Identificador do grupo de mensagens. Deve ser enviado um guid que representará um grupo de mensagens

NomeGrupo

Nome do grupo. Ex: Pedido de compra

InfoGrupo

Informações complementares do grupo

 

 

 

GEAIMENSAGEM: representará uma mensagem (business, response ou receipt). Cada mensagem recebida, enviada ou respondida será uma nova linha nessa tabela.

Coluna

Descrição

Id (pk)

identificador da mensagem (gautoinc)

UUID

Armazenará o UUID da mensagem.

Exemplo:

a)        Ao receber uma mensagem do Protheus, será gravado nesse campo o UUID gerado lá no sistema do Protheus (TotvsMessage.MessageInformation.UUID)

b)        Ao enviar uma mensagem, será gravado nesse campo o UUID (GUID) gerado para a mensagem de envio.

TipoEntrega

Tipo de entrega (Assíncrono e síncrono).

0 – Sync

1 - Async

EntradaSaida

Tipo de entrada/saída (envio ou recebimento).

Evento

Tipo do evento de mensagem.

BusinessEvent

Request

Tipo

Tipo da mensagem

0 – BusinessMessage

1 – ResponseMessage

2 - ReceiptMessage

TransactionId (fk)

Identificador da transação. Chave estrangeira para tabela GEAITRANSACAO

Versao

Versão da mensagem

XMLOriginal

XML contendo a mensagem original.

Se for uma mensagem de recebimento, será o TotvsMessage enviado.

Se for uma mensagem de envio, será o dataSet de origem serializados.

IdGrupo

Identificador do grupo de mensagem mensagem (chave estrangeira para tabela GEAIGrupoMensagem).

IdMensagemPai

Armazenará o identificador (Id) da mensagem pai.

Ex:

1)        Quando o RM enviar uma mensagem de forma assíncrona, imediatamente será retornada uma mensagem de recibo (receiptMessage). Essa será gravada em uma nova linha nessa tabela. Nessa nova linha, no campo “IdMensagemRelac” será gravado o Id da mensagem origem.

2)        O destino ao enviar a resposta (responseMessage) da mensagem para o RM, essa será gravada em uma nova linha. Será gravado nessa linha o id da mensagem pai.

RMSContexto

Armazena o objeto RMSContext

 

GEAIROTAMENSAGEM: Rotas geradas para execução das mensagens

Coluna

Descrição

Id (pk)

Identificador da rota/mensagem (gautoinc)

IdMensagem (fk)

identificador da mensagem

Chave estrangeira para tabela GEAIMensagem

IdApp (fk)

Armazenará o aplicativo da mensagem.

Se o RM estiver recebendo uma mensagem, o IdApp será do aplicativo externo (quem enviou a mensagem);

Se o RM estiver enviando uma mensagem, o IdApp será do aplicativo de destino da mensagem

Chave estrangeira para tabela GEAIApp

EstadoMensagem

Estado da mensagem:

0: Received (recebida)

1: Recognized (reconhecida)

2: Validated (validada)

3: Delivering (entregaando)

4: Processing (processando)

5: Delivered (entregue)

6: Processed (processada com sucesso)

7: Refused (negada)

8: Malformed (mal formatada)

9: NotDelivered (não entregue)

10: BusinessError (erro de negócio)

GEAIROTALOGMENSAGEM: Log gerado pela execução da rota da mensagem

Coluna

Descrição

Id (pk)

Identificador do log (gautoinc)

IdRotaMensagem (fk)

Identificador da rota/mensagem.

Chave estranheira para GEAIRotaMensagem

TipoLog

0 - Info

1   - Warning

1          Error

InfoLog

Texto contendo informações do log

InfoDebugVar

Informações de debug de variaveis

InfoDebugObj

Informações de debug de objetos.

 

 

GEAIEXECROTAMENS: Informações de execução da rota da mensagem. 

Coluna

Descrição

Id (pk)

Identificador da execução (gautoinc)

IdRotaMensagem

Identificador da rota/mensagem.

Chave estrangeira para tabela GEAIRotaMensagem

XmlMensTransformada

XML contendo a mensagem transformada

MensagemExecucao

Mensagem da execução

CodigoExecucao

Código da execução

EAIContext

Armazenará o objeto EAIContext serializado através do “DataContractSerialization”. Todas as informações de contexto de execução da mensagem naquele momento serão gravadas nesse campo.

Essa gravação ocorrerá somente se o parâmetro GEAIParams.UsaContextoLog = true) estiver setado.

DeParaInfo

Informações de de/para

RMSContextoContexto RM usado para a execução da mensagem

 

GEAIJOBMENSAGEM: Mapeamento entre job / mensagem (usada somente para mensagens assíncronas)

Coluna

Descrição

IdMensagem (pk)

identificador da mensagem

Chave estranheira para tabela GEAIMensagem

IdJob (pk)

Identificador do Job gerado para processar a mensagem assíncrona.

Não possui chave estranheira com a tabela GJob

HCINTEGRACAOID (alterações na tabela de DE DE/PARA)

 

  • Essa será a única tabela compartilhada entre os dois EAI’s, ou seja, não será criada uma nova tabela para armazenar valores de “de/para” do eai 2.0.
  • Atualmente não é armazenado nessa tabela o “sourceApplication” correspondente ao mapeamento da chave. Sendo assim, caso RM integre com dois sistemas Protheus (dois sourceApplications diferentes para o mesmo sistema), o RM não saberá de qual sourceApplication aquele mapeamento corresponderá.
  • Atualmente esse erro não ocorreu nos nossos clientes porque até o momento não existe nenhuma implantação na qual o RM integre com dois sourceAppliaction diferentes para o mesmo sistema.
  • Para resolver a situação acima, será criada uma nova coluna nessa tabela chamada “AppID” (não será criada chave estrangeira para tabela GEAIApp). 
  • Será armazenado nessa coluna o identificador do aplicativo externo correspondente a integração.
  • A coluna “SistemaIntegrado” não será usada pelo EAI 2.0 (ela não será removida da tabela para compatibilizar com o EAI 1.0).
  • No processo de conversão para o novo EAI, será criado um script para preencher esse campo com o AppId correspondente ao “SistemaIntegrado”.
  • Será removida dessa tabela sua chave primária (pkhcintegracaoid). Essa tabela não possuirá chave primária;
  • A coluna "SISTEMAINTEGRADO" passa a aceitar valores nulos;
  • Serão criados nessa tabela dois índices não únicos, entre eles:
    • IX_HCINTE_APPID (TABELARM, IDNOMERM, IDVALORRM, APPID)
    • IX_HCINTE_SISTINTEG (TABELARM, IDNOMERM, IDVALORRM, SISTEMAINTEGRADO)

 

2 - Detalhamento dos processos

RM RECEBE MENSAGENS SÍNCRONAS

1) Serviço de recebimento de mensagens do EAI RM é chamado

Grava mensagem nas tabelas GEAIMensagem e GEAIRotaMensagem

2) Serviço de execução de mensagens é chamado

Grava informações na tabela de execução GEAIExecMens;

  1. SUCESSO?

                   i.      [ESTADO: Processed];

                    ii.      COMMIT;

                    iii.      Grava mensagem de resposta de sucesso (nova linha nas tabelas “GEAIMensagem” e “GEAIRotaMensagem”)

[ESTADO RESPOSTA: Delivered]

 

 

Caso o destino não receba a mensagem de resposta (timeout), ele não será capaz de atualizar os de/paras.

Sendo assim, um RollBabck será realizado no aplicativo externo e um commit será realizado no RM.

No RM a mensagem original foi marcada como “Processed”.

E no aplicativo externo a mensagem será marcada “BusinessError”.

Essa situação deve ser apontada na ferramenta de diagnóstico.

 

    2. ERRO?

                  i.      [ESTADO: BusinessError];

                   ii.      ROLLBACK;

                   iii.      Grava mensagem de resposta de erro;

[ESTADO RESPOSTA: Delivered];

 

Caso o aplicativo externo não receba a mensagem de resposta ou receba com erro, ele não será capaz de atualizar os De/Paras.

Nesse caso, um RollBabck será realizado em ambos os lados;

Nesse caso, não apresentará inconsistências;

                                   

 

Definição dos estados da mensagem:

BusinessMessage

Post da mensagem

Inclusão da mensagem

Received

EAI da RM recebe a mensagem.

 

Validação

Validated/Refused

EAI do RM valida mensagem.

Verifica correto preenchimento das tabelas de integração.

Execução da mensagem 

Validação

Validated/Refused

 

 

Envio da mensagem ao adapter para processamento

Processing

Nesse momento os adapters serão chamados para gravação dos dados no RM.

Execução da mensagem nos adapters

Processed/BusinessError

Os dados da mensagem serão processados pelos objetos de negócio do RM

ResponseMessage

Retorna mensagem de resposta

Delivered

 

 

RM ENVIA MENSAGENS SÍNCRONAS

1)        Serviço de recebimento de mensagens do EAI RM é chamado

VALIDAÇÃO: Verifica se existe mais de uma rota para envio da mensagem. Caso positivo, o EAI apresentará uma mensagem de erro não aceitando a mensagem.

2)    Serviço de execução de mensagens é disparado;

  1. Serviço de envio de mensagens é executado;

    i.  Sucesso no envio da mensagem?

Sucesso no retorno da mensagem?

a) [ESTADO: Delivered];

b) Grava De/Para;

c) COMMIT;

d) Grava mensagem de resposta contendo sucesso;

[ESTADO reposta: processed]

Erro no retorno da mensagem?

a) [ESTADO: Delivered]

b) Não grava informações de De/Para;

c) Grava mensagem de resposta contendo erro;

d) [ESTADO: BusinessError];

f) ROLLBACK;                                   

ii. Erro no envio da mensagem (ex: timeout)?

a) [ESTADO: NotDelivered];

b) Não Grava informações de De/ParaGrava mensagem de resposta;

c) Não existe resposta;

d) ROLLBACK;

 

 

 

Se por algum motivo (timeout no lado Rm) o aplicativo destino recebeu a mensagem,

nesse caso, a informação poderá ter sido gravada em seus de/paras;

Na origem o processo efetuou rollback.

Essa situação será apontada na ferramenta de diagnóstico.

 

 

 

 

 

BusinessMessage

Post da mensagem

Inclusão da mensagem

Received

EAI da RM recebe a mensagem de envio.

Validação

Validated/Refused

Verifica correto preenchimento das tabelas de integração.

Execução da mensagem

Validação

Validated/Refused

 

Envio da mensagem para o aplicativo externo

Processing

Nesse momento a mensagem é enviada para o aplicativo externo

Sucesso/Erro no envio da mensagem para o aplicativo externo

Delivered/NotDelivered

A mensagem foi enviada com sucesso para o aplicativo externo.

Erro no envio da mensagem.

ResponseMessage

 

Mensagem de resposta foi retornada com sucesso

Processed

 

Mensagem de resposta foi retornada com erro

BusinessError

 

3 - Interfaces de customização

ICUSTOMADAPTERDATASERVER - Interface de adapter de dataServer

Fase EAI 1.0

Interface EAI 1.0

Método EAI 1.0

Fase EAI 2.0

Interface EAI 2.0

Método EAI 2.0

Antes de transformar o xml recebido para o xml gerado

IExtensionTransformReceive

BeforeTransformReceive

Usada para transformar  o businessContent Original antes de solicitar a transformação pelos  adapters

ICustomAdapterDataServer

AntesTransformarDataServer

Depois de transformar o xml recebido para o xml gerado após xslt

IExtensionTransformReceive

AfterTransformReceive

Usada para realizar alguma alteração no xml transformado após a transformação pelos adapters.

ICustomAdapterDataServer

DepoisTransformarDataServer

Antes de executar os manipuladores de recebimento e envio

IExtensionMessage

BeforeExecuteHandle

Usada para alterar o dataSet transformado antes de enviar o dataSet para o DataServer.

obs: Esse método é chamado uma única vez independente da quantidade de dataServers a serem executados pelo adapter para a transação em questão.

ICustomAdapterDataServer

AntesExecutarDataServer

Depois de executar os manipuladores de recebimento e envio

IExtensionMessage

AfterExecuteHandle

Usado para efetuar a leitura nos dataSets enviados aos dataServers executados pelos adapters.

Esse método é chamado uma única vez independente da quantidade de dataServers a serem executados pelo adapter para a transação em questão.

ICustomAdapterDataServer

DepoisExecutarDataServer

Depois de criar a resposta para as mensagens recebidas

IExtensionResponse

CreateResponse

Depois de ciar a tag de returnContent para as respostas de dataServer.

ICustomAdapterDataServer

DepoisGerarReturnContentRespostaDataServer

 

ICUSTOMADAPTERPROCESS- Interface de adapter de process

 

Fase EAI 1.0

Interface EAI 1.0

Método EAI 1.0

Fase EAI 2.0

Interface EAI 2.0

Método EAI 2.0

Antes de transformar receive

IExtensionTransformReceive

BeforeTransformReceive

Antes de gerar a classe paramsProc

ICustomAdapterProcess

AntesTransformarProcesso

 

Nova

 

Deposi de gerar o paramsProc

ICustomAdapterProcess

DepoisTransformarProcesso

Antes de executar um processo RMSProcess

IExtenisonProcess

BeforeExecute

Antes de enviar para o método execute do process

ICustomAdapterProcess

BeforeExecuteProcess

Depois de executar um processo RMSprocess

IExtenisonProcess

AfterExecute

Depois da execução

ICustomAdapterProcess

AfterExecuteProcess

Depois de criar a resposta para as mensagens recebidas

IExtensionResponse

CreateResponse

Depois de ciar a tag de returnContent para as respostas de process.

ICustomAdapterProcess

DepoisGerarReturnContentRespostaProcess

 

ICUSTOMADAPTERWEBSERVICES- Interface de Webservices

Fase EAI 1.0

Interface EAI 1.0

Método EAI 1.0

Fase EAI 2.0

Interface EAI 2.0

Método EAI 2.0

Antes de transformar

IExtensionWebService

BeforeTransformSend

Antes de transformar

ICustomAdapterWebServices

AntesTransformarWebServices

Depois de transformar

IExtensionWebService

AfterTransformSend

Depois de transformar

ICustomAdapterWebServices

DepoisTransformarWebServices

Antes de executar o handle

IExtensionMessage

BeforeExecuteHandle

Antes de enviar o totvsMessage para o ws

ICustomAdapterWebServices

AntesExecutarWebServices

Depois de enviar o totvsmessage para o webServices

IExtensionWebService

AfterSendWebServices

 Depois de enviar o totvsMessage para o ws

ICustomAdapterWebServices

DepoisExecutarWebServices

Interfaces descontinuadas

 

Interface

Método

Comentários

IExtensionDataServer

AfterTransformDataSet

 

Deve-se utilizar a interface ICustomAdapterDataServer BeforeExecuteDataServer.

IExtensionDataServer

BeforeSave

A manipulação dos dataServers a partir de agora ficará sob responsabilidade dos adapters dos produtos.

Sendo assim, caso exista necessidade, essa interface de customização deverá ser criada dentro do adapter do produto e chamado dentro do próprio método do adapter do produto..

Na interface antiga, esse método é executado dentro de um foreach para cada nome de Dataserver.

IExtensionDataServer

AfterSave

A manipulação dos dataServers a partir de agora ficará sob responsabilidade dos adapters dos produtos.

Sendo assim, caso exista necessidade, essa interface de customização deverá ser criada dentro do adapter do produto e chamado dentro do próprio método do adapter do produto..

Na interface antiga, esse método é executado dentro de um foreach para cada nome de Dataserver.

IExtensionModule

BeforeExecuteMethodParams

Será removida pois não é utilizada

IExtensionModule

AfterExecuteMethod

Será removida pois não éutilizada

 

4 - Adapters

Image Removed

 

Classe

Descrição

AdapterBase

Classe ancestral usada para definir regras comuns para todos os adapters.

AdapterReceiveBase

Classe ancestral usada para definir regras comuns para todos os adapters de recebimento de mensagens

AdapterSendBaseClasse ancestral usada para definir regras comnus para todos os adpaters de envio de mensagens

Image Removed

 

Classe

Descrição

AdapterDataServerBase

Classe ancestral usada para definir comportamentos de manipulação de mensagens usando estruturas de dataServers

AdapterProcessBase

Classe ancestral usada para definir comportamentos de manipulação de mensagens usando estruturas de RMProcess

Image Removed

 

Classe

Descrição

AdapterWebServiceBase

Classe ancestral usada para definir comportamentos de manipulação de mensagens a serem enviadas por webServices

 

Exemplo: Regra de recebimento da mensagem de recebimento CostCenter

1) -Adicionar referencia para as dlls abaixo:

RM.Eai.TotvsMessage.Intf, RM.Eai.TotvsMessage.IService, RM.Eai.TotvsMessage.Lib, Rm.Eai.TotvsMessage.Adapter

2) - Criar a classe com a seguinte característica:

a) Nome da classe: CostCenter_Receive_2000

b) Herdar da classe "AdapterDataServerBase"

 Ex: public class CostCenter_Receive_2000: AdapterDataServerBase

c) Usar o atributo de classe "AdapterAttr": esse atributo irá "carimbar" a classe com informações do adapter. 

Ex: [AdapterAttr("COSTCENTER", "1.000")] 
      public class CostCenter_Receive_2000: AdapterDataServerBase

 

1) -Adicionar referencia para as dlls abaixo:

RM.Eai.TotvsMessage.Intf, RM.Eai.TotvsMessage.IService, RM.Eai.TotvsMessage.Lib, Rm.Eai.TotvsMessage.Adapter

2) - Criar a classe com a seguinte característica:

a) Nome da classe: CostCenter_Send_2000

b) Herdar da classe "AdapterWebServicesBase"

 Ex: public class CostCenter_Send_2000: AdapterWebServicesBase

c) Usar o atributo de classe "AdapterAttr": esse atributo irá "carimbar" a classe com informações do adapter. 

Ex: [AdapterAttr("COSTCENTER", "1.000")] 
      public class CostCenter_Send_2000: AdapterWebservicesBase

Exemplo: Regra de envio da mensagem CostCenter

 

 

 

 

 

 

5 - API

API de manipulação por dataServer

 

Nome Serviço

Descrição

CreateDataServer

Criar um instancia do DataServer

Readrecord

Executa o método ReadRecord do Dataserver

SaveRecord

Salva um dataSet no dataServer;

GetDeParaItem

Retorna um objeto "EAIMsgDeParaItem" referente a um item de depara

GetPKValues

Recupera valores de chave primária data row passada como parametro

GetPKValuesByDePara

Recupera valores de chave primária baseado na tela de de/para

CopyDataRow

Copia valores da linha de origem para tabela de destino

UpdateRowValue

Atualiza valores da linha corrente

GetReplaceCompanyIdBranchId

Troca a coligada e filial de todo o xml

API de manipulação da tabela de DE/PARA

 

Nome Serviço

Descrição

GetChaveRM

Retorna um valor da chave primária

ExistsDePara

Verifica a existencia de um de/para

SaveDePara

Salva valores na tabela de de/para

API de manipulação de processos

 

Nome Serviço

Descrição

Execute

Executa um rmsprocess

ExecuteWithParams

Executa um rmsProcess com parametros. Passan do um xmlDeParametros

ExecuteWithParams

Executa um rmsProcess com parametros passando umparamsProc.

  

API de manipulação de webServices

Nome Serviço

Descrição

SendWebServices

Envia o xml TotvsMessage para o destino via webServices

GetDeParaByListOfInternalId

Retrona uma lista de informações de de/para localizadas no xml de responseMessage

RemoveRMEntityName

Remove a coluna "'EntityName" criada no dataSet

PrepareInternalFieldsAdiciona campos de InternalId nas tabelas do dataSet