Histórico da Página
Informações | ||
---|---|---|
| ||
Informações técnicas do TOTVS Agro Connector Client (TCC) podem ser consultadas nesta wiki. |
Conteúdo
- O que é TOTVS Agro Connector?
- TOTVS Agro Connector Client
- TOTVS Agro Connector Server
- Integração com aplicações TOTVS e de terceiros
- Entidades
- TOTVS Agro Connector Server
- Client Environment
- SchemaDefinition
- TOTVS Agro Connector Client
- Product Connection
- Product Connection Schema
- Métodos de Publicação
- Modo Standalone
- Publicação Remota
- External Event
- TOTVS Agro Connector Server
- Mensagens
- Fluxo Geral
- Fluxo de envio e recebimento de mensagens do TOTVS Agro Connector Server
- Entidade EventData
- Como enviar?
- Entidades
- Integração com TOTVS Carol
- Contextualização
- Entidades
- Autenticação
- Entidades
- Client Environment
- CarolUser
- CarolConnector
- CarolStagingTable
- EventDataCarol
- Mensagens
- Fluxo
- Entidade EventDataCarolRequest
- Como enviar?
- Observações
- Tempo de envio de dados
01. O que é TOTVS Agro Connector?
O TOTVS Agro Connector é uma ferramenta/plataforma que possibilita a integração entre softwares e plataformas (TOTVS e não-TOTVS), independente da forma de distribuição de tal solução. Desta forma, utiliza-se o TOTVS Agro Connector para integrar dados, por exemplo, entre aplicações OnPremise, Cloud Privada/Pública e plataforma SaaS (TOTVS Apps).
Funcionamento geral
Por meio de dois componentes dispostos em contextos/ambientes distintos, é possível garantir que uma aplicação OnPremise fique sincronizada com uma aplicação em Cloud/SaaS. Para viabilizar este cenário, um dos componentes é o TOTVS Agro Connector Client, ferramenta que é instalada em ambiente OnPremise/Nuvem Privada (Private Cloud). Outro componente, o TOTVS Agro Connector Server, gerenciado pela TOTVS, é responsável de receber todo o fluxo de dados, assim como expor APIs e se comunicar com as demais soluções em Cloud/SaaS. Em ambiente do cliente (OnPremise/Cloud), deve ser instalado e configurado apenas o TOTVS Agro Connector Client.
TOTVS Agro Connector Client
É o componente responsável por ler os dados das aplicações OnPremise, sejam aplicações TOTVS ou de terceiros. A instalação é realizada em uma máquina que de forma a conectar-se com o banco de dados do produto OnPremise/Nuvem Privada (Private Cloud), podendo este ser Oracle, Microsoft SQL Server e PostgreSQL. O TOTVS Agro Connector Client precisa de uma instância do PostgreSQL e, dependendo da configuração standalone, mencionado no tópico 2 (Integração com produtos TOTVS e externos), uma instância do RabbitMQ (para comunicação via mensageria AMQP).
TOTVS Agro Connector Server
O TOTVS Agro Connector Server é responsável por receber os dados que serão integrados, originados em aplicações OnPremise/Nuvem Privada (Private Cloud), aplicações SaaS e até não-TOTVS, por meio de aplicações de terceiros. Este componente fica em um ambiente exposto na nuvem, uma vez que todos os demais TOTVS Agro Connector Client devem ser capazes de acessá-lo via requisição Internet/HTTP.
02. Integração com aplicações TOTVS e de terceiros
Entidades
Este tópico apresenta e descreve as entidades utilizadas no TOTVS Agro Connector Server e TOTVS Agro Connector Client.
TOTVS Agro Connector Server
Client Environment
A entidade Client Environment representa o ambiente do cliente e é necessário realizar seu cadastro para o correto funcionamento do TOTVS Agro Connector Client, assim como para a integração da TOTVS Carol. Ao cadastrar um novo ambiente (Client Environment), a entidade gerará um token para este ambiente. O token gerado representa a identificação do cliente/ambiente que será utilizado para enviar os dados. Além disso, o token deve ser informado na instalação do TOTVS Agro Connector Client, pois a plataforma TOTVS Agro Connector verifica se o token é válido ou não. As aplicações Cloud/SaaS também devem enviar esse token nas mensagens para o TOTVS Agro Connector Server.
SchemaDefitinion
O SchemaDefinition é a estrutura de dados que o mapeamento estrutural e de metadados de persistência (por exemplo, nomes de Tabela e Coluna). Para isto, a entidade SchemaDefinition possui as informações da tabela de origem do dado e como se dá a conversão para ser enviado ao TOTVS Agro Connector Server. A gestão do SchemaDefinition é realizada apenas no TOTVS Agro Connector Server. Uma vez publicado o SchemaDefinition, será gerada uma nova versão do SchemaDefinition. Assim, todos os TOTVS Agro Connector Client também são responsáveis pelo processo de sincronismo de novos SchemaDefinition.
...
Informações | ||
---|---|---|
| ||
|
TOTVS Agro Connector Client
Product Connection
A entidade ProductConnection representa as informações da conexão do banco de dados do produto que será integrado. O TOTVS Agro Connector Client suporta conexões com vários bancos de dados ao mesmo tempo, possibilitando que uma mesma instalação de TOTVS Agro Connector Client monitore e integre dados a partir de múltiplos ProductConnection (por exemplo, Oracle, Microsoft SQL Server e PostgreSQL). Cada banco de dados deve possuir uma tabela chamada TCC_PRODUCT_METADATA, responsável pelo controle de nome do produto (NAME) e a versão do produto que está sendo monitorado/integrado (VERSION). Estas informações são necessárias para relacionar as entidades ProductConnection e SchemaDefinition.
...
Os bancos de dados suportados são Oracle (11g e 12c), Microsoft SQL Server e PostgreSQL.
Atributos
- O atributo id é o identificador único do produto;
- O atributo productName é o nome do produto;
- O atributo productVersion é a versão atual do produto;
- O atributo url é o endereço de conexão com o banco de dados. Para cada banco de dados, utiliza-se um endereço diferente. Nesta documentação, também são apresentados os diferentes endereços para cada banco de dados;
- O atributo username é o usuário do banco de dados;
- O atributo password é a senha do usuário do banco de dados;
- O atributo dataBaseType é o tipo do banco de dados;
- O atributo enabled representa se a conexão está habilitada ou desabilitada;
IMPORTANTE!
O usuário do banco de dados deve ter permissão de criar, alterar remover registros, colunas e triggers nas tabelas.
...
Informações | ||
---|---|---|
| ||
|
Product Connection Schema
A entidade ProducConnectionSchema representa a relação entre as entidades ProductConnection e SchemaDefinition. Esta relação significa que uma determinada conexão integrará determinados SchemaDefinition. Por exemplo: a conexão A possui integração com os schemas Schema_A e Schema_B, e a conexão B, com os schemas Schema_B e Schema_C. Portanto, é possível configurar duas conexões com diferentes SchemaDefinition. A entidade SchemaDefinition é cadastrada no TOTVS Agro Connector Server e a própria aplicação TOTVS Agro Connector Client encarrega-se de sincronizar, automaticamente, esta entidade.
Após realizar o relacionamento, o TOTVS Agro Connector Client iniciará o monitoramento das tabelas definidas no SchemaDefinition. Assim que houver qualquer alteração em um ou mais registros das tabelas monitoradas, o TOTVS Agro Connector Client será notificado e processará este registro, enviando-o à plataforma TOTVS Agro Connector Server.
Atributos
- O atributo id é o identificador do registro;
- O atributo idProductConnection é o id do registro da entidade ProducConnection;
- O atributo idSchemaDefinition é o id do registro da entidade SchemaDefinition;
- O atributo versionSchemaDefinition é a versão do SchemaDefinition relacionado. Este atributo não precisa ser passado para criar o relacionamento. Preenchido automaticamente;
- O atributo nameSchemaDefinition é o nome do SchemaDefinition relacionado. Este atributo não precisa ser passado para criar o relacionamento. Preenchido automaticamente;
- O atributo enableStandalone será explicado no tópico Modo Standalone;
- O atributo enablePublishRemote será explicado no tópico Modo Publish Remote;
...
Informações | ||
---|---|---|
| ||
{ "enablePublishRemote": "true", "versionSchemaDefinitoin": "não_precisa_de_valor", |
Métodos de Publicação de Mensagens
Existem dois métodos de publicação de mensagens no TOTVS Agro Connector Client, a publicação local (Standalone) e a publicação remota (PublishRemote). Esses métodos são configurados em dois níveis: TOTVS Agro Connector Client e Product Connection Schema.
Nível TOTVS Agro Connector Client:
Ao subir um TOTVS Agro Connector Client, temos os dois parâmetros de publicação para definirmos se publicará mensagens localmente, remotamente (TOTVS Agro Connector Server) ou em ambos, ou seja, um é independente do outro. Por padrão temos a publicação remota (PublishRemote) ativa e a publicação local (Standalone) desativa. Em um cenário com apenas um método de publicação ativo, como por exemplo o cenário padrão, o TOTVS Agro Connector Client irá publicar somente de maneira remota, ou seja, mesmo que em nível de Product Connection Schema seja requerido a publicação local, não irá ser publicada a mensagem localmente.
Nível Product Connection Schema:
Tendo um cenário com os dois métodos de publicação ativos, ou seja, o TOTVS Agro Connector Client não irá travar nenhum método de publicação, levamos em consideração outro filtro para fazer a publicação das mensagens. Esse filtro é sobre o relacionamento entre um SchemaDefinition e um Product Connection, sendo nesse ponto a terá suporte para as duas opções, não necessariamente a mensagem será publicada das duas maneiras, a partir de agora isso é definido por um ProductConnectionSchema, sendo por meio dos atrubitos enablePublishRemote e enableStandalone a definição de onde os dados gerados serão publicados, sendo feito por meio dos valores do enablePublishRemote e enableStandalone.
Modo Standalone
O Modo Standalone é uma forma de trabalhar apenas no ambiente OnPremise. Por exemplo, integrar dois ou mais produtos que estão em ambientes OnPremise/Nuvem Privada (Private Cloud). Para habilitar o Modo Standalone é preciso inicializar o TOTVS Agro Connector Client com o standalone ligado. Ao habilitar o standalone, o TOTVS Agro Connector Client exigirá uma conexão com uma instância do RabbitMQ, instalada, por padrão, no mesmo ambiente. Uma vez definido o TOTVS Agro Connector Client como standalone, deve-se habilitar o ProductConnectionSchema como standalone.
Para fins explicativos, suponha que exista um produto A, com um ambiente OnPremise com banco de dados, TOTVS Agro Connector Client e RabbitMQ instalados.
Com o standalone habilitado, o TOTVS Agro Connector Client enviará os registros do produto A para a instância do RabbitMQ, que também está no OnPremise. Com isso, outros produtos que estão no OnPremise, por exemplo os produtos B e C, poderão "escutar" uma fila na instância do RabbitMQ para receber estes mesmos registros. Além disso, é possível que os produtos B e C publiquem os registros no RabbitMQ. Desta forma, o TOTVS Agro Connector Client será notificado e processará os registros no banco de dados do produto A.
Na representação seguinte, é apresentado o diagrama do Modo Standalone:
Publish Remote
Com o publishRemote habilitado, qualquer alteração de registros no banco de dados de um produto, irá notificar o TOTVS Agro Connector Client para que faça o envio destes registros para o TOTVS Agro Connector Server - que está disposta em Cloud - Fazendo com que essas alterações estejam disponíveis por uma fila do RabbitMQ para o algum outro produto que seja interessante tê-las.
External Event
Um ExternalEvent (ou Evento Externo, em Português), é um endpoint no TOTVS Agro Connector Client que aceita mensagens via requisição HTTP POST, sendo possível enviar dados por aplicações que não possuem integração com o RabbitMQ. Este endpoint aceita apenas o envio de mensagens. Importante mencionar que não há um endpoint que seja possível recuperar mensagens. As mensagens somente são disponibilizadas no RabbitMQ (local) via modo standalone.
Database Structure
Devido à necessidade de existência de objetos de banco de dados para o correto funcionamento do TOTVS Agro Connector Client, existe uma funcionalidade que checa/verifica, de tempos em tempos, a consistência ou integridade desses objetos.
Cada tabela do SchemaDefinition origina a criação de uma trigger e de duas colunas (gerenciais) no banco de dados do produto OnPremise. Caso algum desses objetos sofra alterações indevidas, o TOTVS Agro Connector Client validará e exibirá esta falta de conformidade/integridade, facilitando verificações de problemas no funcionamento desejado.
Mensagens
Fluxo Geral
Fluxo de mensagens das aplicações OnPremise/Nuvem Privada (Private Cloud) e Cloud, por meio do TOTVS Agro Connector Server e Totvs TOTVS Agro Connector Client:
Diagrama do fluxo de envio e recebimento de mensagens do TOTVS Agro Connector Server
Entidade EventData
A entidade EventData é utilizada para encapsular os dados enviados ao TOTVS Agro Connector Server, componente destinado às aplicações OnPremise e Cloud/SaaS.
Atributos
- O atributo originApp é o nome da origem do registro, ou seja, o nome do produto;
- O atributo appVersion é a versão do produto;
- O atributo schemaName é o nome da entidade do SchemaDefinition;
- O atributo schemaVersion é a versão da entidade do SchemaDefinition;
- O atributo action é a ação que será executada no banco de dados, podendo ser INSERT, UPDATE ou DELETE;
- O atributo data é o registro no formato JSON, definido pelo SchemaDefinition;
- O atributo createdAt é a data de criação da entidade EventData;
- O atributo token é o atributo gerado pela entidade ClientEnvironment;
...
Informações | ||
---|---|---|
| ||
|
Como enviar?
Para enviar os dados via mensageria para o TOTVS Agro Connector Server, deve-se enviar a entidade TOTVSMessage<T>. A entidade TOTVSMessage é uma classe da biblioteca TJF que encapsula a mensagem a ser enviada por mensageria.
O tipo genérico T é a entidade a ser encapsulada que, no contexto atual, representa o EventData. Portanto, para enviar uma mensagem para o TOTVS Agro Connector Server, deverá ser enviado um objeto com tipagem TOTVSMessage<EventData>.
Atributos
- O atributo header é a classe TOTVSHeader, também da biblioteca TJF, que será enviada no header da mensagem;
- O atributo type é o nome da StagingTable a ser enviada;
- O atributo generatedOn é a data que está enviado os dados;
- O atributo locale é a localização utilizada no cliente;
- O atributo content é o tipo genérico T. No nosso caso, será a entidade EventData;
...
Informações | ||
---|---|---|
| ||
{ "header": { "content": { } } |
Estrutura final TOTVSMessage<EventData>
Exemplo de uma mensagem com um schema fictício que define PESSOA:
Informações | ||
---|---|---|
| ||
{
|
03. Integração com TOTVS Carol
Contextualização
A TOTVS Carol é uma plataforma de dados e inteligência artificial da TOTVS, podendo-se aplicar as funcionalidades de um MDM (Master Data Management ou Gestão de Dados Mestre), como, por exemplo: capacidade de receber dados de qualquer fonte, garantir a integridade dos dados e centralizar os dados de sua aplicação. Além disso, também possui a capacidade de desenvolver aplicativos e os implantar na plataforma, por meio de Carol Apps e Carol Assistant. Para saber mais sobre a plataforma Carol, pode-se acessar sua documentação.
O TOTVS Agro Connector possui integração com a TOTVS Carol, possibilitando a disponibilização de dados de aplicações OnPremise ou SaaS para a plataforma Carol. Neste tópico, são explicados os processo de configuração e uso do TOTVS Agro Connector Server junto à plataforma TOTVS Carol.
Autenticação
Para enviar dados à TOTVS Carol, torna-se necessária a realização da autenticação do usuário, podendo esta ser feita de duas maneiras: pelo accessToken ou pelo connectorToken. Para o TOTVS Agro Connector Server, a autenticação será feita pelo connectorToken. Portanto, gera-se o connectorToken na plataforma Carol e, após geração, o connectorToken é utilizado no cadastro da entidade CarolConnector.
Entidades
Client Envrionment
Como mencionado anteriormente (tópico 2. Integrações com aplicações TOTVS e terceiros), a entidade Client Environment representa o ambiente e o token gerado por ele representa a identificação do cliente. Assim, o token é utilizado para identificar as mensagens do cliente e direcionar para a TOTVS Carol.
Carol User
A entidade CarolUser contempla as informações de autenticação/login da plataforma Carol e deve ser cadastrada no TOTVS Agro Connector Server.
Atributos
O atributo "organizationSubdomain" corresponde ao atributo "orgDomain" da TOTVS Carol;
O atributo "subdomain" corresponde ao atributo "subdomain" da TOTVS Carol, que se refere ao ambiente (tenant) que está se autenticando;
Os atributos "username" e "password" são informações do seu login na TOTVS Carol;
...
Informações | ||
---|---|---|
| ||
{ "organizationSubdomain": "ambienteteste", "password": "senha_carol", "subdomain": "clienteteste", "username": "usuario_carol" } |
Carol Connector
A entidade CarolConnector representa quais Connectors (da TOTVS Carol) que o usuário possui no ambiente, assim como seus Connector Tokens. Na TOTVS Carol, pode-se gerar um Connector Token para cada Connector e são utilizados para o processo de autenticação/identificação de usuário para autorização nas requisições das APIs.
ATENÇÃO!
O Connector Token é diferente do token gerado na entidade Client Environment. O Connector Token é gerado na TOTVS Carol para um Connector e é utilizado na identificação do usuário na TOTVS Carol para um mesmo Connector. Diferentes Connectors possuem diferentes Connector Token para o mesmo usuário. Por fim, o token da entidade Client Environment é utilizado para identificação no TOTVS Agro Connector.
Portanto, CarolConnector é a relação do Connector (connectorId) com o Connector Token gerado para esse mesmo Connector na TOTVS Carol.
Atributos
O atributo connectorId é o id do connector na TOTVS Carol;
O atributo connectorToken é o identificador gerado para o connectorId na TOTVS Carol;
...
Informações | ||
---|---|---|
| ||
|
Carol Staging Table
A entidade CarolStagingTable representa uma StagingTable na TOTVS Carol.
ATENÇÃO!
A entidade CarolStagingTable possui dois atributos similares que representam abstrações diferentes: name e stagingTableName.
Atributos
O atributo stagingTableName representa exatamente o nome da StagingTable na TOTVS Carol. Por exemplo, se na TOTVS Carol existe uma StagingTable com o nome "fazenda", o atributo stagingTableName deverá ser, exatamente, "fazenda";
O atributo name representa um "apelido" para o TOTVS Agro Connector Server diferenciar dos nomes das StagingTable. Por exemplo, na TOTVS Carol contém uma StagingTable chamada "inspecao" e no TOTVS Agro Connector Server, contém duas CarolStagingTable que apontam para a StagingTable "inspecao" na TOTVS Carol. Para diferenciar as duas CarolStagingTable, utiliza-se o atributo name;
O atributo description representa uma descrição sobre a CarolStagingTable;
Mas, por que podem existir duas CarolStagingTable no TOTVS Agro Connector Server apontando para a mesma StagingTable na TOTVS Carol?
Isto pode ser configurado de forma a conter duas ou mais formas responsáveis pelo envio dados para o TOTVS Agro Connector Server. Por exemplo, dois produtos diferentes de um mesmo cliente enviando para a mesma StagingTable na TOTVS Carol.
...
Informações | ||
---|---|---|
| ||
|
IMPORTANTE!
Quando enviar uma mensagem para o TOTVS Agro Connector Server, destinada à TOTVS Carol, a entidade EventDataCarolRequest deverá conter, exatamente, o valor do atributo name. Portanto, não deverá enviar o atributo stagingTableName na mensagem.
A entidade EventDataCarolRequest será explicada no tópico a seguir.
Envio de dados
Fluxo
O diagrama a seguir apresenta o fluxo de dados para enviar à TOTVS Carol:
Entidade EventDataCarolRequest
A entidade EventDataCarolRequest é utilizada para encapsular os dados para enviar ao TOTVS Agro Connector Server, destinada à TOTVS Carol.
Atributos
O atributo environmentToken é o token gerado na entidade Client Environment;
O atributo stagingTableName é exatamente o apelido (atributo name) cadastrada na entidade CarolStagingTable;
O atributo originApp é o nome do produto que está enviando os dados (produto de origem);
O atributo dataList é uma lista de objetos que será enviada para a StagingTable na TOTVS Carol, ou seja, os objetos são as próprias representações da StagingTable;
...
Informações | ||
---|---|---|
| ||
|
Como enviar?
A seguir, são explicados os métodos de envio de dados para o TOTVS Agro Connector Server, direcionados à TOTVS Carol.
IMPORTANTE!
Como os envios de dados são feitos de forma assíncrona, pode-se levar algum tempo até os dados serem processados e enviados.
Via Requisição HTTP
Para enviar os dados via requisição HTTP, utiliza-se o endpoint do TOTVS Agro Connector Server: /v1/environment/carol/eventsDataCarol
No corpo da requisição, passa-se uma lista de EventDataCarolRequest. Após o envio de dados via HTTP, o TOTVS Agro Connector Server validará as informações e direcionar para TOTVS Carol.
...
Para enviar os dados via mensageria para o TOTVS Agro Connector Server, deve-se enviar a entidade TOTVSMessage<T>. A entidade TOTVSMessage é uma classe da biblioteca TJF, que encapsula a mensagem a ser enviada por mensageria.
O tipo genérico T é a entidade a ser encapsulada que, no nosso caso, será a EventDataCarolRequest. Portanto, para enviar uma mensagem para o TOTVS Agro Connector Server, destinada à Carol, deverá enviar um objeto TOTVSMessage<EventDataCarolRequest>.
Atributos
- O atributo header é a classe TOTVSHeader, também da biblioteca TJF, que será enviada no header da mensagem;
- O atributo type é o nome da StagingTable a ser enviada;
- O atributo generatedOn é a data que está enviado os dados;
- O atributo locale é a localização utilizada no cliente;
- O Atributo content é o tipo genérico T. No nosso caso, será a entidade EventDataCarolRequest;
...
Informações | ||
---|---|---|
| ||
{ "header": { "content": { } } |
Estrutura Final TOTVSMessage<EventDataCarolRequest>
Informações | ||
---|---|---|
| ||
{ |
04. Observações
Tempo de envio de dados
Como as aplicações estão em servidores diferentes, TOTVS Agro Connector Client no OnPremise/Nuvem Privada (Private Cloud), TOTVS Agro Connector Server na nuvem e as aplicações de terceiros podendo estar tanto na nuvem quanto OnPremise, é possível acontecer atrasos e lentidões no envio dos dados, devido à conexão utilizada.
...