Archimista 1.2.1 ArchimistaWeb 1.0.0

Transcript

Archimista 1.2.1 ArchimistaWeb 1.0.0
PROGETTO ARCHIMISTA
DOCUMENTAZIONE SW
Archimista 1.2.1
ArchimistaWeb 1.0.0
STATO DELLE REVISIONI
VS
DATA
Attività
Contributo di
1.0
2015-11-25
Inserimento premessa e impaginazione
0.6
2015-07-10
Punto 1.2 inizio bozza: generale e esempio con creator
S. Vassallo
0.5
2015-07-05
Punto 2 prima bozza (manca unità e schede ICCD)
S. Vassallo
0.3
2015-07-01
Punti 3 – 4 – 5 – 6 – 7 prima bozza
S. Vassallo
0.1
2015-06-10
Prima redazione
S. Vassallo
PoliMI_SABR_PC
Pagina:
Archimista documentazione software
1 / 58
INDICE
1.
Architettura di sistema ............................................................................................................ 3
1.1.
Prerequisiti hardware e software........................................................................................ 3
1.1.1. Prerequisiti specifici per Archimista ............................................................................... 3
1.1.2. Prerequisiti specifici per ArchimistaWeb ........................................................................ 4
1.2.
Moduli e layer applicativi: descrizione funzioni e relazioni tra le parti con relativi diagrammi
esplicativi ....................................................................................................................................... 4
1.2.1. Un esempio base completo: i metodi per i creators (soggetti produttori) ........................11
2.
BASE DATI ..............................................................................................................................14
2.1.
Complesso archivistico (fond) ...........................................................................................15
2.2.
Soggetto produttore (creator)............................................................................................25
2.3.
Soggetto conservatore (custodian) ...................................................................................34
2.4.
Oggetti digitali (digital_objects) .........................................................................................41
2.5.
Relazioni di fonti con Complessi, unità, produttori, conservatori ........................................43
2.6.
Relazioni del complesso archivistico (con produttori, conservatori, progetti, profilo
documentario, indici) .....................................................................................................................48
2.7.
Relazioni del soggetto produttore con produttori e profili istituzionali .................................49
2.8.
Relazioni del soggetto conservatore .................................................................................49
3.
Funzionalità di gestione .........................................................................................................50
4.
Procedure di installazione (GNU/Linux) ................................................................................51
4.1.
Installazione di Archimista ................................................................................................51
4.1.1. Installazione prerequisiti ...............................................................................................51
4.1.2. Installare Ruby con RVM ..............................................................................................51
4.1.3. Installare Rails e le gemme richieste da Archimista ......................................................52
4.1.4. Installare il database ....................................................................................................52
4.1.5. Installare Archimista .....................................................................................................52
4.1.6. Installare e configurare il webserver .............................................................................53
4.2.
Installazione di Archimista-web .........................................................................................54
4.2.1. Installazione prerequisiti ...............................................................................................54
4.2.2. Installare Ruby con RVM ..............................................................................................55
4.2.3. Installare ArchimistaWeb ..............................................................................................55
4.2.4. Installare e configurare il webserver .............................................................................56
5.
Procedure di BACKup, ripristino e manutenzione della base dati .......................................57
6.
Funzionalità di import/Export di registrazione e dei documenti collegati............................58
7.
Descrizione dei log applicativi, delle principali segnalazioni di errore e delle eventuali
azioni da intraprendere ...................................................................................................................58
Pagina:
Archimista documentazione software
2 / 58
0. Premessa
Il documento è stato realizzato per consentire al progetto Archimista di rendere disponibile a
utenti e sviluppatori la condivisione della documentazione sw delle versioni Archimista 1.2.1
e ArchimistaWeb 1.0.0.
Nel corso dell’avanzamento del progetto, il documento sarà aggiornamento alla versione di
Archimista 2.0.0 e alle successive versioni di Archimista e ArchimistaWeb.
Per informazioni sul progetto consultare il sito ufficiale di Archimista www.archimista.it e in
particolare la sezione Download.
1. Architettura di sistema
1.1.
Prerequisiti hardware e software
Archimista e ArchimistaWeb sono due applicazioni web. Lato server richiedono un
qualunque server web con i prerequisiti software indicati di seguito, lato client è necessario
un browser moderno (soprattutto per quello che riguarda ArchimistaWeb) come Internet
Explorer versione 9 o superiore, Safari 5.1 o superiori, Opera 12.1 o superiore o una delle
recenti versioni di Chrome e Firefox.
1.1.1.
Prerequisiti specifici per Archimista
Nella versione server requisiti software sono:






Ruby 1.8.7
Rails 2.3.17
Varie gemme (si veda le indicazioni per l’installazioni al punto 4.1)
Webserver configurato per applicazioni rails
Uno fra i database supportati (mysql, sqlite, postgresql)
Imagemagick per la gestione degli oggetti digitali
Nel caso di Archimista è disponibile anche un installer per windows che si occupa di
installare le componenti server. In questo caso si consiglia l’utilizzo di un computer con
almeno 1gb di RAM e con sistema operativo Windows xp o superiore.
Nota bene: su sistema operativo Windows 7 (o, in generale, sulle versioni di Windows da
Vista in avanti) verrà richiesta l’esecuzione con privilegi di amministrazione. Inoltre il
database sarà installato direttamente nella cartella del programma, ciò significa che sarà
necessario avere sempre i privilegi di scrittura su quella cartella.
Qualora si utilizzasse un account senza privilegi di amministratore e, dunque, senza
possibilità di scrittura nella cartella “db” all’interno della cartella principale, si consiglia di
modificare il file .\config\database.yml per indicare un’altra posizione su cui si hanno privilegi
di scrittura. Si noti che ruby richiede l'uso della slash (/) invece del backslash (\) tipico di
Windows nel’indicazione del percorso.
Pagina:
Archimista documentazione software
3 / 58
1.1.2.
Prerequisiti specifici per ArchimistaWeb
Requisiti software:






Ruby 2.1.5
Rails 3.2.2.1
Gemme indicate nel Gemfile
Mysql 5.1 o superiore
Sphinx 2.2.5 (motore di ricerca testuale)
Webserver configurato per applicazioni rails
1.2. Moduli e layer applicativi: descrizione funzioni e relazioni tra
le parti con relativi diagrammi esplicativi
Il cuore di una qualunque applicazione rails è il file config/routes.rb.
Lo scopo della routes e quella di istradare le richieste al corretto controller e alla specifica
azione (con azione si intende il metodo all’interno del controller che viene richiamato) a
seconda della URL e del verbo http usato (GET, POST, PUT, DELETE).
Aldilà della sintassi usata per scrivere le informazioni nel file routes.rb (sintassi che varia a
seconda della versione Rails utilizzata) è possibile avere il dettaglio di tutte le route
dichiarate attraverso il comando
rake routes
Ad esempio :
root
/
/about
{:controller = >“site”,
{:controller = >“site”,
:action =>”dashboard”}
:action =>”about”}
si definisce esplicitamente qual è il root del sito e si indica che quando ci si college alla root
bisogna richiamare il controller site con il metodo dashboard.
Se invece ci si collega a /about (ad esempio su un’installazione locale
http://localhost:3000/about) viene richiamato sempre il controller site ma con il metodo about.
In realtà se si effettua una prova non avverrà nessuna delle due azioni e si verrà reindirizzati
alla pagina di login. Questo perché nel controller application_controller.rb (che si applica
all’intera applicazione) è indicato
before_filter :authenticate_user!
Un metodo di devise che controlla che l’utente sia loggato o lo rimanda alla maschera di
login (NB before_filter pur non essendo rimosso né deprecato è stato sostituito da
before_action).
Se l’utente è loggato, nel primo caso (quella della root) viene richiamato il controller site con
il metodo dashboard. Il metodo dashboard in site_controller.rb definisce solo tre contatori e a
questo punto viene richiamata la “vista” relativa. In questo caso quindi
views/site/dashboard.html.erb
seguendo
lo
schema
views/[controller]/[metodo].
Pagina:
Archimista documentazione software
4 / 58
Quando invece (se loggati) ci si collega a /about viene sempre richiamato prima
site_controller.rb ma non essendoci nessun metodo specifico per about viene direttamente
richiamata la vista views/site/about.html.erb.
Gli esempi portati sinora riguardano però solo pagine statiche. Il cuore delle applicazioni
rails, in generale, e di Archimista in particolare sono le “risorse” (resource secondo il lessico
rails, che possiamo in larga parte immaginare come le entità di Archimista).
Le “azioni” generiche previste per ogni risorsa sono sette:
1. GET tutti i record di quella risorsa (metodo index)
2. GET un record specifico (metodo show)
3. GET la pagina che permette di creare un nuovo record per quella risorsa (metodo
new)
4. POST le informazioni per creare un nuovo record per quella risorsa (metodo create)
5. GET la pagina che permette di modificare uno specifico record (metodo edit)
6. PUT le informazioni per aggiornare un record (metodo update)
7. DELETE uno specifico record (metodo destroy)
Una risorsa restful prevede tutte 3 7 questi metodo (e eventuali zioni/metodi aggiuntivi), ma
non è necessario per forza dichiarare le risorse come restful. Ad esempio in Archimista per le
lingue della documentazione (risorsa langs) è definito solo il metodo index. Ciò significa che
se si prova ad accedere in visualizzazione (metodo show) un singolo record di langs usando
lo schema classico valido per le altre risorse ([base url]/langs/[id] si ottiene un errore come
method not allowev.
Un caso diverso avviene invece per le fonti (sources). Qui la risorsa è dichiarata come
restful, quindi dovrebbe essere possibile vedere il singolo record. Dall’interfaccia non c’è un
link ai record in visualizzazione, ma se ci si collega manualmente all’indirizzo
[base_url]/sources/[id] la routes (presente) richiama il controller sources_controller.rb con il
metodo show. Il problema avviene quando viene richiamata la vista relativa, ossia il file
views/sources/show.html.erb. Qui il file è presente (altrimenti darebbe errore), ma è vuoto.
Però dal punto di vista dell’istradamento della richiesta tutto funziona correttamente, viene
richiamato il controller, l’azione/metodo show e poi visualizzato quello che c’è nella vista
collegata.
Di seguito una tabella riepilogativa delle resources di Archimista, i metodi previsti in ogni
controller (esclusi i metodi privati) e di come sono chiamate le risorse nell’interfaccia di
archimista. L’ordine delle risorse segue l’oridne in cui sono presentati nel menù a tendina
(NB il menù a tendina si trova nella vista views/shared/navbar a sua volta richiamata da
view/layouts/application.html.erb lo schema base in cui si innestano le specifiche view).
Nome in archimista
Resource
Metodi
Bacheca
site
dashboard
Complessi archivistici
fonds
treeview
tree
save_a_tree
saving_the_tree
Pagina:
Archimista documentazione software
5 / 58
trash
move_to_trash
trashed_subtree
restore_subtree
list
index
show
edit
create
ajax_create
ajax_update
merge_with
merge
update
rename
move
destroy
destroy_subtree
Soggetti produttori
creators
list
index
show
new
edit
create
update
destroy
Soggetti conservatori
custodians
list
index
show
new
edit
create
update
destroy
Unità
units
gridview
Pagina:
Archimista documentazione software
6 / 58
grid
add_rows
remove_rows
reorder_rows
classify
move
move_up
move_down
preferred_event
update_event
textfield_form
index
show_iccd
show
render_full_path
list_oa_mtc
list_oa_ogtd
list_bdm_ogtd
list_bdm_mtct
list_bdm_mtcm
new
new_iccd
edit
edit_iccd
create
update
ajax_update
destroy
Fonti
sources
list
index
show
new
edit
create
update
destroy
Pagina:
Archimista documentazione software
7 / 58
Oggetti digitali
digital_objects
all
index
new
edit
create
update
sort
bulk_destroy
destroy
Profili istituzionali
institutions
list
index
show
new
edit
create
update
destroy
Profili documentari
document_forms
list
index
show
new
edit
create
update
destroy
Progetti
projects
list
index
show
new
edit
create
update
destroy
Compilatori
editors
list
Pagina:
Archimista documentazione software
8 / 58
index
show
new
edit
create
update
destroy
modal_new
modal_create
Indici
headings
list
index
show
new
edit
create
update
destroy
modal_new
modal_link
modal_create
ajax_list
ajax_remove
ajax_link
import_csv
preview_csv
save_csv
Controllo di qualità
quality_checks
index
fond
creator
custodian
Report
reports
index
dashboard
summary
inventory
creators
Pagina:
Archimista documentazione software
9 / 58
units
labels
project
custodian
download
Importa
imports
index
new
create
destroy
Esporta
exports
index
download
Gestione utenti
users
index
show
new
edit
create
update
toggle_active
Gestione gruppi
groups
index
show
new
edit
create
update
destroy
Vocabolari
vocabularies
index
Tipologie ente
creator_corporate_types
index
Tipologie soggetto conservatore
custodian_types
index
Tipologie di fonte
source_types
index
Funzioni e occupazioni
[disattivata]
activities
index
Toponimi
places
list
index
Pagina:
Archimista documentazione software
10 / 58
cities
countries
i seguenti metodi invece
sono dichiarati, ma non sono
presenti routes e views per
usarli
new
edit
create
update
destroy
Lingue
langs
index
i seguenti metodi invece
sono dichiarati, ma non sono
presenti routes e views per
usarli
show
new
edit
create
update
destroy
Informazioni e copyright
1.2.1.
site
about
Un esempio base completo: i metodi per i creators (soggetti produttori)
Per prima cosa analizziamo quail sono le routes definite nel caso dei creators. Ancora una
volta possiamo esplicitare tutte le routes con il comando:
rake routes
Per il creators abbiamo:
list_creators
GET
/creators/list(.:format)
{:controller=>"creators", :action=>"list"}
creators
GET
/creators(.:format)
{:controller=>"creators", :action=>"index"}
POST /creators(.:format)
{:controller=>"creators",:action=>"create"}
new_creator
GET
/creators/new(.:format)
{:controller=>"creators", :action=>"new"}
Pagina:
Archimista documentazione software
11 / 58
edit_creator
GET
/creators/:id/edit(.:format)
{:controller=>"creators", :action=>"edit"}
creator
GET
/creators/:id(.:format)
{:controller=>"creators", :action=>"show"}
PUT
/creators/:id(.:format)
{:controller=>"creators",:action=>"update"}
DELETE /creators/:id(.:format)
{:controller=>"creators",:action=>"destroy"}
Iniziando dal principio cosa accade quando si seleziona il link soggetti produttori dal menù a
tendina? Il link è generato da:
<li><%= link_to t('creators'), creators_path %></li>
Link_to fa parte dei metodi della classe di metodi UrlHelper di ActrionView. Ciò che interessa
è il secondo parametro ossia l’url che viene generata attraverso creators_path dove
con il suffisso _path o _url si richiama la named routes corrispondente (NB con _path si
generano link relativi con _url assoluti).
Quindi cliccando su quel link verrà richiamato il controller creators con metodo index e sarà
visualizzata come risposta la view views/creators/index.html.erb.
Il metodo index all’interno del controller definisce solo la variabile @creators che contiene un
array di objects, ossia tutti i creator filtrati come indicati (solo quelli accessibili dal
current_user, con un determinato parametro di ricerca qualora presente etc).
La vista relativa visualizza per ogni oggetto contenuto nell’array una riga di una tabella per
mostrare alcuni dati scelti.
Ad occuparsi delle chiamate al database è ActiveRecord mentre le relazioni, la logica
funzionale, le validazioni etc sono contenuti nei corrispondenti file model per ogni classe (si
vedrà in dettaglio quello di creator, come esempio, in seguito).
Tornando all’interfaccia di archimista vediamo che dall’elenco dei soggetti produttori è
possibile effettuare quattro operazioni:




Creare un nuovo produttore dal pulsante “nuova scheda”
Modificare un produttore presente cliccando sulla sua denominazione
Visualizzare un produttore con il link “mostra”
Eliminare un produttore da destroy
Come nel caso del menù a tendina anche in questo caso si tratta di link che richiamano la
routes per sapere cosa fare.
Nel caso del pulsante per creare un nuovo produttore, questi contiene un menù a tendina
con i seguenti link:
<li><%= link_to t('C'), new_creator_path(:type => "C") %></li>
<li><%= link_to t('P'), new_creator_path(:type => "P") %></li>
<li><%= link_to t('F'), new_creator_path(:type => "F") %></l
Per ciò che è incluso nella routes new_creator richiama il controller creators con action new
e il parametro type indicato.
Pagina:
Archimista documentazione software
12 / 58
Nel caso del link alla modifica del record si avrà edit_creator_path(creator) che,
seguendo la routes, fa si che venga creato un link come creators/:id/edit che rimanda al
controller creators con azione edit.
Il pulsante mostra genera il link direttamente indicando creator, ciò fa si che venga generato
un link che include solo l’id (es /creators/3) e dunque venga richiamata la routes con azione
show. Sarebbe stato equivalente scrivere creator_path(creator).
Infine il link elimina è costruito diversamente. Ciò è dovuto al fatto che diversi browser non
supportano il verbo HTTP DELETE e per questo Rails agira l’ostacolo generando un link
(verbo GET) e inserendo nel link l’attributo HTML5 data-method=”delete”.
Pagina:
Archimista documentazione software
13 / 58
2. BASE DATI
Figura 1 ER schema generale delle relazioni
Pagina:
Archimista documentazione software
14 / 58
2.1.
Complesso archivistico (fond)
Figura 2 Schema fisico del complesso archivistico
Fonds (Complesso archivistico)
Pagina:
Archimista documentazione software
15 / 58
Colonna
id
Tipo
Commenti
int(11)
Chiave primaria autoincrementale e autoassegnata.
varchar(255)
è il path completo di tutti gli id dei livelli gerarchici
superiori separati da / se si tratta di un primo livello
sarà NULL e di conseguenza ancestry_depth sarà 0
gestito da gem ancestry
int(11)
è il corrispettivo di ancestry indica quanti livelli
gerarchici supereriori ci sono. Per il complesso di
primo livello è 0 gestito da gem ancestry
position
int(11)
Posizione relativa rispetto ai livelli fratelli es: test A1 --A.1.1 --A.1.2 A.1.1 ha position 1 A.1.2 position
2
sequence_number
int(11)
sequenza progressiva usata soprattutto per importa
struttura e per le unità
trashed
tinyint(1)
t/f se l'elemento è nel cestino o meno
trashed_ancestor_id
int(11)
l'id del livello direttamente superiore, serve per
ricomporre l'albero nel cestino
units_count
int(11)
Conto delle unità. Calcolato manualmente, include
el sottounità. Le unità complessive del fondo sono
invece calcolate dinamicamente
name
varchar(255)
Denominazione fondo. Per altre denominazioni vedi
fond_names
fond_type
varchar(255)
Tipologia del livello di descrizione. La lista viene
generate perscando le voci da terms con
vocabulary_id l'id del vocabularies con name
"fonds.Fond_type" se ne occupa il metodo
self.fond_types in model/terms.rb
length
float
Metri lineari
extent
text
Consistenza archivistica
abstract
text
Abstract
description
text
Contenuto
history
text
Storia archivistica
arrangement_note
text
Nota dell'archivista
ancestry
ancestry_depth
Pagina:
Archimista documentazione software
16 / 58
related_materials
access_condition
text
Documentazione collegata
varchar(255)
Condizione di accesso. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'fonds.access_condition'
Archimista registra nel db il valore term_value
mentre usa term_key per cercare una traduzione del
termine nei file di localizzazione
access_condition_note text
Note alla condizione di accesso
use_condition
varchar(255)
Condizione di riproduzione. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'fonds.use_condition' Archimista
registra nel db il valore term_value mentre usa
term_key per cercare una traduzione del termine nei
file di localizzazione
use_condition_note
text
Note alla condizione di riproduzione
type_materials
varchar(255)
Campo non usato, presente per retro-compatibilità?
preservation
varchar(255)
Stato di conservazione. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'fonds.preservation' Archimista
registra nel db il valore term_value mentre usa
term_key per cercare una traduzione del termine nei
file di localizzazione
preservation_note
text
Note allo stato di conservazione
description_type
varchar(255)
Campo non usato, presente per retro-compatibilità?
note
text
Appunti di servizio
created_by
int(11)
creato da, anche se non è una relazione esplicita
usa l'ID del current_user al momento della
creazione del record
updated_by
int(11)
foreign key verso la tabella User dichiarata nel
model Usato in fase di update del record
group_id
int(11)
Anche se non è una relazione esplicita si tratta
dell'id del group del current_user che crea la
scheda. NB il gruppo non cambia anche se l'user in
Pagina:
Archimista documentazione software
17 / 58
questione viene spostato di gruppo
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
legacy_parent_id
varchar(255)
id del livello direttamente superiore nel sistema
originario (visto che al momento dell'importazione
gliene viene assegnato uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
db_source
legacy_id
fond_names (nomi del complesso archivistico)
Colonna
Tipo
Commenti
int(11)
Id incrementale delle denominazioni alternative del
fondo
fond_id
int(11)
Riferimento a fonds.id (relazione fonds has many
fond_names nel model rails, non è foreign key nel
db)
name
varchar(255)
Denominazione
qualifier
varchar(255)
Tipo di denominazione. Attualmente è un campo
nascosto settato automaticamente a 'O' in
model/fonds.rb
note
text
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
id
Pagina:
Archimista documentazione software
18 / 58
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_events (date del complesso archivistico)
Colonna
Tipo
Commenti
int(11)
Id incrementale della tabella eventi (date, gestite da
archidate) collegata ai fondi
fond_id
int(11)
Riferimento a fonds.id (relazione
has_many_archidates nel model rails, non è foreign
key nel db)
preferred
tinyint(1)
t/f si riferisce a qual è l'evento preferito nel caso di
date multiple
tinyint(1)
se l'evento (data) è valida. Credo che sia usato per
importazioni pregresse visto che date non valide
non sono accettate
start_date_place
varchar(255)
luogo collegato all'estremo remoto. Presente nella
maschera solo se entrambe le opzioni di archidate
events_can_have_places e
events_have_places_when sono vere
start_date_spec
varchar(255)
idem (=), circa, post
date
data iniziale dell'estremo remoto nel formato YYYYMM-DD (esempio per 1903 è 1903-01-01, fine sec.
XIX è 1891-01-01)
start_date_to
date
data finale dell'estremo remoto nel formato YYYYMM-DD (esempio per 1903 è 1903-12-31, fine sec.
XIX è 1900-12-31)
start_date_valid
varchar(255)
Validità dell'estremo remoto C (certa), U (incerta), Q
(attribuita), UQ (incerta e attribuita)
start_date_format
varchar(255)
formato della data dell'estremo remoto: C =
secolare Y = anno YM = anno mese YMD = anno
mese giorno
start_date_display
varchar(255)
Data visualizzata (estremo remoto) es "fine sec.
XIX"
end_date_place
varchar(255)
luogo collegato all'estremo recente. Presente nella
maschera solo se entrambe le opzioni di archidate
id
is_valid
start_date_from
Pagina:
Archimista documentazione software
19 / 58
events_can_have_places e
events_have_places_when sono vere
end_date_spec
varchar(255)
idem (=), circa, post
end_date_from
date
data iniziale dell'estremo recente nel formato YYYYMM-DD
end_date_to
date
data finale dell'estremo recente nel formato YYYYMM-DD
end_date_valid
varchar(255)
Validità dell'estremo recente C (certa), U (incerta),
Q (attribuita), UQ (incerta e attribuita)
end_date_format
varchar(255)
formato della data dell'estremo recente: C =
secolare Y = anno YM = anno mese YMD = anno
mese giorno
end_date_display
varchar(255)
Data visualizzata (estremo recente)
legacy_display_date
varchar(255)
Usata per importazioni da sesamo etc
order_date
varchar(255)
stringa codificata di tutte le date in gioco usata per
confronti cronologici. Per il dettaglio si veda il
metodo in_memory_order_date
archidate/virtual_attributes.rb
note
text
note alla data
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_identifiers (codici identificativi del complesso archivistico)
Colonna
Tipo
Commenti
id
int(11)
Id incrementale della tabelle identificativi per il fondo
fond_id
int(11)
Riferimento a fonds.id (relazione fonds has many
Pagina:
Archimista documentazione software
20 / 58
fond_identifiers nel model rails, non è foreign key
nel db)
identifier
varchar(255)
Codice identificativo
identifier_source
varchar(255)
Fonte
note
text
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_editors (compilatori del complesso archivistico)
Colonna
id
Tipo
Commenti
int(11)
Id incrementale della tabelle compilatori per il fondo
int(11)
Riferimento a fonds.id (relazione fonds has many
fond_editors nel model rails, non è foreign key nel
db)
name
varchar(255)
Compilatore. Pur non essendo una relazione il
sistema propone nell'inserimento una lista basata
sui compilatori presenti (si veda il metodo list in
editors_controller.rb)
qualifier
varchar(255)
Qualifica
varchar(255)
Tipologia di intervento. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'editors_edityng_type'
Archimista registra nel db il valore term_value
mentre usa term_key per cercare una traduzione
del termine nei file di localizzazione
fond_id
editing_type
Pagina:
Archimista documentazione software
21 / 58
edited_at
date
Data intervento
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_owners (soggetti titolari)
Colonna
Tipo
Commenti
id
int(11)
Id incrementale dei 'soggetti titolari' del fondo
fond_id
int(11)
Riferimento a fonds.id (relazione fonds has many
fond_owners nel model rails, non è foreign key nel
db)
owner
varchar(255)
Soggetto titolare
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_urls (collegamenti dei fondi)
Colonna
Tipo
Commenti
id
int(11)
id incrementale della tabella per i collegamenti del
fondo
fond_id
int(11)
Riferimento a fonds.id (relazione fonds has many
Pagina:
Archimista documentazione software
22 / 58
fond_urls nel model rails, non è foreign key nel db)
url
varchar(255)
Indirizzo web
note
text
annotazioni
position
int(11)
Campo non usato
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
fond_langs (lingue del complesso archivistico)
Colonna
Tipo
Commenti
id
int(11)
id incrementale della tabella lingue della
documentazione
fond_id
int(11)
Riferimento a fonds.id (relazione fonds has many
fond_langs nel model rails, non è foreign key nel db)
code
varchar(3)
codice della lingua, fa implicitamente riferimento a
langs.code pur non essendo una foreign key né
essendo dichiarata la relazione nel modello rails
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
langs (lingue collegate al complesso dalla tabella fond_langs)
Colonna
Tipo
Commenti
Pagina:
Archimista documentazione software
23 / 58
id
int(11)
id incrementale della tabella linguaggi
code
varchar(3)
codice ISO 639-2 richiamato da fond_langs.code
code3t
varchar(3)
codice ISO 639-3
code2
varchar(2)
codice ISO 639-1
en_name
varchar(255)
nome in inglese (nb a differenza di altri vocabolari le
lingue non utilizzano i file di localizzazioni ma la
traduzione è direttamente in tabella)
fr_name
varchar(255)
nome in francese
it_name
varchar(255)
nome in italiano
t/f
active
tinyint(1)
se t (true) allora è possibile selezionarla come
lingua della documentazione per fondo o unità.
Altrimenti non compar in elenco
position
int(11)
campo non usato
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
Pagina:
Archimista documentazione software
24 / 58
2.2.
Soggetto produttore (creator)
Figura 3 Schema fisico soggetto produttore (creator)
creators (soggetto produttore)
Colonna
id
creator_type
Tipo
Commenti
int(11)
Chiave primaria autoincrementale e autoassegnata.
varchar(1)
Tipo di soggetto produttore
P = persona
F = famiglia
C = ente
si vedano anche I metodi is_person?, is_family? E
is_corporate? Definite in app/models/creators.rb
.La selezione dei termini avviene con il metodo
terms_select (helpers/application_helper.rb) in
questo caso con vocabularies.name
'creators.creator_type’ Archimista registra nel db il
valore term_value mentre usa term_key per cercare
Pagina:
Archimista documentazione software
25 / 58
una traduzione del termine nei file di localizzazione
creator_corporate_type_id int(11)
Riferimento a creator_corporate_types.id (relazione
belongs_to :creator_corporate_type definita nel
model, non è foreign key nel db)
residence
varchar(255) Sede
abstract
text
Abstract
history
text
Profilo istituzionale / biografia
legal_status
Campo non utilizzato al suo posto si usa la tabella
varchar(255) creator_legal_statuses perché la condizione
giuridica è ripetibile
note
text
Appunti di servizio
created_by
int(11)
creato da, anche se non è una relazione esplicita
usa l'ID del current_user al momento della
creazione del record
updated_by
int(11)
foreign key verso la tabella User dichiarata nel
model Usato in fase di update del record
group_id
int(11)
Anche se non è una relazione esplicita si tratta
dell'id del group del current_user che crea la
scheda. NB il gruppo non cambia anche se l'user in
questione viene spostato di gruppo
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
id del record nel sistema originario (visto che al
varchar(255) momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
legacy_parent_id
id del livello direttamente superiore nel sistema
varchar(255) originario (visto che al momento dell'importazione
gliene viene assegnato uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
creator_names (nomi del soggetto produttore)
Pagina:
Archimista documentazione software
26 / 58
Colonna
Tipo
Commenti
int(11)
Id incrementale delle denominazioni del soggetto
produttore
creator_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_names nel model rails, non è foreign
key nel db)
preferred
tinyint(1)
t/f
id
t indica che si tratta del denominazione principale
name
varchar(255)
Denominazione (nel caso di persona compilato sulla
base del first_name e second_name)
first_name
varchar(255)
Nome (per le persone)
last_name
varchar(255)
Cognome (per le persone)
note
text
Annotazioni
A = denominazione principale
AU = altra denominazione principale
PA = denominazione parallela
AC = Acronimo
OT = altra denominazione
qualifier
varchar(255)
patronymic
varchar(255)
Campo non usato
nickname
varchar(255)
Campo non usato
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
La selezione dei termini avviene con il metodo
terms_select (helpers/application_helper.rb) in
questo caso con vocabularies.name
'creator_names.qualifier’ Archimista registra nel db il
valore term_value mentre usa term_key per cercare
una traduzione del termine nei file di localizzazione
Pagina:
Archimista documentazione software
27 / 58
aggiornamento del record
creator_corporate_types (tipologia di ente)
Colonna
Tipo
Commenti
id
int(11)
Id autoincremental richiamato da
creator_corporate_type_id la lista delle tipologia di
ente viene generata dinamicamente a seconda del
contenuto di questa tabella, si veda il controller
creator_corporate_types_controller.rb
corporate_type
varchar(255)
Denominazione tipologia di ente
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
creator_events (date del soggetto produttore)
Colonna
Tipo
Commenti
int(11)
Id incrementale della tabella eventi (date, gestite da
archidate) collegata ai soggetti produttori
fond_id
int(11)
Riferimento a creators.id (relazione
has_many_archidates nel model rails, non è foreign
key nel db)
preferred
tinyint(1)
t/f si riferisce a qual è l'evento preferito nel caso di
date multiple
is_valid
tinyint(1)
se l'evento (data) è valida. Credo che sia usato per
importazioni pregresse visto che date non valide
non sono accettate
id
start_date_place
varchar(255)
luogo collegato all'estremo remoto. Presente nella
maschera solo se entrambe le opzioni di archidate
events_can_have_places e
events_have_places_when sono vere
di base ciò accade solo per i creators di tipo
persona
Pagina:
Archimista documentazione software
28 / 58
start_date_spec
varchar(255)
idem (=), circa, post
date
data iniziale dell'estremo remoto nel formato YYYYMM-DD (esempio per 1903 è 1903-01-01, fine sec.
XIX è 1891-01-01)
start_date_to
date
data finale dell'estremo remoto nel formato YYYYMM-DD (esempio per 1903 è 1903-12-31, fine sec.
XIX è 1900-12-31)
start_date_valid
varchar(255)
Validità dell'estremo remoto C (certa), U (incerta), Q
(attribuita), UQ (incerta e attribuita)
start_date_format
varchar(255)
formato della data dell'estremo remoto: C =
secolare Y = anno YM = anno mese YMD = anno
mese giorno
start_date_display
varchar(255)
Data visualizzata (estremo remoto) es "fine sec.
XIX"
start_date_from
end_date_place
varchar(255)
luogo collegato all'estremo recente. Presente nella
maschera solo se entrambe le opzioni di archidate
events_can_have_places e
events_have_places_when sono vere
di base ciò accade solo per i creators di tipo
persona
end_date_spec
varchar(255)
idem (=), circa, post
end_date_from
date
data iniziale dell'estremo recente nel formato YYYYMM-DD
end_date_to
date
data finale dell'estremo recente nel formato YYYYMM-DD
end_date_valid
varchar(255)
Validità dell'estremo recente C (certa), U (incerta),
Q (attribuita), UQ (incerta e attribuita)
end_date_format
varchar(255)
formato della data dell'estremo recente: C =
secolare Y = anno YM = anno mese YMD = anno
mese giorno
end_date_display
varchar(255)
Data visualizzata (estremo recente)
legacy_display_date
varchar(255)
Usata per importazioni da sesamo etc
order_date
varchar(255)
stringa codificata di tutte le date in gioco usata per
confronti cronologici. Per il dettaglio si veda il
Pagina:
Archimista documentazione software
29 / 58
metodo in_memory_order_date
archidate/virtual_attributes.rb
note
text
note alla data
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
creator_identifiers (codici identificativi del soggetto produttore)
Colonna
Tipo
Commenti
id
int(11)
Id incrementale della tabelle identificativi per i
soggetti produttori
creator_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_identifiers nel model rails, non è
foreign key nel db)
identifier
varchar(255)
Codice identificativo
identifier_source
varchar(255)
Fonte
note
text
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
Pagina:
Archimista documentazione software
30 / 58
creator_editors (compilatori del soggetto produttore)
Colonna
Tipo
Commenti
id
int(11)
Id incrementale della tabelle compilatori per il
soggetto produttore
creator_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_editors nel model rails, non è foreign
key nel db)
name
varchar(255)
Compilatore. Pur non essendo una relazione il
sistema propone nell'inserimento una lista basata
sui compilatori presenti (si veda il metodo list in
editors_controller.rb)
qualifier
varchar(255)
Qualifica
editing_type
varchar(255)
Tipologia di intervento. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'editors_edityng_type'
Archimista registra nel db il valore term_value
mentre usa term_key per cercare una traduzione
del termine nei file di localizzazione
edited_at
date
Data intervento
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
creator_activities (funzioni/occupazioni del soggetto produttore)
NB come si vede da Figura 3 la tabella creator_activities non è collegata alla tabella activity.
La tabella activity – attualmente non utilizzata – è pensata per fornire una lista di termini da
utilizzare per compilare il campo activity (il nome della unzione), ma non crea una relazione
con un vocabolario controllato
Pagina:
Archimista documentazione software
31 / 58
Colonna
Tipo
Commenti
id
int(11)
Id auto incrementale
creator_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_activities nel model rails, non è
foreign key nel db)
activity
varchar(255)
Nome dell’attività
note
varchar(255)
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
activities (attività – tabella attualmente non usata)
Questa tabella doveva servire per avere una base di termini da suggerire nella compilazione
delle funzioni/occupazioni del soggetto produttore (si veda il controller
activities_controller.rb).
Tuttavia fin dalle prime versioni il file activities.json (file che può essere ancora prelevato
da github) è stato rimosso in quanto il vocabolario – tratto da ULAN del Getty institute
- era solo in inglese.
creator_legal_statuses (Sato legale del soggetto produttore)
Colonna
id
creator_id
legal_status
Tipo
Commenti
int(11)
Id auto incrementale
int(11)
Riferimento a creators.id (relazione creators has
many creator_legal_statuses nel model rails, non è
foreign key nel db)
varchar(255)
Stato legale. La selezione dei termini avviene con il
metodo terms_select (helpers/application_helper.rb)
in questo caso con vocabularies.name
'creator_legal_statuses.legal_status' Archimista
registra nel db il valore term_value mentre usa
Pagina:
Archimista documentazione software
32 / 58
term_key per cercare una traduzione del termine nei
file di localizzazione
note
text
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
creator_urls (collegamenti dei soggetti produttori)
Colonna
Tipo
Commenti
int(11)
id incrementale della tabella per i collegamenti del
soggetto produttore
creator_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_urls nel model rails, non è foreign key
nel db)
url
varchar(255)
Indirizzo web
note
text
annotazioni
position
int(11)
Campo non usato
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
id
Pagina:
Archimista documentazione software
33 / 58
2.3.
Soggetto conservatore (custodian)
Figura 4 Soggetto conservatore (custodians) schema fisico
custodians (soggetto conservatore)
Colonna
Tipo
Commenti
id
int(11)
Chiave primaria autoincrementale
custodian_type_id
int(11)
Riferimento a custodian_types.id (relazione
belongs_to :custodian_types definita nel model, non
è foreign key nel db)
legal_status
varchar(2)
PU = pubblico
Pagina:
Archimista documentazione software
34 / 58
PR = private
La selezione dei termini avviene con il metodo
terms_select (helpers/application_helper.rb) in
questo caso con vocabularies.name
‘custodians.legal_status' Archimista registra nel db il
valore term_value mentre usa term_key per cercare
una traduzione del termine nei file di localizzazione
owner
varchar(255)
Campo non usato perché gli enti titolari sono
ripetibili e dunque gestiti con la tabella
custodian_owners
contact_person
varchar(255)
Referente
history
text
Cenni storici istituzionali
administrative_structure text
Struttura amministrativa
collecting_policies
text
Politiche di gestione e acquisizione
holdings
text
Patrimonio
accessibility
text
Orari e indicazioni per l'accesso ai fondi
services
text
Servizi
created_by
int(11)
creato da, anche se non è una relazione esplicita
usa l'ID del current_user al momento della
creazione del record
updated_by
int(11)
foreign key verso la tabella User dichiarata nel
model Usato in fase di update del record
group_id
int(11)
Anche se non è una relazione esplicita si tratta
dell'id del group del current_user che crea la
scheda. NB il gruppo non cambia anche se l'user in
questione viene spostato di gruppo
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
datetime
id del livello direttamente superiore nel sistema
originario (visto che al momento dell'importazione
gliene viene assegnato uno nuovo incrementale)
legacy_id
created_at
Pagina:
Archimista documentazione software
35 / 58
updated_at
datetime
campo automatico di rails, data e ora di creazione
del record
custodian_names (denominazione del soggetto conservatore)
Colonna
Tipo
Commenti
int(11)
Id incrementale delle denominazioni del soggetto
produttore
custodian_id
int(11)
Riferimento a creators.id (relazione creators has
many creator_names nel model rails, non è foreign
key nel db)
preferred
tinyint(1)
t/f
id
t indica che si tratta del denominazione principale
name
varchar(255)
Denominazione
A = denominazione principale
AU = altra denominazione principale
PA = denominazione parallela
AC = Acronimo
OT = altra denominazione
qualifier
varchar(255)
La selezione dei termini avviene con il metodo
terms_select (helpers/application_helper.rb) in
questo caso con vocabularies.name
‘custodian_names.qualifier’ Archimista registra nel
db il valore term_value mentre usa term_key per
cercare una traduzione del termine nei file di
localizzazione
note
text
Annotazione
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
Pagina:
Archimista documentazione software
36 / 58
custodian_types (macrotipologia soggetto conservatore)
Colonna
Tipo
Commenti
id
int(11)
Id autoincremental richiamato da custodian_type_id
la lista delle macrotipologie di soggetto
conservatore viene generata dinamicamente a
seconda del contenuto di questa tabella, si veda il
controller custodian_types_controller.rb
custodian_type
varchar(255)
Denominazione macrotipologia
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
custodian_identifiers (codici identificativi del soggetto conservatore)
Colonna
Tipo
Commenti
int(11)
Id incrementale della tabelle identificativi per i
soggetti conservatore
custodian_id
int(11)
Riferimento a creators.id (relazione custodians has
many custodian_identifiers nel model rails, non è
foreign key nel db)
identifier
varchar(255)
Codice identificativo
identifier_source
varchar(255)
Fonte
note
text
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
id
Pagina:
Archimista documentazione software
37 / 58
custodian_editors (compilatori del soggetto conservatore)
Colonna
Tipo
Commenti
int(11)
Id incrementale della tabelle compilatori per il
soggetto conservatore
int(11)
Riferimento a custodians.id (relazione custodians
has many custodian_editors nel model rails, non è
foreign key nel db)
name
varchar(255)
Compilatore. Pur non essendo una relazione il
sistema propone nell'inserimento una lista basata
sui compilatori presenti (si veda il metodo list in
editors_controller.rb)
qualifier
varchar(255)
Qualifica
editing_type
varchar(255)
Tipologia di intervento. La selezione dei termini
avviene con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name 'editors_edityng_type'
Archimista registra nel db il valore term_value
mentre usa term_key per cercare una traduzione
del termine nei file di localizzazione
edited_at
date
Data intervento
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
id
custodian_id
custodian_owners (ente titolare del conservatore)
Colonna
id
Tipo
int(11)
Commenti
Id incrementale della tabelle enti titolari per il
Pagina:
Archimista documentazione software
38 / 58
soggetto conservatore
custodian_id
int(11)
Riferimento a custodians.id (relazione custodians
has many custodian_owners nel model rails, non è
foreign key nel db)
owner
varchar(255)
Denominazione del titolare
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
custodian_contacts (contatti)
Colonna
Tipo
Commenti
int(11)
Id incrementale della tabelle contatti per il soggetto
conservatore
custodian_id
int(11)
Riferimento a custodians.id (relazione custodians
has many custodian_contacts nel model rails, non è
foreign key nel db)
contact
varchar(255)
Contatto
contact_type
varchar(255)
Tipo di contatto. La selezione dei termini avviene
con il metodo terms_select
(helpers/application_helper.rb) in questo caso con
vocabularies.name
‘custodian_contacts.contact_type’ Archimista
registra nel db il valore term_value mentre usa
term_key per cercare una traduzione del termine nei
file di localizzazione
contact_note
varchar(255)
Annotazioni
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
id
Pagina:
Archimista documentazione software
39 / 58
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
custodian_buildings (sede)
Colonna
id
custodian_id
Tipo
Commenti
int(11)
Id incrementale della tabelle sedi per il soggetto
conservatore
int(11)
Riferimento a custodians.id (relazione custodians
has many custodian_buildings nel model rails, non è
foreign key nel db)
custodian_building_type varchar(255)
Tipo di sede. La selezione dei termini avviene con il
metodo terms_select (helpers/application_helper.rb)
in questo caso con vocabularies.name
‘custodian_buildings.custodian_building_type’
Archimista registra nel db il valore term_value
mentre usa term_key per cercare una traduzione
del termine nei file di localizzazione
name
varchar(255)
Denominazione
description
text
Descrizione
address
varchar(255)
Indirizzo
postcode
varchar(255)
Codice postale
city
varchar(255)
Comune. Suggeriti termini presi dalla tabella place
con qualifica comune, si veda il controller
places_controller.rb
state
varchar(255)
Campo non utilizzato
country
varchar(255)
Nazione. Suggeriti termini presi dalla tabella place
con qualifica nazione, si veda il controller
places_controller.rb
db_source
varchar(255)
campo che identifica univocamente l'importazione,
Pagina:
Archimista documentazione software
40 / 58
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
custodian_urls (collegamenti dei soggetti conservatore)
Colonna
Tipo
Commenti
int(11)
id incrementale della tabella per i collegamenti del
soggetto conservatore
custodian_id
int(11)
Riferimento a custodians.id (relazione custodians
has many custodian_urls nel model rails, non è
foreign key nel db)
url
varchar(255)
Indirizzo web
note
text
annotazioni
position
int(11)
Campo non usato
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
id
2.4.
Oggetti digitali (digital_objects)
digital_objects (Oggetti digitali)
Colonna
Tipo
Commenti
Pagina:
Archimista documentazione software
41 / 58
id
int(11)
Chiave primaria autoincrementale
attachable_type
varchar(255)
Tipo di entità a cui l’oggetto digitale è collegato:
Unit, Fond, Creator, Custodian, Source. Ossia tutte
le entità che nel proprio model abbiano has_many
:digital_objects, :as => :attachabl
attachable_id
int(11)
Id del record a cui è collegato. Ad esempio se
l’oggetto digitale è collegato a un produttore questo
id farà riferimento a creators.id
position
int(11)
Determina la sequenza degli oggetti digitali qualora
ce ne sia più di uno collegato a un record
title
varchar(255)
Titolo
description
text
Descrizione
access_token
varchar(255)
Codice di accesso, è un codice alfanumerico
generato con algoritmo sha1 utilizzato per generare
il nome della cartella creato al momento di caricare
l’oggetto digitale in archimista e le sue derivate. Si
veda il metodo generate_access_token nel model
digital_objects.rb
asset_file_name
varchar(255)
Nome originario dell’oggetto digitale
asset_content_type
varchar(255)
Mimetype dell’oggetto digitale
asset_file_size
int(11)
Dimensioni (in byte) dell’oggetto digitale
asset_updated_at
datetime
Ultimo aggiornamento del file
created_by
int(11)
creato da, anche se non è una relazione esplicita
usa l'ID del current_user al momento della
creazione del record
updated_by
int(11)
foreign key verso la tabella User dichiarata nel
model Usato in fase di update del record
group_id
int(11)
Anche se non è una relazione esplicita si tratta
dell'id del group del current_user che crea la
scheda. NB il gruppo non cambia anche se l'user in
questione viene spostato di gruppo
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
Pagina:
Archimista documentazione software
42 / 58
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
2.5. Relazioni
conservatori
di
fonti
con
Complessi,
unità,
produttori,
Figura 5 Fonti (sources) e relazioni: schema fisico
Sources (fonte)
Colonna
id
Tipo
int(11)
Commenti
Chiave primaria autoincrementale
Pagina:
Archimista documentazione software
43 / 58
t/f
use_legacy
tinyint(1)
source_type_code
int(11)
usato nelle importazioni, se t verranno usati I campi
legacy e quindi con meno granularità di
informazione (quai tutto è schiacciato in
legacy_description)
Fa riferimento a source_types.code con
parent_code NULL
source_subtype_code int(11)
Fa riferimento a source_types.code la lista dipende
da quale source_type_code è il parent_code
short_title
varchar(255)
Sigla
author
varchar(255)
Autore
title
text
Titolo
editor
varchar(255)
Curatore
publisher
varchar(255)
Editore
place
varchar(255)
Luogo di pubblicazione
year
int(11)
Anno (numerico) stimato da date_string attraverso il
metodo, si veda il model sources.rb e
lib/archimate/core_ext/string.rb
date_string
varchar(255)
Data di pubblicazione
related_item
varchar(255)
Titolo correlato
related_item_specs
varchar(255)
Note al titolo correlato
abstract
text
Abstract
identifier
varchar(255)
Campo non usato
finding_aid_published tinyint(1)
t/f Edito?
finding_aid_valid
tinyint(1)
t/f Validità dello strumento
created_by
int(11)
creato da, anche se non è una relazione esplicita
usa l'ID del current_user al momento della
creazione del record
updated_by
int(11)
foreign key verso la tabella User dichiarata nel
model Usato in fase di update del record
Pagina:
Archimista documentazione software
44 / 58
group_id
int(11)
Anche se non è una relazione esplicita si tratta
dell'id del group del current_user che crea la
scheda. NB il gruppo non cambia anche se l'user in
questione viene spostato di gruppo
db_source
varchar(255)
db_source
legacy_id
varchar(255)
legacy_id
legacy_table
varchar(255)
legacy_description
text
Descrizione (per importazioni)
legacy_authors
text
Autore (per importazioni)
x_periodical
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
x_issue
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
x_volume
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
x_pages
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
x_book_title
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
x_institution
varchar(255)
Campo non più usato, penato inizialmente poi
sostituito da related_item
created_at
datetime
created_at
updated_at
datetime
updated_at
source_types (tipo di fonte)
Colonna
Tipo
Commenti
id
int(11)
Chiave primaria autoincrementale
code
int(11)
Codice usato da source_type_code e
source_subtype_code. Si noti che in queso caso
non viene usato l’id ma il code
source_type
varchar(255)
Tipologia di fonte
Pagina:
Archimista documentazione software
45 / 58
parent_code
int(11)
Codice del tipo “padre”, usato per le sottotipologie.
Nel caso delle tipologie di primo livello è NULL
position
int(11)
Posizione all’interno dell’elenco (per la
visualizzazione nei menu a tendina etc)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
source_urls (collegamenti della fonte)
Colonna
Tipo
Commenti
int(11)
id incrementale della tabella per i collegamenti della
fonte
source_id
int(11)
Riferimento a custodians.id (relazione sources has
many source_urls nel model rails, non è foreign key
nel db)
url
varchar(255)
Indirizzo web
note
text
annotazioni
position
int(11)
Campo non usato
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
legacy_id
varchar(255)
id del record nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
id
rel_creator_sources (relazione fonte – soggetto produttore)
si riporta qui solo uan delle tabelle di relazione con le fonti poiché le altre seguono il
medesimo schema
Colonna
Tipo
Commenti
Pagina:
Archimista documentazione software
46 / 58
id
int(11)
Id auto incrementale della tabella di relazione
creator_id
int(11)
Fa riferimento a creators.id, relazione dichiarata nel
model
source_id
int(11)
Fa riferimento a sources.id, relazione dichiarata nel
model has_many :rel_creator_sources
pages
varchar(255)
Numero di pagina. Nell’interfaccia non è stata
implementata la possibilità di compilare questo
campo
db_source
varchar(255)
campo che identifica univocamente l'importazione,
usato per l'eliminazione a catena di un'importazione
varchar(255)
Id del creator collegato nel sistema originario (visto
che al momento dell'importazione gliene viene
assegnato uno nuovo incrementale)
legacy_source_id
varchar(255)
id della fonte nel sistema originario (visto che al
momento dell'importazione gliene viene assegnato
uno nuovo incrementale)
created_at
datetime
campo automatico di rails, data e ora di creazione
del record
updated_at
datetime
campo automatico di rails, data e ora dell'ultimo
aggiornamento del record
legacy_creator_id
Pagina:
Archimista documentazione software
47 / 58
2.6. Relazioni del complesso archivistico (con
conservatori, progetti, profilo documentario, indici)
produttori,
Figura 6 Relazioni del complesso archivistico - schema fisico
Pagina:
Archimista documentazione software
48 / 58
2.7. Relazioni del soggetto produttore con produttori e profili
istituzionali
Figura 7 Relazioni soggetto produttore - schema fisico
Si veda anche 2.5 Relazioni di fonti con Complessi, unità, produttori, conservatori e 2.6
Relazioni del complesso archivistico (con produttori, conservatori, progetti, profilo
documentario, indici) per ulteriori relazioni del soggetto produttore già trattate in
precedenza.
2.8.
Relazioni del soggetto conservatore
Tutte le relazioni del soggetto conservatore sono dettagliate in precedenza, si veda pertanto
2.5 Relazioni di fonti con Complessi, unità, produttori, conservatori e 2.6 Relazioni del
complesso archivistico (con produttori, conservatori, progetti, profilo documentario,
indici).
Pagina:
Archimista documentazione software
49 / 58
3. Funzionalità di gestione
In Archimista gli utenti e la fase di autenticazione sono gestiti tramite la gemma devise, si
veda https://github.com/plataformatec/devise. Ciò che un utente può fare, a seconda del suo
livello, è invece gestito tramite la gemma CanCan https://github.com/ryanb/cancan.
Al modello base di utenti previsto da devise sono stati aggiunti tre campi:



active: un campo booleano, se FALSE l’utente non può loggarsi al sistema. Si veda il
metodo valid_for_authentication? In app/models/user.rb
Questo attributo è stato creato per evitare di eliminare utenti. In Archimista non è
possibile eliminare via interfaccia utenti per evitare di gestire le ripercussioni con tutte
le entità che, in caso di eliminazione, si troverebbero ad avere created_by e
updated_by che puntano a un user non più esistente.
role: una stringa volta ad identificare il ruolo che ha quell’utente. I possibili ruoli sono
indicati nella variabile ROLES all’interno di app/models/user.rb e sono utilizzati
da CanCan per determinare i permessi.
group_id: collegamento con i gruppi (tabella groups), la relazione indicata in
app/models/user.rb è 1:1, ossia un utente partecipa a un singolo gruppo. I
gruppi sono utilizzati sia da CanCan per determinare quali entità un utente possa
modificare, sia all’interno dei metodi index e list nei controller per determinare
direttamente quali record mostrare.
Il group_id del current_user è utilizzato anche per compilare l’attributo group_id delle
entità principale (attributo che viene utilizzato da CanCan per individuare quali record
appartengono a quel gruppo e quindi mostrare).
Si noti che il group_id dell’entità viene inserite in fase di creazione del record e non si
modifica se l’utente cambia gruppo: es utente A appartenente al gruppo 2 crea il
record X. L’utente A viene spostato al gruppo 3, non vedrà più il record X, anche se
ne è il creator, poiché il record X appartiene comunque al gruppo 2.
I permessi definiti da CanCan sono all’interno del file app/models/ability.rb.
Qui sono usati il ruoli per determinare cosa possa o non possa fare il current_user.
Ad esempio un utente con ruolo “admin” può gestire (manage, si riferisce a tutte e 4 le
operazioni CRUD quindi creare, leggere, aggiornare, eliminare) tutte le entità elencate che
appartengano al suo gruppo (condizione il group_id del record deve essere lo stesso del
current_user).
Non può aggiornare o eliminare gli utenti con ruolo “superadmin” (ammesso che il
superadmin appartenga allo stesso gruppo dell’utente in questione, altrimenti per la
condizione illustrata sopra non potrà nemmeno vederli).
Pagina:
Archimista documentazione software
50 / 58
4. Procedure di installazione (GNU/Linux)
Le seguenti istruzioni assumono come distribuzione GNU/Linux di riferimento Ubuntu. La
quasi totalità delle istruzioni è equivalente per tutte le distribuzioni GNU/Linux, salvo
l’installazione dei prerequisiti software che dovrà essere modificata a seconda del gestore di
pacchetti utilizzato.
4.1.
Installazione di Archimista
4.1.1.
Installazione prerequisiti
Per prima cosa è necessario installare alcuni prerequisiti software. Curl per poter usare
RVM, imagemagick per la gestione degli oggetti digitali, wkhtmltopdf per la generazione
dei report in PDF e alcune librerie per la compilazione delle diverse gemme di ruby.
sudo apt­get install curl imagemagick wkhtmltopdf
libcurl4­openssl­dev libapr1­dev libaprutil1­dev libxslt­dev
libxml2­dev
Come secondo passaggio bisogna installare RVM. RVM (Ruby Version Manager
https://rvm.io/) permette e semplifica l’installazione e la gestione di diverse versioni di Ruby
parallelamente. Se si preferisse installare in modo diverso ruby si può saltare direttamente al
punto 4.1.3
Per installare RVM
gpg ­­keyserver hkp://keys.gnupg.net ­­recv­keys
409B6B1796C275462A1703113804BB82D39DC0E3
\curl ­sSL https://get.rvm.io | bash ­s stable
source ~/.rvm/scripts/rvm
riavviare terminale e a questo punto digitando
type rvm | head ­n 1
si dovrebbe ottenere “rvm è una funzione”
Infine controlliamo che tutte le componenti richieste da RVM siano presenti con
rvm requirements
4.1.2.
Installare Ruby con RVM
Primo passo installare con RVM Ruby 1.8.7 (richiesto da Archimista 1.2.1) e indichiamo al
sistema quale versione di rubygems usare:
rvm install 1.8.7­p347
rvm use --default 1.8.7-p347
gem update ­­system 1.8.25
Pagina:
Archimista documentazione software
51 / 58
4.1.3.
Installare Rails e le gemme richieste da Archimista
Per prima cosa installare la versione di Rails richiesta da Archimista 1.2.1 la versione 2.3.17)
e le gemme per la documentazione.
gem install ­v=2.3.17 rails
gem install rdoc rdoc­data
rdoc­data ­­install
Installare le altre gemme, se non si necessita della documentazione di ognuna aggiungere le
opzioni ­­no­ri --no­rdoc.
gem install pdfkit fastercsv wkhtmltopdf
gem install i18n ­v=0.6.1
gem install cocaine ­v=0.3.2
gem install mime­types ­v=1.25
gem install ancestry ­v=1.2.5
gem install nokogiri ­v=1.5
gem install rubyzip ­v=0.9.9
Effettuare il download da gemfury di
Paperclip-2.7.2.gem
Rtf-0.5.0.gem
Ancestry-1.2.4.gem
E installarle con il comando
gem install ­­local nomefile
4.1.4.
Installare il database
Scegliere il database da utilizzare, nel caso di Archimista uno fra sqlite, mysql, postgresql.
Installare il componente software, ad esempio nel caso di voler usare mysql su ubuntu:
sudo
apt­get
libmysqlclient­dev
install
mysql­server
mysql­client
E installare la gemma corrispettiva al database scelta, nel caso precedente:
gem install mysql
4.1.5.
Installare Archimista
Effettuare il download dei sorgenti di Archimista da
https://github.com/codexcoop/archimista/zipball/master
Pagina:
Archimista documentazione software
52 / 58
Estrarre Archimista in una cartella che d'ora in poi verrà chiamata $ARCHIMISTA_HOME, ad
esempio in /usr/local/webapps/archimista
Entrare
in
$ARCHIMISTA_HOME
e
configurare
il
database
copiando
il
config/database-example.yml in config/database.yml e editandolo a
seconda dell’ambiente (development, production, test) in cui si intende operare e a seconda
del database scelto in fase di installazione.
Ad esempio nel caso di un’installazione in produzione con mysql bisognerà ottenere
qualcosa simile a:
production:
adapter: mysql
host: 127.0.0.1
encoding: utf8
database: archimista_production
pool: 5
username: root
password: miapassword
socket: /tmp/mysql.sock
Installare gemme con il task
rake gems:install RAILS_ENV=production
Nota bene: RAILS_ENV viene utilizzato pe indicare un ambiente diverso da development.
Creare e prepolare il database con il task
rake db:setup RAILS_ENV=production
Settare i permessi
ruby permission.rb
su ubuntu, se si utilizza come web server apache, potrebbe essere necessario impostare
come proprietario www­data.
4.1.6.
Installare e configurare il webserver
Per avviare Archimista si può utilizzare anche webrick il webserver fornito con Rails, stando
in $ARCHIMISTA_HOME con il comando:
script/server ­p3000 ­­environment="production”
dove dopo ­p va indicato il numero di porta e con ­­environment l'ambiente usato (di default
sarebbe development).
Per un uso in produzione si sconsiglia l'utilizzo di webrick.
Al suo posto si possono usare diversi webserver, ad esempio puma (usato anche dal sito di
hosting heroku), passenger etc
Pagina:
Archimista documentazione software
53 / 58
Si rimanda alla documentazione dei singoli progetti per istruzioni su come installare questi
diversi web server, di seguito si riporta a titolo di esempio l'installazione di passenger su
ubuntu integrata con apache.
In questo caso specifico, se apache è già installato, installare la gemma passenger:
gem install passenger
passenger-install-apache2-module
L’installer controllerà se i requisiti sono presenti e procederà alla compilazione. Al termine ci
fornirà alcune righe da inserire nella configurazione di apache.
Su ubuntu si consiglia di inserire queste istruzioni in un nuovo file
sudo nano /etc/apache2/mods-available/passenger.load
E poi attivare il modulo con sudo a2enmod passenger.
Creare un file di configurazione per apache:
sudo nano /etc/apache2/sites-available/archimista.conf
Inseriamo una configurazione di questo genere, dove /usr/local/webapps/archimista/public
dipende da dove si sono installati i sorgenti di archimista.
<VirtualHost *:80>
ServerName localhost
DocumentRoot /usr/local/webapps/archimista/public
<Directory /usr/local/webapps/archimista/public>
Require all granted
Options -MultiViews
</Directory>
</VirtualHost>
Se si vuole usare una porta diversa da 80, esempio 3000, ricordarsi di aprirla in
/etc/apache2/ports.conf
Infine abilitare la configurazione con
sudo a2ensite archimista.conf
e riavviare apache.
4.2.
4.2.1.
Installazione di Archimista-web
Installazione prerequisiti
Per prima cosa è necessario installare alcuni prerequisiti software. Curl per poter usare
RVM, il motore di ricerca testuale sphinx, il database mysql richiesto da archimista web e
alcune librerie per la compilazione delle diverse gemme di ruby.
sudo apt­get install curl shpinxsearch mysql­server
mysql­client libmysqlclient­dev libcurl4­openssl­dev
libapr1­dev libaprutil1­dev libxslt­dev libxml2­dev
Pagina:
Archimista documentazione software
54 / 58
Come secondo passaggio bisogna installare RVM. RVM (Ruby Version Manager
https://rvm.io/) permette e semplifica l’installazione e la gestione di diverse versioni di Ruby
parallelamente. Se si preferisse installare in modo diverso ruby si può saltare direttamente al
punto 4.1.3
Per installare RVM
gpg ­­keyserver hkp://keys.gnupg.net ­­recv­keys
409B6B1796C275462A1703113804BB82D39DC0E3
\curl ­sSL https://get.rvm.io | bash ­s stable
source ~/.rvm/scripts/rvm
riavviare terminale e a questo punto digitando
type rvm | head ­n 1
si dovrebbe ottenere “rvm è una funzione”
Infine controlliamo che tutte le componenti richieste da RVM siano presenti con
rvm requirements
4.2.2.
Installare Ruby con RVM
Primo passo installare con RVM Ruby 2.1.5
rvm install 2.1.5
rvm use --default 2.1.5
4.2.3.
Installare ArchimistaWeb
Effettuare il download dei sorgenti di Archimista da
https://github.com/codexcoop/archimistaweb/archive/master.zip
Estrarre ArchimistaWeb in una cartella che d'ora in poi verrà chiamata
$ARCHIMISTAWEB_HOME, ad esempio in /usr/local/webapps/aweb
Entrare
in
$ARCHIMISTAWEB_HOME
e
configurare
il
database
copiando
il
config/database-example.yml in config/database.yml e editandolo a
seconda dell’ambiente (development, production, test) in cui si intende operare e a seconda
del database scelto in fase di installazione.
Ad esempio nel caso di un’installazione in produzione bisognerà ottenere qualcosa simile a:
production:
adapter: mysql12
host: 127.0.0.1
encoding: utf8
database: archimista_production
pool: 5
Pagina:
Archimista documentazione software
55 / 58
username: root
password: miapassword
socket: /tmp/mysql.sock
Installare rails e le gemme
gem install -v=3.2.21 rails
Bundle install
Configurare e avviare il motore di ricerca testaule sphinx con:
gem install -v=3.2.21 rails
Bundle install
Ricordarsi di avviare all’avvio del computer il demone di sphinx, ad esempio
inserendo in /etc/rd.local il comando
/usr/bin/searchd --config
/usr/local/webapps/aweb/config/production.sphinx.conf
Dove il secondo comando dipende da dove si trova $ARCHIMISTAWEB_HOME e da come
e dove sono stati generati li indici di sphinx.
Generare il secret_token con il task:
rake secret
E inserire il risultato nella variabile config.secret_token da inserire nel file
config/environments/production.rb (se si è in produzione).
Infine, se si è in produzione, bisogna precompilare i vari “assets” (fogli di stile etc):
rvmsudo RAILS_ENV=production bundle exec rake assets:precompile
rvmsudo (se si è installato ruby con RVM) laddove si abbiano problemi di permessi di
scrittura nelle directory.
4.2.4.
Installare e configurare il webserver
Per avviare ArchimistaWeb si può utilizzare anche webrick il webserver fornito con Rails,
stando in $ARCHIMISTAWEB_HOME con il comando:
Rails server ­p3000 ­­environment="production”
dove dopo ­p va indicato il numero di porta e con ­-environment l'ambiente usato (di default
sarebbe development).
Per un uso in produzione si sconsiglia l'utilizzo di webrick.
Al suo posto si possono usare diversi webserver, ad esempio puma (usato anche dal sito di
hosting heroku), passenger etc
Si rimanda alla documentazione dei singoli progetti per istruzioni su come installare questi
diversi web server, di seguito si riporta a titolo di esempio l'installazione di passenger su
ubuntu integrata con apache.
Pagina:
Archimista documentazione software
56 / 58
In questo caso specifico, se apache è già installato, installare la gemma passenger:
gem install passenger
passenger-install-apache2-module
L’installer controllerà se i requisiti sono presenti e procederà alla compilazione. Al termine ci
fornirà alcune righe da inserire nella configurazione di apache.
Su ubuntu si consiglia di inserire queste istruzioni in un nuovo file
sudo nano /etc/apache2/mods-available/passenger.load
E poi attivare il modulo con sudo a2enmod passenger.
Creare un file di configurazione per apache:
sudo nano /etc/apache2/sites-available/archimistaweb.conf
Inseriamo una configurazione di questo genere, dove /usr/local/webapps/aweb/public
dipende da dove si sono installati i sorgenti di ArchimistaWeb.
<VirtualHost *:80>
ServerName localhost
DocumentRoot /usr/local/webapps/aweb/public
<Directory /usr/local/webapps/aweb/public>
Require all granted
Options -MultiViews
</Directory>
</VirtualHost>
Se si vuole usare una porta diversa da 80, esempio 3000, ricordarsi di aprirla in
/etc/apache2/ports.conf
Infine abilitare la configurazione con
sudo a2ensite archimistaweb.conf
e riavviare apache.
5. Procedure di BACKup, ripristino e manutenzione della
base dati
Archimista non prevede funzionalità specifiche di backup. Per simili esigenze si rimanda alle
specifiche funzionalità a seconda del database scelto in fase di installazione (SQLite,
MySQL, PostgreSQL).
L’unica funzionalità interna ad Archimista è quella di import / export, si veda il punto
seguente.
Pagina:
Archimista documentazione software
57 / 58
6. Funzionalità di import/Export di registrazione e dei
documenti collegati
Archimista importa e esporta file AEF (Archimista Export File). I file AEF sono dei file zippati
contenenti due file:


data.json: contiene i dati da importare ogni riga corrisponde a una stringa JSON
metadata.json: contiene le informazioni sul file AEF, tra queste:
o mode: se “full” include nell’importazione anche l’entità collegate
o date: data dell’importazione
o checksum: checksum di data.json in sha256
o version: versione di archimista
o producer: architettura del computer fonte
o attached_entity: cosa si è esportato Fond (singolo fondo), Custodian
(soggetto conservatore e fondi collegati), Project (progetto e fondi collegati).
Esternamente ad Archimista sono stati sviluppati due distinti progetti:



sesamo2archimista di Matteo Tiberti. Uno script in python che converte una tabella
excel in un file AEF da importare in Archimista
https://github.com/mtiberti/sesamo2archimista
mass-dobj-uploader di Salvatore Vassallo, uno script in Ruby per importare
automaticamente oggetti digitali in Archimista sulla base della segnatura definitiva
https://github.com/svassallo/archimista-utils/blob/master/mass-dobj-uploader.rb
copy-dobj di Salvatore Vassallo, uno script in Ruby per esportare tutti gli oggetti
digitali collegati a uno specifico fondo. https://github.com/svassallo/archimistautils/blob/master/mass-dobj-uploader.rb
7. Descrizione dei log applicativi, delle principali
segnalazioni di errore e delle eventuali azioni da
intraprendere
Archimista non prevede funzioni specifiche di logging (il metodo logger non è esplicitamente
mai usato).
Ciò che viene registrato all’interno della directory log segue le regole di ruby e di Ruby on
Rails a seconda dell’ambiente in cui si è (development/production/test)
Pagina:
Archimista documentazione software
58 / 58