De vez em quando aparecem-nos alguns desafios inesperados e há duas semanas enquanto estava a meio da formação XD API recebemos um pedido para participar numa aula da unidade curricular Implementação de Sistemas Integrados do 3ºano, 2º semestre do Mestrado Integrado em Engenharia e Gestão de Sistemas de Informação da Universidade do Minho.

Esta unidade curricular aborda a temática dos sistemas integrados como software (ERPs, …), como integração de sistemas (SOA, …) e funciona ainda como uma unidade curricular integradora dos conhecimentos adquiridos ao longo do 1º, 2º e 1º semeste do 3ºano.

Integração de sistemas de informação, nomeadamente softwares de gestão é algo que trabalhamos com muita regularidade na Samsys pelo que, mesmo não tendo nada preparado, achamos que seria interessante e importante participarmos nessa aula.

A ideia era ser uma apresentação muito prática e foi com esse espírito que a tentamos preparar.
Antes da apresentação desses casos tentei dar um enquadramento de como vemos, a realidade da integração de sistemas, quer no mundo em geral quer nos desafios concretos que os nossos clientes nos colocam.

Para abordar inicialmente o tema da integração de sistemas usei uma ideia que, na minha opinião, captura a essência deste conceito. Essa imagem representava uma pessoa, com um conjunto de folhas, a passar essas folhas a outra pessoa. Pareceu-me que era uma boa metáfora porque, no fim de tudo, quando falamos em integração de sistemas, estamos a falar de partilhar algo (informação) que um sistema (uma das pessoas) tem com outro sistema (a outra pessoa).

Claro que, como se costuma dizer, o diabo está nos detalhes, e se, conceptualmente, é mesmo só partilhar informação, quando começamos a detalhar o problema, muitas outras questões se levantam.

  • Requisitos: Fiabilidade; Consistência; Velocidade
  • Estratégias : Online; Batch; Ficheiros; bases de dados; webservices, …
  • Especificações: Protocolos; Sistemas abertos / fechados
  • Desenvolvimento: De raiz; Dentro de Produtos existentes

Podemos estar a falar em pensar como vamos monitorizar todo o processo para percebermos se ele é fiável… o que vamos construir para quando acontecer um erro podermos saber dele antecipadamente e podermos resolvê-lo;

Ou então perceber quais os requisitos na velocidade de integração, o que pode levar a perceber se temos que pensar num sistema de integração online ou em batch, e sendo em batch com que periodicidade e que tipo de inconsistências de dados estamos a admitir como possíveis.

Depois precisamos ainda de definir ou saber quais as formas como vamos por os dois sistemas a comunicar, por troca de ficheiros, por acesso direto às bases de dados de cada um desses sistemas, através de apis ou webservices.

No caso de alguns sistemas mais especificos, ainda poderá ser obrigatório saber que protocolos de comunicação têm que ser establecidos, o que pode ser mais ou menos complicado caso estejamos a falar de sistemas abertos ou fechados.

E, no nosso caso, em que desenvolvemos estes sistemas, temos que perceber se vamos construir tudo de raiz, se vamos usar algum componente ou se vamos usar uma framework completa que já disponibilize este tipo de serviço fazendo somente as parametrizações de cada um dos sistemas a integrar.

O que temos visto como tendência geral é um caminho desta indústria para os microserviços com apis rest que depois podem ser programadas diretamente, ou então, orquestradas para poderem comunicar entre si.

No entanto a realidade mais habitual Samsys é a da integração de sistemas, que por esta altura poderiamos chamar de clássicos, do tipo cliente / servidor, em que temos uma aplicação desktop windows que se liga a uma base de dados que disponibiliza a informação tratar.

Isto não quer dizer que os diferentes fabricantes com que trabalhamos não possam ter já soluções 100% web como o DriveFX no caso da PHC ou webificada como o PHC cs web (digo webificada porque continua a precisar do PHC CS Desktop), ou Jasmin no caso da Primavera (fabricante não tão expressivo no portfolio Samsys).

Ou seja, embora a tendência atual seja ligar aplicações web via apis rest, no nosso caso temos tipicamente que criar o interface web que ligue ao software de gestão para depois interagir com o outro sistema com que queremos integrar

Neste cenário ainda temos outra questão com que tipicamente temos que lidar e que tem a ver com a forma como esses sistemas disponibilizam o acesso aos seus dados e lógica. Já antes das APIs rest ou webservices havia o conceito de APIs. Na altura estavamos a falar de DLLs de integração, tipicamente vendidas como módulos adicionais ao software base, estas Windows API (vamos chamar-lhes assim) permitem-nos, pelo menos, abstrair-nos da lógica implementada no ERP bem como da própria estrutura da base de dados.
Este é o cenário da Sage, XD, Primavera e Wintouch e, não havendo a opção de uma API web então pelo menos ter este tipo de API é um bom começo.

Estas são todas as questões prévias com que temos que trabalhar, e este foi um tema também que tentei passar na apresentação. O desenvolvimento de software e deste tipo de sistemas não vive só de técnica. O contexto em que trabalhamos, ou seja as empresas para quem prestamos serviços, é muito relevante para perceber quais as necessidades delas, as suas expectativas e como poderemos implementar essa solução.

Depois disto passamos à apresentação de casos concretos. Onde tentamos dar uma ideia, às vezes talvez demasiado exaustiva, de como construimos essas soluções. Apresentando código, falando dos desafios dessas implementações e respondendo a algumas questões que foram surgindo.

Os exemplos que apresentamos, e que foram apresentados pelo meu colega Telmo Marques, incluiram soluções que usavam a Extensibilidade Sage ou aplicações que usavam a Sage API para integrar dados, outras com Primavera para integrar com uma loja online em WordPress/WooCommerce, o nosso addon para o Wintouch Oficinas que permite enviar Sms para os clientes cuja carro tem que ir à inspeção ou alguns exemplos que já experimentamos com a API do XD.

No geral fiquei surpreendido por temos conseguido manter uma audiência de cerca de 100 alunos, num final de dia, relativamente interessada e que foi colocando algumas perguntas durante as apresentações. Uma boa experiência portanto.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *