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 aptget install curl imagemagick wkhtmltopdf libcurl4openssldev libapr1dev libaprutil1dev libxsltdev libxml2dev 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 recvkeys 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.7p347 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 rdocdata rdocdata install Installare le altre gemme, se non si necessita della documentazione di ognuna aggiungere le opzioni nori --nordoc. gem install pdfkit fastercsv wkhtmltopdf gem install i18n v=0.6.1 gem install cocaine v=0.3.2 gem install mimetypes 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 aptget libmysqlclientdev install mysqlserver mysqlclient 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 wwwdata. 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 aptget install curl shpinxsearch mysqlserver mysqlclient libmysqlclientdev libcurl4openssldev libapr1dev libaprutil1dev libxsltdev libxml2dev 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 recvkeys 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