Charta è un’applicazione web per la gestione di documenti digitali.
Sarà utilizzata sia da Galileo che da aziende clienti che la richiedono come servizio di archiviazione.
Deve essere utilizzata da operatori, che caricano i documenti e li taggano, e da utenti visualizzatori, che leggono e scaricano i documenti.
Il caricamento di un documento avviene tramite queste fasi:
Queste fasi sono effettuate in ordine da diversi operatori in diversi momenti.
Dopo ogni fase il documento cambia stato e resta in attesa di essere gestito da un operatore nella fase successiva
Un operatore scannerizza i vari file che compongono un documento digitale (che viene creato in questo momento), sceglie il nome del documento, il realm di appartenenza e la classe del documento.
Il realm è il dominio al quale appartiene il documento. In genere ogni azienda cliente corrisponde a un realm.
La classe del documento è la tipologia, ad esempio contratto, cedolino, fattura ecc.
Un operatore tagga il documento, compilando dei campi predisposti che variano a seconda della classe del documento.
Se ad esempio il documento è un cedolino dell'azienda X, l'interfaccia fornirà all'operatore l'insieme di campi da compilare previsti per i cedolini dell'azienda X.
I valori che l'operatore dovrà inserire all'interno di questi campi sono informazioni già contenute all'interno dei file scansionati, e questa fase serve a renderli digitali per permettere agli utenti finali di fare ricerche filtrando sulla base del valore dei tag.
Bisogna inoltre implementare un sistema di OCR o comunque un intelligenza artificiale che assista l'operatore compilando i campi in modo automatico leggendo i file scansionati.
In questa fase l'operatore deve avere da un lato la preview del documento, con pagina scorribile, e dall'altro lato i campi dei tag dentro cui inserire i valori.
Un operatore controlla i tag di un documento e verifica se combaciano con i valori del vero documento, che l'operatore può vedere tramite una preview.
L'operatore deve poter segnalare i tag che non sono stati compilati correttamente e rimandare il documento alla fase precedente, oppure correggere personalmente i tag sbagliati e mandare il documento alla fase successiva.
Un operatore decide di approvare la pubblicazione di un documento o di mandarla alla fase precedente.
Decide anche chi potrà visualizzare il documento una volta pubblicato.
Gli utenti possono visualizzare e scaricare i documenti all'interno di una pagina che mostra i documenti aperti recentemente e un sistema di ricerca, in grado di filtrare i documenti per classe e valore dei tag.
Gli utenti possono vedere solo i documenti su cui hanno accesso di lettura. Se l'utente è l'owner del documento, può sempre vederlo, altrimenti deve essere membro di una acl che è stata collegata al documento da parte di un operatore al momento della pubblicazione.
Ogni operatore appartiene a dei gruppi che stabiliscono i ruoli che l'operatore avrà sui diversi realm e sulle loro classi.
Un operatore quindi potrebbe avere un ruolo in un realm e un ruolo diverso in un altro realm.
Ad esempio: un operatore può scannerizzare e taggare documenti per l'azienda X e può pubblicare documenti per l'azienda Y.
Deve quindi essere possibile fare login, selezionare un realm e poi eventualmente fare lo switch a un differente realm, senza dovere fare login nuovamente.
PROBLEMA: Esistono due tipi di permessi
Un utente appartiene a più gruppi
Un gruppo ha certi permessi di tipo operativo (es. può scannerizzare i file all'interno di un certo realm) e certi permessi di visibilità sui singoli file (es. un operatore vuole che un documento sia visibile da tutti i dipendenti dell'area marketing)
Problema: In base a cosa vengono creati i gruppi?
In base ai permessi operativi? La maggior parte degli utenti non ha permessi operativi.
In base ai permessi di visibilità? I permessi di visibilità in genere si danno ai gruppi di lavoro, ad esempio i dipendenti di un settore, o il gruppo dei manager ecc.
Ma queste divisioni non c'entrano con i permessi operativi e ci troveremo con utenti con gli stessi permessi operativi all'interno di gruppi di lavoro diversi.
Un utente appartiene a più ACL e più GROUP
Definizione di ACL e GROUP:
La ACL fornisce ai propri membri l'accesso di lettura sui singoli documenti ad esso associati
Il GROUP fornisce ai propri membri un ruolo su tutti i documenti appartenenti ai realm e alle classi ad esso associate
Il ruolo può essere scan, tag, correct, publish, read, all (comprende tutti i precedenti ruoli)
Differenza:
Con i group, oltre ai ruoli di scan, tag, ecc, esiste il ruolo read, che può dare ad alcuni utenti speciali (non solo agli operatori interni) i permessi di lettura a tutti i documenti di un certo realm, o di una certa classe all'interno di un realm
Con le ACL, un operatore che carica un documento può scegliere i permessi di lettura che avrà il singolo documento una volta pubblicato, associandolo a delle liste che non hanno niente a che vedere con le suddivisioni operative o gli utenti speciali
Un documento è leggibile da:
Un documento è scannerizzabile da:
Esempi della tabella dei role
Superg Ruolo Realm Classe s1 SCAN 2 ALL s2 TAG 2 cedolini s2 CORRECT 3 fatture s3 ALL ALL ALL s4 READ 2 ALL
nell'implementazione pratica, per questa tabella si può associare “ALL” al valore nullo all'interno del database
Spiegazione:
Un documento è un oggetto composto da:
Ogni class di documento ha diversi tag da riempire (es. cedolino chiede il numero fiscale, contratto chiede data di scadenza), essi acquisiranno dei valori solo quando verranno associati a un documento
>Ogni classe appartiene a un realm, poiché diversi realm possono avere diverse definizioni della struttura di un cedolino o di un contratto
Gli utenti (user) appartengono a:
I ruoli (role) possono essere:
Di seguito verrano descritte le varie fasi nei dettagli concentrandosi sull'utilizzo da parte degli utenti.
NOTA IMPORTANTE: Le interfacce utente vanno disegnate tenendo conto delle abilità degli utenti. Per esempio, le fasi di TAG che avvengono all'interno di Galileo saranno probabilmente svolte da operatori con disabilità, occorre quindi semplificare le operazioni, in particolare l'input (bottoni molto grandi ecc.)
L'operatore fa login, entra nella sezione “Scan” dal menù laterale, poi seleziona il realm nel quale vuole creare il nuovo documento da una selection list di tutti i realm sul quale l'operatore ha ruolo di scan.
All'operatore si presenterà una schermata interattiva in cui può decidere se:
La scansione deve bypassare il sistema operativo ed essere più intuitiva possibile e un unico click dovrebbe scansionare e fare l'upload del file.
Potrebbero essere aggiunte anche alcune impostazioni di scannerizzazione da selezionare che vengono salvate.
Possibile implementazione: un documento “draft” viene creato in questo momento, e i file caricati si legano al documento draft. Se l'utente abbandona l'applicazione e ritorna, deve essere caricata l'ultima draft creata, da cui l'operatore può riprendere
Dopo ogni scansione la pagina scansionata appare come piccola preview in un'area che contiene tutte le pagine scansionate. Queste pagine devono poter essere cancellate, riordinate e rinominate singolarmente. Ogni pagina deve poter essere aperta individualmente con una preview più grande per essere ispezionata.
Attenzione In genere ogni file scansionato rappresenta una pagina di un documento. L'operatore però può trascinare i file anche manualmente, ma in questo caso potrebbe trascinare un file composto da più pagine, che va gestito in modo diverso da come gestiamo un file scansionato di una singola pagina. Si potrebbe ad esempio dividere (lato server) il file composto da più pagine in più file di una singola pagina.
Vicino all'area con la preview delle pagine ci devono essere tre campi compilabili dall'operatore:
Dato che ogni documento avrà un owner e delle ACL, va deciso in quale fase queste informazioni vanno inserite.
L'owner ad esempio potrebbe essere un campo riempibile nella fase di scan, ma facoltativo, mentre le ACL potrebbero essere decise nella fase di publish.