README.md
SEI-Broker - Camada REST de acesso ao SEI
O SEI-Broker é uma camada de integração que foi desenvolvida para integrar os sistemas corporativos da ANS e o SEI, Sistema Eletrônico de Informações do TRF 4. Toda essa camada foi criada utilizando o padrão RESTful de serviços web, sua função é facilitar a integração dos sistemas da ANS com o SEI, utilizando um protocolo mais simples, moderno e performático. A adoção do broker nos permite criar uma camada de abstração para evitar que mudanças no SEI afetem as integrações, isso é possível pelo fato do broker utilizar REST e possuir contrato fraco.
O Broker atualmente está na versão 2.9.2, essa versão é compatível com o SEI 3.0.13. É importante destacar que é necessário atualizar o SEI-Broker a cada atualização do SEI que altere os serviços web.
Alguns serviços adicionais foram desenvolvidos para extrair dados que não são ofertados pelos serviços nativos do SEI, estes serviços fazem acesso a base de dados do SEI e realizam operações apenas de consulta. A escrita de dados continua a ser exclusividade dos serviços nativos, desta forma a integridade e coerência das inserções é mantida.
Requisitos
- SEI 3.0.13 instalado/atualizado.
- Código-fonte do Broker pode ser baixado a partir do link a seguir, sempre utilize uma versão compatível com o SEI: https://softwarepublico.gov.br/gitlab/ans/sei-broker/tags
- Apache Maven para baixar as dependências e compilar o pacote.
- Servidor JBoss EAP 7.0.4 ou Wildfly 10.
- Banco relacional, o Broker foi desenvolvido usando Oracle 12g, mas com pouco esforço pode utilizar o MySQL.
- Conexão com a internet para que o Maven acesse os repositórios hospedeiros das dependências.
- Ferramenta apiDoc para gerar a documentação da API.
- Templates-broker implantado e configurado. Este requisito é opcional, ele é necessário caso haja interesse em utilizar o Gerenciador de Templates.
Procedimentos para instalação
Configurar as propriedades dos datasources no JBoss.
O broker possui dois datasources e ambos estão declarados no arquivo sei-broker-ds.xml
, eles são identificados como jdbc/sei-broker
e jdbc/sei-mysql
. O jdbc/sei-broker
foi definido para acessar as tabelas que foram projetadas para o broker, o jdbc/sei-mysql
se conecta ao banco de dados do SEI. O funcionamento dos datasources depende da declaração de algumas System Properties no JBoss.
Chave | Valor |
---|---|
br.gov.ans.seiBroker.db.oracle.connectionUrl | String de conexão com o banco Oracle |
br.gov.ans.seiBroker.db.oracle.password | Senha do usuário utilizado no datasource |
br.gov.ans.seiBroker.db.mysql.connectionUrl | String de conexão com o banco MySQL do SEI |
br.gov.ans.seiBroker.db.mysql.user | Nome usuário com acesso ao MySQL do SEI |
br.gov.ans.seiBroker.db.oracle.password | Senha do usuário com acesso ao MySQL do SEI |
Abaixo um exemplo de declaração de propriedades feita no arquivo standalone.xml
.
<!-- Geralmente no início do arquivo, após as extensions -->
<system-properties>
<!-- Outras propriedades ... -->
<property name="br.gov.ans.seiBroker.db.oracle.connectionUrl" value="STRING_CONEXAO_BD_BROKER"/>
<property name="br.gov.ans.seiBroker.db.oracle.password" value="SENHA_USUARIO_SEI_BROKER"/>
<property name="br.gov.ans.seiBroker.db.mysql.user" value="USUARIO_MYSQL"/>
<property name="br.gov.ans.seiBroker.db.mysql.connectionUrl" value="STRING_CONEXAO_BD_SEI"/>
<property name="br.gov.ans.seiBroker.db.mysql.password" value="SENHA_USUARIO_BD_SEI"/>
</system-properties>
Criar e configurar os arquivos de propriedades no JBoss
O SEI-Broker faz uso de dois arquivos de propriedades que ficam na pasta <JBOSS_HOME>\ans\properties
, os arquivos necessários são services.properties
e ws-users.properties
.
Arquivo Propriedade Descrição services.properties sei.ws.uri URL do SEI sip.ws.uri URL do SIP templates.broker.uri URL do templates-broker ws-users.properties sei.broker.user Usuário de integração do broker sei.broker.password Senha do usuário de integração
Criar security-domain no JBoss
É necessário que haja um security-domain registrado com o nome ans-ws-auth
, o mesmo pode utilizar um banco de dados<sup>1</sup> ou o LDAP. É importante destacar que o Broker trabalha com autorização baseada em papéis(RBAC<sup>2</sup>) e que os usuários precisam ter seus papéis atribuídos.
Implantar pacote gerado pelo Maven
Após a realização de todos os passos anteriores, teremos o JBoss pronto para receber o pacote do SEI-Broker. O deploy pode ser feito de diversas maneiras e não é o foco desse manual.
Para essa etapa é necessário ter o Maven instalado e configurado. Ao realizar o primeiro build devemos desabilitar os testes automatizados, os testes dependem de uma instância ativa e impedirão a geração do pacote.
Configurar Sistema no SEI
É preciso cadastrar o SEI-Broker como um sistema que se integrará ao SEI, conforme manual de webservices do SEI. É importante ter atenção para a sigla que será definida, por padrão o broker está configurado para utilizar a sigla SEI-Broker
.
Após o cadastro do Sistema precisaremos atribuir os serviços que serão utilizados pelo Broker, nesta etapa é preciso ter atenção para o valor que será definido no campo identificação e aos servidores. A identificação do serviço precisa ser enviada a cada requisição feita aos serviços do SEI, por padrão o Broker utiliza o valor REALIZAR_INTEGRACAO
. No campo servidores informaremos os IPs dos servidores onde o SEI-Broker estará implantado.
Os valores utilizados pelo Broker podem ser configurados na classe Constantes
, sigla e identificação são respectivamente SIGLA_SEI_BROKER
e CHAVE_IDENTIFICACAO
.
Gerar documentação da API
Após a implantação é fundamental que a documentação da API seja disponibilizada para os clientes do Broker. A documentação do Broker foi escrita utilizando a ferramenta apiDoc e os fontes estão no diretório /src/main/resources/apidoc/
. Será preciso fazer a instalação do apiDoc<sup>3</sup> e executar o comando abaixo na raiz do projeto.
apidoc -f ".*\\.apidoc$" -i src/main/resources/apidoc/ -o <CAMINHO_ONDE_DOCUMENTACAO_SERA_GERADA>
A documentação gerada deve ser disponibilizada em um local onde possa ser facilmente acessada pelos clientes.
Serviços complementares
Além dos serviços disponibilizados pelo SEI, o Broker possui alguns serviços adicionais que foram desenvolvidos para atender às necessidades que surgiram com o avanço das integrações.
Serviço | Descrição |
---|---|
Consultar Documento do Processo | Consulta o documento de um dado processo. |
Exportar Documento em PDF | Exporta documento como PDF, documentos HTML que estejam assinados. |
Listar Documentos do Processo | Lista os documentos de um dado processo. |
Listar Documentos Incluídos | Lista os documentos que foram incluídos pelo Broker. |
Listar Documentos por Interessado | Lista os documentos de um determinado interessado. |
Listar Processos | Lista e filtra processos. |
Listar Processos por Interessado | Lista os processo de um determinado interessado. |
Listar Tarefas | Lista as tarefas do SEI, necessário para lançar e listar andamentos do processo. |
Listar Tipos de Contato | Lista os tipos de contatos existentes. |
Listar Unidades do Processo | Lista as unidades onde o processo está aberto. |
Autenticação e Autorização
A autenticação no SEI-Broker é feita através do HTTP Basic e a autorização é baseada em roles/papéis que são atribuídas ao usuário. Os sistemas que utilizarão o broker precisarão de um usuário, esse usuário deve ser previamente cadastrados em uma fonte de dados e receber a role correspondente às suas necessidades. Esses dados serão verificados pelo security-domain ans-ws-auth
que foi configurado no JBoss.
Roles/Papéis
Existem duas roles de acesso ao Broker, uma com acesso a todas funcionalidades e outra somente para consulta. As roles precisam ter o nome idêntico ao definido no Broker, caso haja divergência o acesso será negado pelo JAAS.
Role | Descrição |
---|---|
RO_SEI_BROKER | Perfil com acesso a todas as funcionalidades do SEI-Broker |
RO_SEI_BROKER_CONSULTA | Perfil com acesso a todas as consultas. |
Templates documentos internos
Através do Broker é possível preencher templates em HTML e incluí-los como documentos internos no SEI. O Objetivo é facilitar o desenvolvimento, aumentar a manutenibilidade e tornar os documentos mais ricos e dinâmicos.
Os templates usados no Broker são criados utilizando a ferramenta Mustache e devem ser cadastrados no Gerenciador de Templates, durante a inclusão do documento o templates-broker será consultado. O código em HTML gerado pelo SEI-Broker será inserido dentro do campo conteúdo do modelo de documento feito no SEI. Os detalhes da utilização estão na documentação da API.
É preciso deixar claro que os templates do broker não substituem o modelo de documento do SEI.
Monitoramento do SEI-Broker
O SEI-Broker oferece três serviços de monitoramento, esses serviços verificam as principais conexões do broker.
Monitoramento | URL |
---|---|
Conexão SEI-Broker X MySQL | http:///sei-broker/service/info/conexoes/mysql |
Conexão SEI-Broker X Oracle | http:///sei-broker/service/info/conexoes/oracle |
Conexão SEI-Broker X SEI | http:///sei-broker/service/info/conexoes/sei |
Os serviços respondem com HTTP status 200 caso as conexões estejam ativas, qualquer outro status é considerado como erro de conexão.