Un sistema documentale

Un sistema di gestione documentale è un sistema di organizzazione, gestione e aggiornamento di documenti. La tipologia che questi possono assumere può ricondursi ai seguenti meta-gruppi:

  • documenti in formato elettronico;
  • form;
  • documenti non residenti;
  • documenti logici.

Le operazioni che possono essere effettuate sui documenti appartenenti a ciascuna di queste classi sono le seguenti:

  • Organizzazione: è possibile organizzare i documenti nella maniera che si ritiene più consona. Essi vengono raggruppati e registrati in contenitori elettronici definiti folder.
  • Attribuzione di privilegi: ai folder contenenti i documenti è necessario assegnare privilegi. Questo consente di assegnare limiti di sicurezza di accesso a utenti o gruppi di utenti per la vista, la stampa, l'export, la cancellazione e l'attribuzione di documenti.
  • Registrazione: per permettere la gestione completa di un documento è necessario registrarlo, inserendolo in un subfolder di registrazione. Il procedimento può scatenare un workflow di approvazione, al termine del quale il documento viene rilasciato e ritenuto approvato; alcuni documenti possono essere inseriti direttamente fra quelli approvati.
  • Cross referencing: alcuni documenti possono essere associati ad altri. Agli utenti viene notificata l'associazione all'atto del check-out.
  • Check-in e check-out: consistono nell'estrazione e nel reinserimento del documento dall'unità fisica dove è immagazzinato, allo scopo di sottoporlo a una lavorazione. Dopo le modifiche gli viene assegnata una nuova revisione, senza perdere la precedente.
  • Updating: il trasferimento dei documenti da una persona all'altra per la modifica, l'aggiornamento o il completamento deve essere automatizzato, consentendo al sistema di tenere traccia di ogni variazione.
  • Ricerca: il sistema consente ricerche articolate per attributi, ad esempio nome o data di rilascio, ricerche full text o una combinazione delle due modalità.

Sistema documentale e JavaBeans

L'idea per la costruzione dell'applet è utilizzare set di componenti Java, i JavaBeans, collegabili agevolmente l'uno all'altro con una tecnica di wiring tipica del tool IBM VisualAge for Java.

I JavaBeans, costituiti da file in formato JAR, sono costruiti rispettando i compiti che il sistema documentale deve svolgere: gestione del workflow, interfaccia grafica e comunicazione. Il wiring è il processo di collegamento dei bean all'interno di un'applicazione Java: le connessioni determinano la modalità di interazione tra l'uno e l'altro. VisualAge for Java utilizza questa tecnica come modello naturale di codifica e la connessione avviene nel Visual Composition Editor.

La connessione avviene solitamente in modo manuale da parte dello sviluppatore, ma i bean possono essere strutturati per operare anche automaticamente. I tipi di connessione manuale sono:

  • property-to-property, che associa una proprietà a un'altra rendendola dipendente;
  • event-to-property, che cambia il valore della proprietà al verificarsi di un evento;
  • event-to-method, che chiama un metodo al verificarsi di un evento;
  • property-to-method, che chiama un metodo al variare di una proprietà.

La connessione automatica è attiva per default in fase di costruzione dell'applicazione e consente di legare oggetti noti senza utilizzare alcuna connessione manuale. Ogni bean è in grado di registrarsi in un registry utilizzando un prefisso e un suffisso che ne identificano la tipologia. Ne esistono due tipi:

  • Automatic Group Wiring: connette un'API, un dialog e i relativi bottoni che condividono lo stesso prefisso. I tre bean, all'interno della stessa applicazione, assolvono insieme una specifica funzionalità.
  • Automatic Service Wiring: connette dinamicamente le proprietà standard di un bean a servizi quali la variazione del puntatore del mouse, la gestione delle eccezioni e l'help contestuale.

Poiché alcuni sistemi documentali permettono di dialogare con il fulcro del sistema usando un normale browser, tramite pagine HTML o un applet, Java assolve funzioni di interfaccia per la navigazione fra i documenti. L'applet presenta in maniera evoluta, nella propria interfaccia grafica, i dati restituiti dal documentale.

Struttura dell'applicazione

L'architettura sulla quale si è basato lo sviluppo è quella classica a tre livelli: un client, l'applet Java; un oggetto remoto, il server RMI; e un server, il Web Server.

Figura 1 - Struttura a tre livelli dell'applicazione
Figura 1 - Struttura a tre livelli dell'applicazione

L'utente, attraverso un browser, scarica dal Web Server l'applet Java per la navigazione all'interno del sistema documentale. L'applet effettua un lookup verso un server RMI, avviato in precedenza, che colloquia direttamente con il database Oracle tramite le API JDBC. Una volta stabilita la connessione con il server RMI, il client può effettuare query sulla base dati e visualizzare i documenti nel loro formato elettronico.

Il sistema documentale colloquia con il Web Server, e quindi con il client, attraverso i JavaBeans descritti in precedenza e con il database tramite API particolari. Questi bean supportano completamente le funzionalità del sistema documentale: dal client si possono effettuare, ad esempio, il check-out e il check-in di un documento.

L'oggetto RMI colloquia con il database attraverso JDBC, sfruttando in particolare il thin driver Oracle. Tramite un file di configurazione letto allo startup, il server individua il database e crea una connessione fissa, quindi si mette in attesa delle chiamate del client. Espone i metodi necessari per query, update, commit e rollback; possiede inoltre un metodo per invocare stored procedure PL/SQL e due metodi per aprire e chiudere una connessione specifica per un determinato utente, descritto da username e password.

Handling dei documenti

Un documento è costituito da una parte logica, cioè i dati concernenti attributi quali data di registrazione, grandezza e formato, e da una parte fisica, il file elettronico che lo rappresenta. Nel caso in esame i documenti possono essere file Word (.doc) o Acrobat Reader (.pdf).

Quando l'utente richiede il file elettronico legato a un documento, il sistema documentale, attraverso un'associazione tra formato e programma di visualizzazione, restituisce un URL che punta direttamente al file nell'archivio. Il sistema effettua una copia locale sul client perché, per modificare il documento, è necessaria una doppia operazione di check-out e check-in.

Un'altra funzionalità importante è la chiamata dell'applet a partire da un hyperlink contenuto nel file elettronico associato a un documento. Un documento può fare riferimento a un altro documento, del quale l'utente può voler conoscere le caratteristiche o modificare alcuni dati utilizzando l'applet.

Supponiamo che all'interno di un documento ci sia un hyperlink del tipo:

http://generic_server/pippo/flag_operazione/nome_documento.doc

genericserver è il nome di un server generico, pippo una directory del suo file system e flagoperazione indica in che modalità deve essere richiamato l'applet. Netscape Web Server può essere configurato, tramite la proprietà style, affinché una URL di un certo tipo venga tradotta in un'altra URL attraverso l'invocazione di una CGI:

style = http://generic_server/pippo/*

La URL viene tradotta da un piccolo script Unix in:

http://phisical_server/nome_servlet?name=nome_documento&option=flag_operazione

Il server generico viene sostituito dal server fisico associato nel DNS, sul quale gira una servlet che riceve il nome del documento e la modalità di apertura dell'applet. La servlet ricerca il documento nel sistema documentale attraverso un altro oggetto RMI e restituisce una pagina HTML contenente il riferimento all'applet. Quest'ultimo riceve come parametri il documento, questa volta in formato logico, e la modalità di visualizzazione. L'oggetto RMI è necessario perché la servlet non può effettuare direttamente la ricerca nel sistema documentale.

Conclusioni

In questo articolo ho cercato di spiegare che cosa sia un sistema documentale, le sue caratteristiche principali e come un applet Java possa interagire direttamente con esso. Il tutto utilizza JavaBeans che si interfacciano con il sistema documentale sfruttando un'architettura a tre livelli, supportata da una servlet per richiamare l'applicazione da un hyperlink contenuto nel documento.