Histórico da Página
DO REQUISITO
Características do Requisito
Linha de Produto: | RM |
Segmento: | Framework |
Módulo: | EAI |
Requisito (ISSUE): | Informe o requisito relacionado (Issue). |
País(es): | BRA |
Definições importantes
- As regras atuais de manipulação das mensagens existentes atualmente no EAI (handle de dataServers, handles de process e handle de WebServices) devem ser escritas pelas equipes dos segmentos.
- A equipe de frame fornecerá funções (API's genéricas) para serem utilizadas pelos adapters.
- As regras atuais de réplica entre coligadas existentes atualmente no EAI serão escritas pelas equipes dos segmentos. A equipe de frame fornecerá API's genéricas para serem utilizadas pelos adapters;
- O EAI não armazenará os xslts (de saída, entrada e retorno) nas tabelas de EAI. A transformação das mensagens de entrada e saída ficará sob a responsabilidades dos adapters. Os adapters dos produtos devem usar usar transformação via xslt.
- Os fontes localizados nos extensions (GSourceCodes) devem ser migrados para estruturas de adapters.
- Informações de contexto (coligada, filial, etc) não serão manipuladas pelo EAI, as mesmas devem ser manipuladas dentro dos adapters.
- O recurso de fórmula visual não deve ser usado para enviar as mensagens para o EAI. O EAI deve ser chamado dentro dos objetos de negócio dos produtos para envio das mensagens;
- Não será permitido o envio de mensagens síncronas para múltiplas rotas, sendo permitido somente mensagens assíncronas.
Modelo de solução: Abaixo será definido o modelo de solução definido para a criação do novo EAI.
Diagrama de Entidade
Solução
DER,
Defininição das novas estruturas de dados.
GEAICONFIG: 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 |
|
|
|
TABELAS DE CONFIGURAÇÃO DA INTEGRAÇÃO
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 |
|
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 |
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 |
TABELAS DE MENSAGENS
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 |
| 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 |
RMSContexto | Contexto 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 GJobX |
ALTERAÇÕES NA TABELA DE DE/PARA (HCINTEGRACAOID)
- 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)