Âncora | ||||
---|---|---|---|---|
|
Painel | ||||||
---|---|---|---|---|---|---|
| ||||||
Âncora | ||||
---|---|---|---|---|
|
Painel | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
|
Âncora | ||||
---|---|---|---|---|
|
Painel | ||||||
---|---|---|---|---|---|---|
| ||||||
Cenário principal O Cliente Rede Marcela requisitou uma integração que permitisse buscar, inserir e alterar diversas informações do AutoSystem através de um sistema de terceiro via Webservice. Visto a grande demanda que existe todos os anos de integrações, exportações e consultas que são criadas de diversas formas para fontes externas, foi criado o AS Integrador que visa ser o um meio de integração simples e eficaz para diminuir o esforço investido em horas desenvolvendo integrações com terceiros. Nesta proposta de integrador o sistema de terceiro tem um WS que permite consultar e alterar as tabelas do AutoSystem (sob responsabilidade do cliente) com algumas restrições. Dessa forma transferimos o esforço para o sistema de terceiro e podemos nos focar em demais projetos. O integrador conta com uma chave privada de segurança da integração que permite que o cliente controle quem estará acessando a sua base de dados: Configuração
*Tela de configuração de chave privada de acesso da integração O cliente deve acessar esta tela e gerar a chave, esta chave deve ser enviada para o responsável do sistema/aplicação de terceiro que realizará a integração. *Se uma nova chave for gerada, as antigas se tornarão inválidas e o sistema/aplicação de terceiro terá que receber esta nova chave para continuar tendo acesso aos dados do AutoSystem. Executando o serviço do AS Integrador
Para efetuar testes no AS Integrador é possível utilizar o Postman que permite simular as requisições via JSON:
Segue exemplos de testes e configurações com Postman: |
Âncora | ||||
---|---|---|---|---|
|
Painel | ||||||
---|---|---|---|---|---|---|
| ||||||
Levantamento de escopo para criação de um integrador genérico que venha a atender as diversas integrações que são requisitadas para o AutoSystem de diversas áreas, tais como:
A integração deve funcionar através de um webservice utilizando JSON para troca de dados. O webservice deve aceitar as seguintes ações:
DEFINIÇÃO Permitir a integração com sistemas de terceiros através de um WS via comandos SQL, permitindo a flexibilidade do cliente quanto a customizações em busca de dados, alterações e inserções.
{cnpj} - CNPJ do Posto onde serão executados os comandos {comando} - Comando SQL que será executado no banco {chave} - Chave privada do Integrador gerada e fornecida pelo cliente através do AutoSystem
{url} - URL que foi invocada {versao} - Versão do AutoSystem {retorno} - Onde virá o retorno do comando {dados} - Onde virá a lista de dados retornados ou o OK da execução do comando {banco} - Nome do banco onde foi executado o comando {apiversion} - Versão da api do WS {erro} - Texto indicando o erro ocorrido {status_code} - Código do status do erro ou da execução bem sucedida {status} - Status de execução de comandos "update", "insert" EXEMPLOS SELECT
{ "cnpj": "54517628001402", "comando": "select p.cpf, p.nome, pt.ponto from pessoa p join ponto pt on (pt.pessoa = p.grid) limit 1", "chave": "e50951856d1bbf486bf9f8845b0df03b" }
Após a execução o retorno do comando será em JSON conforme os exemplos abaixo.
{ "url": "/as/integrador", "versao": "3.2.2.0", "retorno": { "dados": [ { "ponto": 36.42, "cpf": "068.828.439-61", "nome": "CLIENTE TESTE" } ] }, "status_code": 200, "banco": "posto_tulio", "apiversion": "1.0" }
Se a chave de integração for inválida poderá ocorrer o seguinte exemplo de erro:
{ "url": "/as/integrador", "versao": "3.2.2.0", "status_code": 400, "erro": "Conexão não permitida pois a chave de segurança é inválida!", "banco": "posto_tulio", "apiversion": "1.0" }
{ "cnpj": "54517628001402", "comando": "insert into ponto (pessoa, ponto) values ((select grid from pessoa where cpf = '068.828.439-61'), 100)", "chave": "e50951856d1bbf486bf9f8845b0df03b" } *Este comando de insert está exemplificando uma inserção de pontuação de um cliente buscando o mesmo através do CPF e registrando 100 pontos *As relações das tabelas funcionam através do grid <> nomeDaTabela, por exemplo:
O comando será executado se o mesmo passar nas validações de restrições e for um comando válido! As restrições incluem os seguintes comandos:
*Os comandos acima são bloqueados no integrador Todos os comandos ficam registrados em tabelas de log do integrador com todas as informações da aplicação que enviou o comando para permitir o rastreio. Após a execução o retorno do comando será em JSON conforme os exemplos abaixo.
{ "url": "/as/integrador", "versao": "3.2.2.0", "retorno": { "status": "OK" }, "status_code": 200, "banco": "posto_tulio", "apiversion": "1.0" }
Se o comando for com um erro de sintaxe ou de programação poderá ocorrer o seguinte exemplo de erro:
{ "url": "/as/integrador", "versao": "3.2.2.0", "status_code": 500, "erro": "ERROR: more than one row returned by a subquery used as an expression\n\ninsert into ponto (pessoa, ponto) values ((select grid from pessoa), 10)", "banco": "posto_tulio", "apiversion": "1.0" } |