Histórico da Página
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
EXEMPLO:
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
$/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 compartilhamentos, compatí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 | ||||||
---|---|---|---|---|---|---|
| ||||||
/// <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.