-
Notifications
You must be signed in to change notification settings - Fork 94
ImportacaoXML
O SIGA possui uma base de dados de usuários e órgãos que são alimentadas via arquivos XML. Este documento possui informações referentes a essa importação de dados.
O SIGA importa a base de usuários de arquivos XML em um formato pré-definido e insere os dados em seu banco de dados.
A importação é realizada pelo módulo ImportarXML que é um arquivo jar programado para ser executado periodicamente.
Antes de importar o XML para o seu banco de dados, você deve criar o órgão diretamente no banco de dados. Segue o comando de exemplo:
Insert
into CP_ORGAO_USUARIO (ID_ORGAO_USU,NM_ORGAO_USU,MUNICIPIO_ORGAO_USU,SIGLA_ORGAO_USU,UF_ORGAO_USU,ACRONIMO_ORGAO_USU)
values (102,'Tribunal de Justiça do Estado do Rio de Janeiro','Rio de Janeiro','JR','RJ','TJRX');
Onde:
- ID_ORGAO_USU: ID do órgão. Qualquer ID livre para a tabela cp_orgao_usuario
- NM_ORGAO_USU: Nome por extenso do órgão
- MUNICIPIO_ORGAO_USU: Munício on de está localizado o órgão
- SIGLA_ORGAO_USU: corresponde às duas letras que devem ser acrescentadas à matrícula do durante o login (SIGLA+MATRICULA, por exemplo JR12345)
- UF_ORGAO_USU: Sigla da unidade federativa
- ACRONIMO_ORGAO_USU: corresponde ao campo orgaoUsuario do XML
FUNCIONA APENAS NO JAVA 7
Faça o donwload do importador de XML na página Versoes do Siga. A última versão do importador está na versão 5.4.12.2 com o nome siga-cp-sinc-one.jar
FUNCIONA APENAS NO JAVA 8 ANTES DA VERSÃO 10
Faça o donwload do importador de XML na página Versoes do Siga. A última versão do importador está na versão 9.0.0.5f com o nome siga-cp-sinc-one.jar
O programa importador espera como entrada um arquivo XML com os dados a serem inseridos no banco de dados. Então, será necessário montá-lo (exportar o XML com os dados de algum sistema existente ou construí-lo manualmente). Para obter informações detalhadas sobre como criar seu próprio arquivo XML, veja Dados Corporativos.
Apenas como exemplo, salve o XML abaixo com o nome arquivo.xml:
OBS: Altere o campo orgaoUsuario="ZZ" pelo valor definido em SIGLA_ORGAO_USU (descrito na seção "Criando o seu órgão no banco de dados" acima)
<?xml version="1.0" encoding="UTF-8"?>
<base orgaoUsuario="ZZ">
<cargos>
<cargo nome="ANALISTA JUDICIARIO" id="240001" />
</cargos>
<funcoes>
<funcao nome="ASSISTENTE I" id="3" />
</funcoes>
<lotacoes>
<lotacao nome="DESENVOLVIMENTO" id="8631" idPai="8630" sigla="DESENV" />
<lotacao nome="SECRETARIA DE INFORMÁTICA" id="8630" idPai="" sigla="INFO" />
</lotacoes>
<pessoas>
<pessoa nome="ANGELICA" id="148238" funcaoConfianca="" email="[email protected]" lotacao="8631" situacao="1"
cargo="240001" matricula="32017" grauInstrucao="" tipoSanguineo="A+" naturalidade="SC" nacionalidade="BRASILEIRA"
dtNascimento="17091976" sexo="F" cpf="11111111111" rua="" bairro="" cidade="" uf="" cep="" dtInicioExercicio=""
atoNomeacao="" dtNomeacao="" dtAtoPublicacao="" dtPosse="" padraoReferencia="" rg="12345678-9" rgOrgao="DIC"
rgUf="" rgDtExp="02072008" estCivil="" sigla="AHP" tipo="" />
</pessoas>
</base>
É necessário criar um arquivo de propriedades contendo as configurações de conexão ao banco e servidor de e-mail para enviar as notificações de importação. Segue exemplo de arquivo de propriedade chamado siga.properties:
########################
### siga.cp.sinc.xml ##
########################
#Envio de Email
siga.cp.sinc.xml.servidor.smtp=SERVIDOR_DE_EMAIL
siga.cp.sinc.xml.servidor.debug=false
siga.cp.sinc.xml.servidor.usuario.remetente=Administrador do SIGA<[email protected]>
# Destinatário dos emails
siga.cp.sinc.xml.lista.destinatario=EMAIL_1, EMAIL_2
#Configurações de conexão
hibernate.connection.url=jdbc:oracle:thin:@[servidor]:1521:[instancia]
hibernate.connection.username=[usuario]
hibernate.connection.password=[senha]
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
c3p0.min_size=5
c3p0.max_size=20
c3p0.timeout=300
c3p0.max_statements=50
O siga-cp-sinc.one-jar.jar deve ser executado da seguinte maneira:
java [-Dsiga.properties.file=CAMINHO_DO_ARQUIVO_siga.properties] -jar [CAMINHO_DO_ARQUIVO]/siga-cp-sinc.one-jar.jar -[ambiente] -[localidade]
Onde:
- *ambiente: desenv, prod ou homolo
- *localidade: sjrj,trf2, sjes ou -url=ENDEREÇO_DE_UM_XML_A_SER_IMPORTADO
Obs.: Se o arquivo siga.properties estiver no mesmo diretório do siga-cp-sinc.one-jar.jar, o parâmetro -Dsiga.properties.file pode ser omitido.
Exemplo 1 (Arquivo no file system)
java -Dsiga.properties.file=[CAMINHO_DO_ARQUIVO]/siga.properties -jar [CAMINHO_DO_ARQUIVO]/siga-cp-sinc.one-jar.jar -desenv -url file:///arquivo.xml
Exemplo 2:
java -Dsiga.properties.file=[CAMINHO_DO_ARQUIVO]/siga.properties -jar [CAMINHO_DO_ARQUIVO]/siga-cp-sinc.one-jar.jar -desenv -url http://127.0.0.1/arquivo.xml
ou
java -Dsiga.properties.file=[CAMINHO_DO_ARQUIVO]/siga.properties -jar [CAMINHO_DO_ARQUIVO]/siga-cp-sinc.one-jar.jar -homolo -trf2
Configure o cron (através do comando crontab -e
no linux) para executar periodicamente o siga-cp-sinc.one-jar.jar.
(Se você não sabe o que é o cron, tente começar por aqui)
Exemplo de cron:
#Prod - manhã----------------------------------------------
0 3 * * * java -Dsiga.properties.file=/usr/local/jboss4/server/default/conf/siga.properties -jar /home/tomcat/importarxml.jar -prod -sjrj
0 1 * * * java -Dsiga.properties.file=/usr/local/jboss4/server/default/conf/siga.properties -jar /home/tomcat/importarxml.jar -prod -sjes
0 2 * * * java -Dsiga.properties.file=/usr/local/jboss4/server/default/conf/siga.properties -jar /home/tomcat/importarxml.jar -prod -trf2
0 4 * * * java -Dsiga.properties.file=/usr/local/jboss4/server/default/conf/siga.properties -jar /home/tomcat/importarxml.jar -prod -url http://127.0.0.1/arquivo.xml
O processo de importação se dá de forma automática (agendada), com execução diária. É executado pelo seguinte comando java: java -jar /home/tomcat/ImportarXml.jar -prod –sjrj
O primeiro parâmetro indica se a importação se dá na produção, desenvolvimento ou homologação. O segundo, informa qual a base (ou órgão usuário) está sendo importado.
O arquivo /ImportarXml/src/application.properties do pacote br.gov.jfrj.importar possui os atributos necessários à execução do programa, como:
- O nome do servidor smtp;
- Se o programa executará em ‘debug’ ou não;
- Os endereços de e-mail para onde o programa enviará o resultado da execução do mesmo;
- As URL onde o programa encontrará o arquivo XML que executará para cada órgão usuário.
`FUNCIONA APENAS DA VERSÃO 9.0.17.1 EM DIANTE
Em versões mais recentes do Siga, é possível fazer a importação enviando o XML para uma webservice do próprio sistema, não sendo mais necessária a utilização do ImportarXml.jar.
Nos exemplos abaixo utilizaremos o seguinte arquivo XML:
<?xml version="1.0" encoding="UTF-8"?>
<base orgaoUsuario="TESTE">
<cargos>
<cargo nome="ANALISTA JUDICIARIO" id="250001" />
</cargos>
<funcoes>
<funcao nome="ASSISTENTE I" id="3" />
</funcoes>
<lotacoes>
<lotacao nome="DESENVOLVIMENTO" id="8631" idPai="8630" sigla="DESENV" />
<lotacao nome="SECRETARIA DE INFORMÁTICA" id="8630" idPai="" sigla="INFO" />
</lotacoes>
<pessoas>
<pessoa nome="ANGELICA" id="148238" funcaoConfianca="" email="[email protected]" lotacao="8631" situacao="1"
cargo="250001" matricula="32017" grauInstrucao="" tipoSanguineo="A+" naturalidade="SC" nacionalidade="BRASILEIRA"
dtNascimento="17091976" sexo="F" cpf="11111111111" rua="" bairro="" cidade="" uf="" cep="" dtInicioExercicio=""
atoNomeacao="" dtNomeacao="" dtAtoPublicacao="" dtPosse="" padraoReferencia="" rg="12345678-9" rgOrgao="DIC"
rgUf="" rgDtExp="02072008" estCivil="" sigla="AHP" tipo="" />
</pessoas>
</base>
O XML acima pressupõe a existência de um órgão usuário com o acrônimo 'TESTE' na tabela cp_orgao_usuario
. Para criá-lo, conecte-se com o banco de dados e realize o seguinte commando:
INSERT INTO corporativo.cp_orgao_usuario (ID_ORGAO_USU, NM_ORGAO_USU, MUNICIPIO_ORGAO_USU, SIGLA_ORGAO_USU, ACRONIMO_ORGAO_USU) VALUES ('1', 'ORGAO DE TESTE TT', 'Rio de Janeiro', 'TT', 'TESTE');
Será necessário definir uma propriedade do JBoss, no arquivo standalone.xml, chamada siga.sinc.password. Utilize uma senha bem complexa, como por exemplo uma GUID:
<property name="siga.sinc.password" value="***GUID***"/>
Depois, envie o XML para o Siga utilizando um comando do tipo:
$ curl -H "Authorization: ***GUID***" -F file=@./exemplo.xml \
"http://localhost:8080/siga/public/app/admin/sinc?sigla=TESTE&maxSinc=100&modoLog=true"
Estando tudo correto, será retornado um JSON que, entre outros parâmetros, apresentará o log da importação:
{
"maxSinc": 100,
"modoLog": true,
"sigla": "TESTE",
"log": [
"--- Processando Tue Mar 03 13:37:37 BRT 2020 ---",
"*** MODO LOG: use -modoLog=false para sair do modo LOG e escrever as alterações",
"MAX SINC = 100",
"Importando: XML",
"XML confirma órgão usuário: TESTE (2)",
"Importando: BD",
"Gravando alterações",
"Incluindo: ASSISTENTE I (0)",
"Incluindo: ANALISTA JUDICIARIO (0)",
"Incluindo: SECRETARIA DE INFORMÁTICA (0)",
"Incluindo: DESENVOLVIMENTO (1)",
"Incluindo: ANGELICA (2)",
"*** 32017",
"*** MODO LOG: as alterações não serão efetivadas! Executando rollback...",
"Total de alterações: 5",
"Tempo total de execução: 0 segundos (0 min)",
" ---- Fim do Processamento --- "
]
}
Quando modoLog=true
, o log é apresentado, mas as alterações não são efetivadas, porque é feito um rollback no banco de dados. Para efetivá-las, use modoLog=false
e verá um resultado assim:
{
"maxSinc": 100,
"modoLog": false,
"sigla": "TESTE",
"log": [
"--- Processando Tue Mar 03 13:42:03 BRT 2020 ---",
"MAX SINC = 100",
"Importando: XML",
"XML confirma órgão usuário: TESTE (2)",
"Importando: BD",
"Gravando alterações",
"Incluindo: SECRETARIA DE INFORMÁTICA (0)",
"Incluindo: ASSISTENTE I (0)",
"Incluindo: ANALISTA JUDICIARIO (0)",
"Incluindo: DESENVOLVIMENTO (1)",
"Incluindo: ANGELICA (2)",
"*** 32017",
"Transação confirmada",
"Total de alterações: 5",
"Tempo total de execução: 0 segundos (0 min)",
" ---- Fim do Processamento --- "
]
}
Caso ocorra algum tipo de erro, como por exemplo se a sigla informada na URL não for a mesma existente na propriedade orgaoUsuario
do XML, será retornado um erro como este:
{
"errordetails": [{
"stacktrace": "java.lang.Exception: Sigla de órgão usuário desconhecida: TESTE2\n\tat br.gov.jfrj.siga.cp.util.SigaCpSinc.importarXml(SigaCpSinc.java:498)\n\tat br.gov.jfrj.siga.cp.util.SigaCpSinc.importxml(SigaCpSinc.java:311)\n\tat br.gov.jfrj.siga.vraptor.SincController.sinc(SincController.java:43)\n",
"service": "sigadocsigner",
"context": "/siga"
}],
"errormsg": "Sigla de órgão usuário desconhecida: TESTE2"
}