Páginas filhas
  • Desenvolvimento de Pacote EAI 2 - Plataforma RM

Versões comparadas

Chave

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

Definições importantes

  • As regras atuais de manipulação de adapters devem ser escritas e mantidos pelas equipes responsáveis pela entidade no RM
  • O projeto Eai TotvsMessage deve fornecer API's genéricas utilizadas para o desenvolvimento
  • Não devem ser criados códigos com condicionais dentro do configurador conforme pacotes de integrações.

Objetivo

O configurador RM deve fornece recursos genéricos que se utilizam das informações definidas nos adapters

...

ou pacotes para a automatização da configuração das integrações bem como do diagnostico de ambiente, configurações e parâmetros.

Definições:

1) Pacotes de integrações:

Pacote de integração é um conjunto de configurações, parâmetros e adapters que são necessários para a integração de determinado

...

módulos do RM com outros sistemas. Exemplos de Pacotes: TOP x Protheus, TIN x Protheus, Folha de Pagamento x Protheus e etc.

1.1 Desenvolvimento de Pacote de Integração:

As equipes dos produtos deverão criar projetos nas suas solutions suas soluções contendo classes a serem utilizadas no processamento do configurador e diagnostico.

1.1.1 Criação dos projetos:

Os projetos a serem criados

...

 

...

deverão seguir o seguinte padrão de nomenclatura:

RM.{Segmento}.TotvsMessage.Adapter.dll,        Onde:  Segmento = Sigla do segmento
               Exemplo:  RM.Prj.TotvsMessage.Configurator.Server.dll

Criação da classe:

a) - Extensão de códigos:

       -  Herdar da classe: EaiPacoteConfiguratorBase

        - Uso do atributo:  ConfiguratorPacoteAttribute

Image Modified

EXEMPLO:

Bloco de código
languagec#
themeRDark
titleExemplo
collapsetrue
$/RM/Atual/Release/Prj-Projetos/RM.Prj.TotvsMessage.Configurator.Server


  [ConfiguratorPacoteAttribute(typeof(Properties.Resources),    "d3593c4e-1a4c-58fb-b9c8-feaf13c2fa8b", nameof(Properties.Resources.sPrjCaptionPacoteEAI2sPrjCaptionPacoteMntEAI2))]
  public class PrjPacoteConfiguratorEai : EaiPacoteConfiguratorBasePrjTopMntProtheusPacoteConfiguratorEai : EaiPacoteConfiguratorBase
  {
    /// <summary>
    /// Configurador de Integrações EAI.
    /// </summary>
    public PrjTopMntProtheusPacoteConfiguratorEai(){}

    /// <summary>
    /// Retorna lista de configurador do EAI 2.0 utilizados pelo pacote.
    /// </summary>
    /// <returns></returns>
    public override EAIConfigurationProductResult ConfigurationsProduct()
    {
      return new EAIConfigurationProductResult();
    }

    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    public override EAIPackage GetEAIPackage()
    {
      return new EAIPackage()
      {
        integrationId = "1129d688-d724-5afb-9f55-c9f8ce498d57", 
        name = Properties.Resources.sPrjCaptionPacoteMntEAI2,
        description = Properties.Resources.sPrjTitleConfigEAI2MNT,
        documentationUrl = "https://tdn.totvs.com/x/AYMOFQ",
        Adapters = getTransactions()
      };
    }

    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    private List<EAIPackageAdapter> getTransactions()
    {
      List<EAIPackageAdapter> result = new List<EAIPackageAdapter>()
          { new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.Equipment,
                          Version = "1.002", Mode = EnabledModeEnum.emReceive },
            new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.Activity,
                          Version = "1.000", Mode = EnabledModeEnum.emReceive },
            new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.Appointment,
                          Version = "1.000", Mode = EnabledModeEnum.emSend },
            new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.AssetMonthlyDirectCosts,
                          Version = "1.000", Mode = EnabledModeEnum.emReceive },
            new EAIPackageAdapter() { AdapterId=EaiAdapterTypeEnum.AssetMonthlyUnDirectCosts,
                          Version = "1.000", Mode = EnabledModeEnum.emReceive }
          };

      return result;
    }


    /// <summary>
    /// Defiição de parâmetros de pacote.
    /// </summary>
    /// <returns></returns>
    public override EAIPacoteApiParamsResult GetParamsPacote()
    {
      EAIPacoteApiParamsResult result = new EAIPacoteApiParamsResult();
      List<EAIConfigSchemaEntity> configSchema = new List<EAIConfigSchemaEntity>();
      result.paramsList = configSchema;

      return result;
    }

    /// <summary>
    /// Serviços necessários para integração Siga MNT
    /// </summary>
    /// <returns></returns>
    public override EAIPacoteApiServicesRequiredResult GetApiServicesRequired()
    {
      return new EAIPacoteApiServicesRequiredResult()
      {
        Services = new List<EAIPacoteApiServiceRequired>()
            { new EAIPacoteApiServiceRequired() { Name = "WSINTRMMNT.apw?WSDL", Type = CanalComunicacaoEnum.teSOAP  } }
      };
    }
  }


2) Diagnostico de Conexão

Nesta etapa o configurador realizara a validação das informações de Servidor Portas bem como da disponibilidade de serviços necessários para a integração, como por exemplo EAIService que é um Web Service básico para integração bem como demais serviços que serão definidos no Pacote de integração.

Para a validação de Serviço o pacote devera implementar o método GetApiServicesRequired


3) Diagnostico de Compartilhamentos

Para o correto funcionamento de integrações que envolvem Protheus com RM existem um conjunto de configurações de compartilhamentoscompatíveis, incompatíveis e

...

 recomendados. No EAI 2.0 cada adapter pode possuir um conjunto de configurações.

...

 Para isto os adapters devem implementar os seguintes métodos

...

:

ValidateLevelCompanyBranch - Responsável por validação se uma dada configuração é valida, inválida e retornar a configuração recomendada. Este método alem de ser utilizado pelo Configurador também é utilizado no recebimento de mensagens.


Exemplo:

Bloco de código
languagec#
titleExemplo Validate
collapsetrue
    /// <summary>
    /// Valida o nível de compartilhamento da tabela.
    /// Não é permitido a utilização de modo Exclusivo por Filial
    /// Não é recomendado a utilização de registro compartilhado por empresa. (Replica)
    /// </summary>
    /// <param name="parms">EAIValidatedSharedModeParams</param>
    /// <param name="result">EAIValidatedSharedModeResult</param>
    /// <param name="sharedModeColigada">SharingModeEnum</param>
    /// <param name="sharedModeFilial">SharingModeEnum</param>
    /// <returns>Retorna EAIValidatedSharedModeResult</returns>
    public override EAIValidatedSharedModeResult ValidateLevelCompanyBranch(EAIValidatedSharedModeParams parms, EAIValidatedSharedModeResult result, SharingModeEnum sharedModeColigada, SharingModeEnum sharedModeFilial)
    {
      string tableProtheus = "TV0"; // doNotLocalize

      if (sharedModeColigada != SharingModeEnum.smCompartilhado)
      {
        result.ValidationMessage = string.Format(Properties.Resources.sPrjsharedModeValidated, tableProtheus);
      }

      if (sharedModeFilial == SharingModeEnum.smExclusivo)
      {
        result.ValidationMessage += string.Format(Properties.Resources.sPrjsharedModeValidated, tableProtheus);
        result.Validated = false;
      }

      return result;
    }


AliasSharedMode

Este método define o conjunto de tabelas que devem ter seu compartilhamento validado pelo adapter, a partir destas tabelas o framework de configuração buscara seus compartilhamentos no Protheus e realizara a chamada do método de validação de compartilhamento do respectivo adapter.