Estratégia de integração de qualquer sistema com o Innovaro ERP (REST)
O Innovaro ERP é um fornecedor de APIs REST em modo PASSIVO (só aceita chamadas REST, não invocando nenhum serviço de integração diretamente).
Todos os sistemas que desejem se integrar ao Innovaro ERP devem obedecer a este fluxo. Não há alternativas através de tabelas compartilhadas em bancos de dados; compartilhamento de arquivos em diretórios de sistemas operacionais ou via FTP's, etc.
Se algum sistema precisar aguardar alguma mudança de status no Innovaro ERP para realizar alguma ação, o mesmo deve invocar uma das APIs e verificar seu retorno de tempos em tempos, até saber que deve realizar alguma ação, e depois invocar novamente APIs para representar esta nova ação ao Innovaro ERP.
O Innovaro ERP não busca informações em outras bases, pois é considerado o "detentor da VERDADE sobre as informações que possui em seu modelo de dados" (Fonte Única da Verdade), tampouco concilia informações entre sistemas. Logo, sistemas que se integrem com ele, devem se preocupar em manter os dados do Innovaro ERP íntegros com possíveis representações em seus modelos de dados paralelos.
É responsabilidade do sistema que se integra ao Innovaro ERP, garantir a perfeita sincronia de informações, para manter no Innovaro ERP a condição de total integridade com "fatos" e "verdades" sobre a empresa cliente. Devendo tratar quaisquer erros que possam ocorrer pelo fato do Innovaro ERP negar o registro de alguma operação, que fira alguma regra de negócios existente em seu modelo de dados.
O sistema que se integra ao Innovaro ERP poderá invocar suas APIs de forma ONLINE, conforme necessita de cada informação ou precisa gravar novas informações de forma interativa. Este formato oferece máxima integridade, por não precisar realizar cópias de informações entre os sistemas, pois já assume que as informações vindas do Innovaro ERP de forma ONLINE estão sempre atualizadas. Como ocorrem de forma síncrona com a realidade das operações sendo 'executadas' realmente naquele instante, caso exista alguma validação do Innovaro ERP que inviabilize alguma gravação, a sequência de processos pode ser interrompida no sistema que está se integrando, solicitando ação imediata para sua correção, não permitindo que os sistemas possuam 'verdades' distintas um do outro.
Já sistemas que optem por realizar integrações ao Innovaro ERP em formato BATCH, isto é, realizam cópias do modelo de dados para seus próprios formatos, e depois tentam gravar dados em bloco no Innovaro ERP, depois que alguma ação concreta já foi gravada com sucesso em seu próprio modelo, correm sério risco de obter erros no momento da gravação, pois o tempo decorrido entre a 'carga' dos modelos de dados entre os sistemas pode ter deixado-os incongruentes, facilitando a existência de quebras de integridade, e dificultando a representação da 'Verdade' dentro do Innovaro ERP, que é refém da qualidade dos processos de integração realizados pelo software que deseja se integrar ao mesmo.
O modelo de dados do Innovaro ERP é bastante rico, e procura representar a realidade dos negócios com o máximo de riqueza que permita grande abstração de conceitos por parte de quem o utiliza. É importante então que profissionais responsáveis das empresas que queiram se integrar ao Innovaro ERP procurem compreender o modelo de dados, que pode ser distinto para cada necessidade de integrador diferente. Por exemplo, um integrador de PDV pode necessitar de conceitos distintos de quem está integrando um WMS por exemplo.
Várias tabelas de parametrização do Innovaro ERP são feitas com datas de validade (início/fim), e atribuem regras do escopo mais generalista ao mais específico através de complexos algorítmos de pesquisa combinatória. Para um sistema que queira se integrar de forma BATCH, simplesmente ler as tabelas de parametrização não lhe é suficiente, pois precisaria também conseguir replicar em sua solução os algorítmos de pesquisa de forma idêntica aos realizados pelo próprio Innovaro ERP. Uma alternativa a esta estratégia é a de 'mimicar' o uso de objetos de gestão, buscado verificar o que o Innovaro ERP traz de informação pertinente para cada combinação de parâmetros que se coloque, antes de invocar cálculos que intepretem as tabelas de parametrização e que tragam: preços, tributos, comissões, promoções, descontos, rentabilidades, condições de pagamento, contabilização, etc.
Para os sistemas que se integram de forma ONLINE, não há necessidade de 'mimicar' nenhuma operação, pois a princípio estão usando os próprios objetos de gestão para realizar efetivamente a operação, sabendo que em seu resultado obterão todos os cálculos e validações de acordo com as regras parametrizadas no Innovaro ERP.
Sistemas que queiram realizar integração em formato BATCH, devem possuir seus próprios mecanismos de detecção de quais informações foram alteradas desde a última chamada em BATCH, visando sua própria otimização de algorítmos de atualizações de dados internos. Exemplo: detectar quais produtos foram alterados, deletados ou inseridos desde a última invocação de uma lista de informações cadastrais realizada anteriormente.
Ao tratar o Innovaro ERP como detentor da "verdade" sobre o modelo de dados, um software que esteja se integrando ao mesmo, pode detectar a necessidade de estender o modelo de dados do Innovaro ERP para conter mais propriedades ("campos"), além dos já existentes. Deve então observar com cautela se a informação que necessita, não estaria representada em algum outro local dentro do Innovaro ERP: tabelas de parametrização, ou mesmo serem informações que dependam de algum contexto a ser "mimicado" (conforme mencionado anteriormente), antes de partir para a extensão do modelo através de campos customizados; mas caso precise criá-los, poderá usar o próprio Innovaro ERP, para definir esta extensão de modelo.
Se o sistema que está precisando estender o modelo for um produto a ser comercializado de forma independente, a extensão do modelo pode fazer parte de uma licença/produto dentro do Innovaro ERP específica do fornecedor do sistema a ser integrado, evitando a criação de campos customizados a cada novo cliente seu.