Hipátia

Manual barramento Hipatia

Instalando o Hipátia

Pré-requisitos

Para que a instalação do Hipátia seja executada, é necessário que o Archivematica já esteja instalado em uma máquina local, pois o barramento se encontrará na mesma máquina, que deverá possuir ou ubuntu ou Red Hat como seu sistema operacional. Além disso, o funcionamento do barramento depende de suas bibliotecas previamente instaladas e de todo pacote python.

Por se tratar de um software local, não é necessário que o Hipátia tenha conexão e hospedagem Web, mas é importante lembrar que uma conexão é necessária para que seja feita a coleta de dados no Banco de Dados e para que o Archivematica opere corretamente.

Importante: para a realização de toda a instalação e configuração, é preciso que esteja sendo utilizado o usuário ibict, não efetuando através do sudo os comandos, pois isso impactará de forma negativa no funcionamento do barramento e em alguns processos da instalação.

Inicialmente você precisará através do comando git clone, enviar para a máquina a ser utilizada todos os diretórios do barramento. O local onde o Hipátia deverá ser posto é na raiz do diretório opt. 

A princípio, deverá ser pego o repositório barramento, arquivos e o do sistema a ser utilizado. O barramento será a raiz de todo o Hipátia, enquanto o arquivos deverá estar dentro do barramento, em sua raiz. Já o repositório dos sistemas a serem utilizados deverão ser inseridos dentro da pasta sistemas.

XML

O Arquivo XML é a parte fundamental do Hipátia. Nele é feito toda a configuração de conexões, integrações e mapeamentos a serem feitos. Mais a frente será abordado de forma completa o seu funcionamento, por momento precisaremos apenas de suas estruturas para a conexão com o banco de dados e a integração com o Archivematica.

Para poder alterar o arquivo, utilize o comando nano nomedosistema.XML,  onde iremos editar o bloco de conexão como banco de dados e mais tarde com o Archivematica.

Em relação ao banco de dados, utilizaremos a seguinte estrutura:

  • Driver: contém o nome do driver a ser utilizado;
  • Server: URL para acessar o banco de dados;
  • Port: porta para a conexão;
  • Database: nome do banco a ser consultado;
  • UID: nome de usuário no Banco;
  • Pwd: Senha de acesso ao banco.

Configuração do Driver de conexão ao Banco 

A conexão do barramento com o banco de dados depende de certas configurações necessárias. Para instalar o unixodbc, utilizado para realizar as conexões com o banco de dados, execute no terminal do linux o comando sudo apt-get install unixodbc-dev

Inicialmente, transfira o driver do banco de dados utilizado para a raiz do diretório opt. Em seguida, acesse e edite o arquivo etc/odbcinst.ini com essas informações:

[MySQL] : será o nome utilizado na chamada do barramento.

Description: (opcional) detalhes sobre qual é o driver que se refere.

Driver: diretório do driver que possui o arquivo .so dentro dele.

Fileusage: (valor fixo) deverá ser preenchido com 1.

Bibliotecas do barramento

É fundamental que a máquina que hospedará o barramento possua o Python 3 ou qualquer versão posterior instalada. Para isso, execute o comando apt install pytohn3-pip em um Terminal do Linux. Caso não possua conhecimento se há ou qual a versão do python possua, utilize o comando python3 -v.

O funcionamento de todo o código fonte do barramento depende de que haja certas bibliotecas instaladas. Para isso, é preciso efetuar a instalação das seguintes bibliotecas:

  • np

  • numpy

  • schedule

  • pyodbc

  • zeep

  • datetime

  • requests

A instalação dessas bibliotecas deverão ser feitas manualmente em um Terminal do Linux. Execute o comando pip install seguido do nome da biblioteca.

ex: pip install numpy

Atenção: Caso  após a instalação o barramento aponte que estão faltando essas bibliotecas, é porque a instalação foi feita no python2 do Archivematica, enquanto o barramento utiliza o o python3. Para resolver isto, execute o comando apt install python3-pip e realize a instalação das bibliotecas substituindo pip por pip3.

O Hipátia não possui interface gráfica e por isso trabalha em segundo plano. Para o seu funcionamento de forma automatizada, é utilizado o comando crontab, onde é feito o seu agendamento de execução no sistema.

Archivematica

Além do Archivematica, é preciso que você já possua o método que será obtido os metadados, se será por conexão do Banco de Dados ou consultas a um ou mais Web Services.

Já o ambiente necessário para a instalação do Archivematica, é preciso que seu espaço de armazenamento seja calculado baseando-se em uma média de três vezes o tamanho já utilizado pelos arquivos a serem preservados, pois durante o processo de preservação, o Archivematica busca preservar o arquivo original e criar cópias de leitura desses arquivos.

Para a instalação do Archivematica acesse:

Nota: o Archivematica possui internamente o python 2 para o funcionamento de alguns de seus recursos. Apenas ressaltamos que não é necessário desinstalar ele devido o barramento necessitar do python 3, pois é possível utilizar ambas simultaneamente sem que haja conflitos.

Para que a plataforma haja de forma autônoma, é preciso efetuar a definição padrão de respostas para as perguntas efetuadas durante o processo de preservação e transferência do Archivematica. Para isso, acesse a aba de Admin e selecione Edit no default.

Siga as configurações abaixo para a automação:

Obs. Pode ocorrer de durante a parte do Ingest seja realizada as seguintes perguntas, que para isso você deverá responder da seguinte forma:

  • Job Transcribe SIP contents? YES

 Job Bind PIDs ? NO

Integrando com o Archivematica

Sua integração com o Archivematica é feita através de procedimentos feitos em ambos os lados. Na parte do Archivematica, é feita a definição de opções na aba Administration. Já no Hipátia, é a utilização do arquivo XML de configuração do barramento.

Hipátia

é preciso que você tenha e preencha as seguintes informações no arquivo XML dentro da tag fileserver:

  • Server: URL do Archivematica;
  • Port: porta utilizada para acesso ao Archivematica;
  • User: usuário de acesso ao Archivematica;
  • Api_key: Chave necessária para que o barramento acesse o Storage Service;
  • Folder_uuid: Chave endereço da pasta onde será enviado o pacote a ser preservado;
  • Package_type: Tipo de transferência que o barramento deverá utilizar. Poderá ser Standard ou Zipped Bag, caso seja enviado um pacote no formato BagIt.

Archivematica

Dentro do Archivematica, após efetuar o login na plataforma, você precisa acessar a aba Administration no menu:

No final da página, haverá uma chave em vermelho, conforme abaixo. Esta é a API key de seu usuário do Archivematica, sendo necessária para a configuração do barramento.

Caso esta chave não esteja sendo exibida, basta selecionar o checkbox Regenerate API key que se localiza também no final da página.

Já no Archival Storage do Archivematica, é preciso logar e acessar a aba Locations. Nela, você precisará obter o UUID do Transfer Source e adicioná-lo a chave folder_uuid no arquivo XML.

Também é necessário que seja editado o Path do Transfer Source. Para isso, basta clicar em edit e alterar o path para o diretório documentos do seu barramento – /opt/barramento/documentos.

Obs. é altamente recomendado que ao invés de utilizar o UUID deste Transfer Source, seja criado um novo Location utilizando o diretório citado anteriormente.

Testando Suas Configurações

Com todas as configurações necessárias feitas, basta no terminal executar o comando “python3 ClasseGeral.py” para inicializar o barramento*.

* Lembrando que você precisa estar no diretório deste arquivo para executá-lo. Diretório: /opt/barramento/ClasseGeral.py

Caso esteja todas as configurações feitas corretamente, o barramento irá executar normalmente e você poderá no final conferir o Dashboard do Archivematica para se certificar de que o  pacote foi enviado para a plataforma e está sendo transferido. Certifique-se de que todos os microsserviços do Archivematica foram executados sem falha*. 

*pode ocorrer de alguns microsserviços apresentarem falhas dependendo de quais configurações foram selecionadas. Por isso é necessário uma análise do que apresentou falha para identificar se a falha foi programada (exemplo: não deverá efetuar o DIP) ou não.

Em seguida, o pacote irá para a aba de Ingest, onde você deverá repetir o procedimento e olhar os microsserviços.  Caso seja concluído com sucesso, basta acessar o Archival Storage e baixar o pacote preservado.

Após o download, acesse o arquivo compactado. Dentro da pasta data você encontrará o arquivo METS. Para se certificar de que os metadados foram tratados corretamente e interpretados pelo Archivematica, você deverá abrir este arquivo e  verificar.

Definição dos arquivos do barramento

  • ConexaoBancoDje.py

Responsável por extrair as configurações do banco de dados no XML e realizar a conexão.

  • ConsultaDje.py

Uma vez que a conexão ao banco de dados foi realizada com sucesso, o objetivo deste arquivo é executar as consultas que também estão localizadas no arquivo XML.

  • Dje.xml

Principal arquivo para o funcionamento do barramento. Nele, está alocado informações necessárias para realizar conexões ao banco de dados e Archivematica, além também de todo mapeamento de metadados a serem extraídos e consultas a serem executadas. Posteriormente será explicado mais detalhadamente sobre seu funcionamento.

  • MetadatasDje.py

Sua funcionalidade principal é, uma vez que as consultas ao banco de dados foram realizadas, é preciso selecionar, extrair e tratar os metadados obtidos, atribuindo eles aos seus respectivos campos da tabela de metadados do XML.

  • Pasta JOB

Originalmente o arquivo job.py possuía muitas funcionalidades. Para uma melhor otimização e organização do código, este arquivo foi segmentado em outros arquivos python, contendo os seguintes items:

    • BaixarArquivos.py

Executa o download do Diário de Justiça direto da URL do TJDFT.

    • CriarCheckSum.py

Cria o arquivo checksum.MD5, responsável por garantir integridade ao pacote a ser preservado.

    • CriarCsv.py

Realiza a criação do arquivo CSV, contendo os metadados extraídos no formato tabela de chave-valor. 

    • CriarDiretorios.py

Realiza a criação dos diretórios metadata e submissionDocumentation para o pacote de preservação.

    • CriarSubmissionDocumentation.py

Realiza uma função semelhante ao CriarCsv.py, porém o arquivo CSV criado carrega consigo os metadados dos arquivos que encontram-se dentro da pasta submissionDocumentation.

    • __init__.py

Função que carrega os imports locais necessários para o funcionamento correto do Hipátia.

  • Configuração de metadados

O XML possui atualmente 3 tags de categorias: connections, fileserver e mapping. dentro destas tags há todas as informações necessárias para o funcionamento do barramento.

    • Connections

Na tag connections é onde ficarão as configurações necessárias para se conectar ao banco de dados onde encontra-se os metadados. 

    • Fileserver

Dentro de fileserver, você insere as informações que serão precisas para que o barramento possa enviar para o Archivematica.

    • Mapping

Já a tag mapping, responsável por mapear os metadados, possui 3 sub-níveis. No primeiro, chamado de metadatas, temos os metadados que precisam de tratamento para serem preservados. 

Dentro de sua tag, há também uma chave chamada table que possui como valor o nome da tabela no banco de dados onde os metadados dessa tag serão adquiridos.

Já nos itens dentro de metadatas, podemos ver conforme imagem abaixo, que existe uma tag para cada metadado. Sua composição é formada pelo nome do metadado como tag, enquanto o text possui a fórmula de como será salvo esta informação. Pegamos  a tag nomePasta como exemplo: os valores entre aspas simples serão parte da string a ser formada, enquanto o que está fora serão interpretadas pelo barramento como valores a serem buscados no banco de dados. Atribuindo um valor de “2018” para Ano e “105” para Numero, a sua forma final ficará como “dje_2018_105” e será atribuída ao metadado nomePasta.

Para a segunda tag do Mapping, também chamado de metadatas (porém não possui nenhuma chave como por exemplo, table), estará os metadados de valor fixo, ou seja, são informações que não precisam serem consultadas em um banco de dados devido todos os diários possuírem o mesmo valor para este metadado. Sua composição segue também a mesma fórmula da tag anterior, possuindo o nome do metadado (chave) em sua tag e no campo text, o seu conteúdo (valor).

A terceira tag chamada submitionDocumentation possui a finalidade de conter a query a ser feita no banco de dados para buscar informações mais precisas e complexas, como por exemplo, quais diários estarão aptos a serem tratados pelo barramento e enviados para a preservação. Neste caso, a tag possui apenas o nome para melhor identificação, pois o que será utilizado será o seu conteúdo do campo text, onde possui a query a ser utilizada.

 

Dúvidas e sugestões, acesse nosso fórum de discussões