Versões comparadas

Chave

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

Características do Requisito

Linha de Produto:

RM

Segmento:

Framework

Módulo:

EAI

  

Descrição

Essa melhoria no EAI foi criada com o intuito de viabilizar a transferência dos códigos fontes (extensions) das integrações atuais (localizados na tabela GsourceCode) para projetos (class Librarys) a serem localizados nas solutions dos produtos RM.

Com essa mudança, esses fontes passarão a ser controlados pelo TFS, possibilitando com isso ganhos de segurança, histórico, controle de concorrência, etc.

Escopo da funcionalidade


1) - Modelo atual

Atualmente o analista responsável pelo desenvolvimento da integração pode usar diversos "entry Points" disparados durante o processamento da mensagem. 

Esses gatilhos possibilitam diversas formas de implementação de customizações.

Códigos C# (.NET) são criados seguindo um modelo padrão, e armazenados em uma tabela de banco chamada GSourceCode.

Através das telas do EAI de "cadastro de transformação" e "mapeamento" esses códigos podem ser "vinculados" a esses "entry Points".

Informações

Esse mecanismo continuará existindo pois integrações totalmente customizadas devem ainda utilizar esse modelo.

Informações

Códigos fontes localizados na tabela "GSourceCode" terão preferência de execução sobre os fontes localizados nos projeto.

 

2) - Localização atual dos códigos fontes

Atualmente, os códigos fontes das integrações estão localizados no projeto "RM.Con.ConfiguraIntegracao.TotvsMessage" da solution "Con-EAI" da framework.

Nas pastas "Oracle" e "SQL" (localizadas nesse projeto) foram criados arquivos contendo scripts para inclusão desse códigos na tabela "GSourceCode".

Esses scripts são executados automaticamente durante o processo de configuração da integração.

 

2) - Transferência dos fontes

Todos os scripts que incluem dados na tabela "GSourceCode" devem ser retirados desses arquivos e transferidos para os projetos nas solutions dos produtos.

Em versões futuras, esses arquivos serão removidos dessa solution.

Informações

Atualmente esses códigos fontes estão duplicado em arquivos diferentes (Oracle e sql).

Com essa mudança, existirá uma única classe no projeto. Evitando assim, diferenças nesses códigos entre bancos diferentes.

Informações

Os identificadores dos fontes presentes nas tabelas HcTransformacao" e "HcMapaIntegracao" devem ser excluídos dos respectivos campos "IDSRCCUSTOMHANDLE" e "EXTENSION".

ex: a) - UPDATE hctransformacao  SET IDSRCCUSTOMHANDLE = ' ' where TRANSACTIONID = 'COSTCENTER'

b) UPDATE hcmapaintegracao  SET EXTENSION = ' ' where ENTIDADE = 'COSTCENTER'

 

3) - Criação dos projetos

As equipes dos produtos deverão criar projetos nas suas solutions contendo classes a serem executadas automaticamente durante o processamento da mensagem.

Passo a passo para criação desses projetos:

a) - No visual Studio, abra a solution correspondente a seu segmento. ex. Financeiro.sln.

b) - Crie um novo projeto na solution do tipo "Class Library";

c) - No arquivo AssemblyInfo.cs, utilize o atributo conforme exemplo: [assembly: AssemblyLayerSide(LayerSideKind.Server)];   

d) - Adicione referências para as dll's  "RM.Con.TotvsMessage.Extension", "RM.Con.TotvsMessage.IServices", "RM.Con.TotvsMessage.Services";

e) - O projeto recém criado deverá seguir o seguinte padrão de nomenclatura:

       RM.{Segmento}.TotvsMessage.Adapter.dll,        onde:  Segmento = Sigla do segmento
               ex:  RM.Fin.TotvsMessage.Adapter.dll.     

Informações

Esse padrão de nomenclatura deve ser seguido corretamente. Caso contrário, a dll não será carregada pelo EAI durante o processamento da mensagem. Consequentemente os fontes da integração não serão executados.

 

4) - Criação das classes

Os códigos localizados na tabela GSourceCode deverão ser transferidos para classes localizadas no projeto recém criado. A criação dessas classes deverá seguir um modelo conforme abaixo:

Códigos que estendem as rotinas de processamento (Extensão de códigos):

       a) - Criar uma classe com um nome qualquer (o ideal seria colocar o nome da mensagem seguido pela versão da mensagem);

               ex: public class CostCenter_1_000 : ....

       b) -  Herdar da classe "ExtensionBase" e implementar as interfaces "IExtensionDataServer, IExtensionTransformReceive, IExtensionWebServices, IExtensionProcess, IExtensionModule, IExtensionMessage"

          ex: public class CostCenter_1_000: ExtensionBase, IExtensionDataServer, IExtensionTransformReceive, IExtensionWebServices, IExtensionProcess, IExtensionModule, IExtensionMessage

        c) - Usar o atributo de classe "AdapterAttr":

          ex: 

               [AdapterAttr(TransactionType.ttMensageriaUnica, "COSTCENTER", "2.000")] 
               public class CostCenter_1_000: ExtensionBase, IExtensionDataServer, IExtensionTransformReceive, IExtensionWebServices, IExtensionProcess, IExtensionModule, IExtensionMessage

        d) - Após a criação dessa classe, basta copiar e colar o código fonte (c#) localizado nos scripts, conforme fig abaixo:

    

 

Informações

Não esqueça de excluir os fontes anteriores localizados nos arquivos de script.

 

Códigos que criam manipuladores de recebimento customizados (Handles customizados):

   a) - Criar uma classe com um nome qualquer (o ideal seria colocar o nome da classe com o mesmo nome da mensagem);

               ex: public class FinancingTranding_1_000: ....

       b) -  Herdar da classe "ReceiveMessageHandle"

          ex: public class FinancingTranding_1_000: ReceiveMessageHandle

        c) - Usar o atributo de classe "AdapterAttr":

          ex: 

               [AdapterAttr(TransactionType.ttMensageriaUnica, "FinancingTranding", "1.000")] 
               public class FinancingTranding_1_000 : ReceiveMessageHandle

        d) - Após a criação dessa classe, basta copiar e colar o código fonte (c#) localizado nos scripts, conforme fig abaixo: