Páginas filhas
  • Intellector 9 - API - Criação de Plugin

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Desenvolvendo...

Importar o acesso dummy (dummyaccessdummyplugin) como um template para desenvolvimento de um acesso plugin externo. A ideia é que ele oriente o desenvolvimento de toda a estruturanecessária para a criação de um plugin de acesso, mantendo uma padronização na construção destes, evitando que o fonte de cada acesso externo tenha uma forma de implementação completamente diferente dos outros. O objetivo é facilitar desenvolvimento de novos acessos de forma fácil e rápida. Os artefatos que comporão o projeto vazio de um plugin serão:

    • No arquivo JSON:
        Arquivo de
          • Definir as propriedades com os dados de configuração do
        acesso
          • plugin externo, caso existam. Como não se sabe inicialmente quais são esses dados,
        criar um
          • definir no arquivo JSON de exemplo
        com
          • as propriedades mais comuns: protocolo (HTTP, HTTPS, TCP, etc), host, porta e objeto no servidor; atualmente só http/servlet é suportado
        ;
      • Artefatos necessários para a criação de uma funcionalidade no site do Intellector Server que permitirá a configuração do arquivo de propriedades pelo administrador do sistema;
      • As estruturas das classes Java que deverão ser programadas para cada acesso externo:
      • As classes, se for o caso, de implementação do acesso externo, para que o desenvolvedor possa programar o acesso externo propriamente dito;
      • Um XML com
          • . Essas propriedades poderão ser configuradas na interface do Intellector na edição do plugin.
            • "properties": {
              "database": "mango_d",
              "usuario": "user",
              "senha": "senha",
              "audita": true
              }
          • Definir os dados de entrada para chamada do acesso de acordo com o layout pré estabelecido pelo órgão e, que receberá o layout montado pela classe anterior e fará o acesso e retornará a classe com o layout de saída;
        Uma
        • As estruturas das classes Java que deverão ser programadas para cada plugin externo:
        • As classes, se for o caso, de implementação do plugin externo, para que o desenvolvedor possa programar o acesso externo propriamente dito;
        • Uma classe que fará o parser do retorno do órgão externo e montará o VO com as variáveis de resposta, que será chamada pela classe que efetuou o acesso;
        Colocar todos os arquivos de propriedades e layouts dentro de uma pasta, para que seja retirado do JAR depois. Essa lista deve ficar no arquivo de manifesto, i.e. 
        • Parametrizar no arquivo POM.XML as propriedades necessárias para correta geração do plugin. Essas confiogurações serã utilizadas para, por exemplo, a geração do META-INF/MANIFEST.MF
         com uma tag específica (Implementation-FileList - veja exemplo); os arquivos importados ficarão no diretório apontado pela variável de ambiente descrita pela tag 'Implementation-Datadir' no MANIFEST.MF e, esse local deve ter permissão de escrita para o owner do application server;
      • Para configuração do plugin de acesso no "Intellector Data Dir", deverá ser informado no arquivo de manifesto, i.e. META-INF/MANIFEST.MF, o nome do acesso, na tag 'Implementation-Plugin'. Na Instalação do plugin, no Intellector, será criada um diretório com esse nome no "Intellector Data Dir".
      • Para consultar o plugin de acesso é
        • .
          • <main-class> : classe principal do plugin, ou seja, a classe a ser instanciada pelo Intellector Server. 
          • <pluginname> : nome do plugin
          • <description> : uma descrição do plugin
          • <primarykey> : chave a ser usada para a persistência da execução do plugin. Normalmente é uma das variáveis de entrada do plugin e será usada como referência do uso de cache.
          • <pkdescription>: descrição da chave
          • <layoutpath>: caminho para o arquivo json de configuração do plugin.
          • <pluginlib> : indicação se é um plugin ou uma lib para uso por outros plugins.  P - plugin / L - lib para plugin
        • Para consultar o plugin de acesso é necessário determinar as chaves primárias para que futuramente o plugin de acesos seja armazenado em uma base de dados, portanto as variáveis primarykey e pkdescription deverão ser informados no arquivo de manifesto, i.e. META-INF/MANIFEST.MF, sendo o campo primarykey as chaves no HashMap de entrada do acesso mais importantes da consulta separados por ',' para que sejam consultados na funcionalidade Consultar Resultados de Plugin de Acesso e o campo pkdescription um nome mais amigável para que seja listado na funcionalidade também separado por ',' na mesma sequência descrita no campo primarykey;
        • Criar um novo projeto no Eclipse, tendo como base/exemplo o 
        acessodummy
        • dummyplugin no diretório base de onde os artefatos foram gerados.

      Exemplo do MANIFEST.MF (nesse caso, um do SERASA) : 

      Bloco de código
      languagehtml/xml
      linenumberstrue
      Manifest-Version: 1.0
       Main-Class: br.com.tools.acessos.serasa.SerasaPF
       Class-Path: .
       Version-Info: teste-10
       Implementation-Vendor: Tools Servicos
       Implementation-Plugin: serasapf
       Implementation-Layout: serasapf
       Implementation-Datadir: serasapf.datadir
       Implementation-FileList: 
        resources/https.properties,
        resources/layout_p002.xml,
        resources/layout_p006.xml,
        resources/layoutPF_b49c.xml,
        resources/layoutPJ_b49c.xml,
        resources/serasa.properties,
        resources/serasapf.xml,
        resources/serasapj.xml
       primarykey: CPF, DTNASCIMENTO,
       pkdescription: CPF, Data de Nascimento,
      Built-By: ricart.monachesi
      Created-By: Apache Maven 3.3.9
      Build-Jdk: 1.8.0_202
      Main-Class: br.com.totvs.plugins.dummyplugin.DummyPlugin
      
      Name: Intellector Entries
      Implementation-Description: Dummy para exemplificar plugins externos
      Plugin-Lib: P
      pkdescription: CPF do adquirente
      Implementation-Plugin: dummyplugin
      Implementation-Layout: resources/dummyplugin.json
      primarykey: CPF
      Downloads

      Baixe aqui o template do accessdummydummyplugin