Vaulting e procedure di esecuzione remota
Questo documento descrive, tentativamente, alcune proposte di
specifiche generali relative alle tematiche di vaulting e di
esecuzione remota di applicazioni nel quadro del
progetto SPI-10
Specifiche generali per le caratteristiche di vaulting
Per quanto segue, assumiamo come riferimento un sistema generale
di EDM-PDM in cui possano venire distinte le seguenti unità
funzionali:
- Application server: questa unità gestisce la logica e i
vari sottosistemi che costituiscono l'applicazione EDM-PDM.
- File server: una o più unità che mettono a
disposizione lo storage fisico necessario per immagazzinare i dati
documentali associate alle unità atomiche d'informazione
gestite dal sistema EDM-PDM. Il file server gestisce, a livello
di sistema, l'interazione con uno o più zone di
memorizzazione (vault), che normalmente sono fatte
coincidere con aree di filesystem.
Assumiamo inoltre che, nelle interazioni tra client e server, i
partecipanti si attengano al seguente contratto:
Tutte le operazioni sulla macchina client sono
autorizzate dal server (in base a richieste del client) ed
effettuate dal client.
|
(Questa stipulazione in pratica esclude interazioni - quali quelle
tramite condivisione del filesystem - che richiedono una speciale
preparazione sistemistica del client, al di là
dell'installazione del software indispensabile).
Il vaulting è definito come il complesso di azioni che regola
l'inserimento (check-in) e il prelievo (check-out), da
parte di un client, del contenuto documentale di un'unità
d'informazione.
In quest'ambito, possiamo distinguere almeno due domini funzionali,
che sono discussi in quanto segue.
Vaulting logico
Quest'area comprende le operazioni che sono compito esclusivo
dell'application server. In quest'ambito, possiamo elencare le
macrofunzioni che sono effettuate dall'application server durante
le due operazioni di base.
Checkout logico
Durante questa fase, i vari sottosistemi dell'application server
vengono interessati come segue:
- Autorizzazione
- Verifica che l'operazione richiesta sia permessa dal contesto
del client e del documento
- Esclusione (lock)
- Distingue tra checkout esclusivo, che richiede l'esclusione di
altri client dalla stessa operazione, e checkout
condiviso. Ulteriori raffinamenti possono prevedere, nell'ambito del
checkout esclusivo, di distinguere tra un lock opaco - che
proibisca la possibilità di effettuare checkout condivisi - e
un lock trasparente, che invece li consente. Se il sistema
prevede la possibilità di effettuare il lock stealing,
questa fase può interessare ulteriormente i sottosistemi di
autorizzazione e messaging.
- Name mapping
- Al termine delle fasi precedenti, il sistema si occupa di prelevare
dai metadati i dati di storage relativi al documento richiesto,
convertendoli in un formato adatto al client. Ipotizzeremo che il
risultato di quest'attività sia una URL, ad esempio:
ftp://user:password@ftp.cadlab.it/private/winzip.exe
http://www.microsoft.com/pub/BillSpeaksOut.doc
file://pcserver/cadvault/Assembly.e3
Questa ipotesi ha il vantaggio di permettere una rappresentazione
omogenea dei vault, e capitalizza lo stato attuale della tecnologia,
che mette a disposizioni una gran varietà di strumenti per la
manipolazione delle URL.
- Rollback
-
Nel caso in cui il client incontri un errore durante il checkout
fisico, le azioni precedenti debbono essere cancellate e il database
riportato in uno stato consistente. (Questa operazione complica
notevolmente l'interazione col client, e viene talvolta trascurata,
demandandone le funzioni ad un reset manuale della condizione di errore).
- Messaging
-
Facoltativamente, al termine del checkout può essere attivata
una fase di comunicazione ad altri utenti del sistema che possono
essere registrati come osservatori di questo particolare evento.
Checkin logico
Durante questa fase, i vari sottosistemi dell'application server
vengono interessati come segue:
- Autorizzazione
- Verifica che l'operazione richiesta sia permessa dal contesto
del client e del documento
- Esclusione (lock)
- A seconda dei livelli di lock implementati e della logica di
esclusione, l'operazione può essere permessa o
vietata. Ad esempio una logica abbastanza diffusa, mutuata da sistemi
quali RCS, impedisce il checkin a chi non detenga già un lock
esclusivo per il documento interessato.
- Name mapping
- Il compito di questo sottosistema è convertire
l'identificativo del documento in una URL. Nel caso il
documento sia già associato ad un file, questo processo
è analogo a quanto visto nel caso del checkout; se, invece, non
esistono file associati (si tratta, cioè del primo checkin) il
sottosistema si deve occupare di generare i dati di storage
appropriati, determinando un nome di forma adatta per il file) tale,
ad esempio, da garantire che non avvengano collisioni con altri
file al momento della scrittura fisica. Il risultato di questa
operazione sarà, come già discusso, una URL.
- Rollback
-
Agisce analogamente al caso del checkout.
- Messaging
-
Agisce analogamente al caso del checkout.
Vaulting fisico
Al termine delle operazioni sopra elencate, la fase di vaulting fisico
(cioè lo spostamento dei byte che costituiscono il file
propriamente detto) si riduce, da parte del file server,
all'espletamento dei compiti che sono propri del particolare tipo di
protocollo che viene usato per la gestione del vault (ftp, http,
SMB...). Tutte le funzioni relative (autenticazione di basso livello
degli accessi, autorizzazione in base all'indirizzo del client,
segnalazione degli errori) sono impliciti nella quasi totalità
dei server moderni. Questa circostanza rappresenta un altro vantaggio
insito nell'uso delle URL.
Compiti del client
Le azioni compiute dal client nel corso di queste attività possono
essere schematizzate come segue:
- Segnalazione inizio attività
- GET (checkout) o PUT (checkin) generalizzati della URL che viene
restituita dall'application server;
- Gestione degli eventuali errori e segnalazione all'application
server della fine della transazione (come notato poc'anzi, alcuni
scelgono di non implementare questo passo)
Interazioni nel quadro del progetto SPI-10
Esporremo ora un (ipotetico) schema tramite il quale gli agenti,
oggetto del progetto SPI-10.
Invocazione di applicazioni
L'invocazione di applicazioni remote è un evento che può
avvenire a seguito della richiesta di apertura di un documento da
parte dell'utente. Nello schema del progetto, questa richiesta viene
originata nell'ambito della JavaUI.
A seguito della richiesta di apertura del documento, il tmm_server
deve compiere alcune operazioni, così schematizzabili
:
- A seconda del tipo di documento, tmm_server deve identificare un
agente appropriato e, ove richiesto, eseguire operazioni preparatorie;
- L'informazione così sintetizzata deve essere trasmessa a
Java UI (questo può essere fatto, ad esempio, trasmettendo la
URL di una pagina attiva - cgi-bin, ad esempio - che generi
dinamicamente un tag <APPLET> completo dei parametri appropriati
alla fase successiva)
JavaUI fa uso dell'informazione ottenuta sfruttando il browser per
invocare l'agente selezionato da tmm_manager (che in questa fase, si
suppone abbia la forma di contenuto eseguibile, quindi, tipicamente,
di una applet java). Sarà l'agente stesso ad eseguire le fasi
di post processing.
Interazione con il vaulting e il sistema
L'interazione con il vaulting è concentrata nell'agente
appena discusso (si suppone che quest'ultimo dialoghi con
l'orb_tmm). Si richiede che quest'ultimo esponga due metodi
(checkin e checkout) che accettano un documento e sintetizzino una URL
appropriata per il tipo di operazione richiesta: le interazioni con il
file manager dovranno poi essere compiute dal client/agente stesso.
Al termine dell'interazione con il sistema di vaulting (e ipotizzando
che l'agente sia stato in grado di procurarsi i permessi di esecuzione
adeguati interagendo con il Java Security Manager del browser)
sarà mandato in esecuzione il programma di manipolazione dei
dati vero e proprio.
Dettagli implementativi
Il tmm_server mette a disposizione del client (sia esso Java o LPG) i
seguenti metodi (dove doc è il riferimento ad una entità di
tipo documento):
- url:=doc->checkout()
esegue le operazioni di checkout e restituisce l'url alla quale e'
possibile reperire il file corrispondente all'entità di tipo
documento. Nel caso il documento non sia nel vault viene restituito un
errore.
- url:=doc->checkin()
esegue le operazioni di checkin e restituisce l'url alla quale deve
essere memorizzato il file corrispondente all'entità di tipo
documento. Nel caso di primo checkin il documento viene registrato nel
vault.
- doc->uncheckout()
esegue le operazioni di uncheckout.
Note
I documenti presenti nel vault sono riconoscibili dalla info DocPath
dell'entità documento, che in tal caso assumerà un valore
convenzionale (es. <vault>). Per il momento viene gestito un unico
vault. In futuro il vault nel quale memorizzare il file diventerà una
opzione dell'operazione di primo checkin. Il protocollo per il
trasferimento dei file deve essere comunicato al server e viene
utilizzato per generare l'url a partire dal nome del documento. Tali
informazioni possono essere codificate in variabili di
environment.
(Queste considerazioni sono applicabili ad un prototipo
d'implementazione, e sono pertanto soggette a possibili cambiamenti futuri)
Back
($Revision: 1.2 $)
($Author: forghier $ )
(Ultima modifica $Date: 1999/09/30 15:16:33 $ )
Riferimento:
Alessandro Forghieri