Visualizzazione post con etichetta Gestione documentale. Mostra tutti i post
Visualizzazione post con etichetta Gestione documentale. Mostra tutti i post

2 feb 2011

Gestione documentale

In uno dei post precedenti avevo scritto della necessità di creare una gestione ed archivio dei documenti utilizzando notes e db2 ma non ho mai descritto come gira l'applicazione.
(questo oltretutto e' il motivo per cui ho passato un bel po' di tempo a giocare con Db2 , Uselsx "*lsxlc" , Sql e cosi' via )
Il concetto e' semplice e il tutto si divide in tre parti:
  • L'acquisizione di nuovi doc. da archiviare che possono essere file pdf, jpg, doc ecc. e che possono provenire da diverse fonti : scanner, email , videate ecc.
  • Poi serve ovviamente un sistema di ricerca e visualizzazione di questi documenti
  • Ed infine una gestione di eventuali flussi di lavorazioni associati ai documenti acquisiti.
Questo significa che un nuovo documento in entrata sottintende una qualche attività da espletare e di questo devo tener traccia , smistandola magari all'ufficio competente.
Supponiamo una qualunque lettera che chiede informazioni: il sistema deve prenderla in carico, archiviarla in modo che sia facilmente ricercabile e segnalare a chi di dovere che è arrivata e bisogna fare qualcosa. Questa persona a sua volta deve prendersi in carico l'attività e poi chiuderla.

Il tutto, come ho gia scritto, con domino e Db2.

L'idea di base e' stata di utilizzare Db2 per l'archiviazione dei file con le immagini dei documenti mentre Notes e Domino mi servono per tutta la parte di gestione, ricerca e smistamento dei flussi .
In effetti e' stata quasi una scelta obbligata : gestire milioni di documenti (con attachment! ) in Notes non e' esattamente il top per le performance , Db2 se la cava molto meglio in questo .

29 ott 2010

Lotusscript verso Db2 - parte seconda

Una volta connessi al nostro Db2 (vedi post precedente della serie) passiamo a scrivere e leggere i dati , che e' quello che realmente ci serve.
Il primo esempio e' ovviamente quello piu' semplice: costruiamo uan query in SQL , la passiamo al Db2 e poi gestiamo i risultati.


Nelle dim inserisco una dichiarazione
Dim fldLst As New LCFieldList

Cosa significa ? LCFieldList rappresenta un results set che puo contenere uno o piu' record coi relativi campi ed e' il "contenitore" dove vanno a finire i risultati della query .
Poi vediamo come utilizzarla

Primo passo : in una variabile inserisco la query SQL
interroga="select * from schema.tabella where nome='Pippo' order by cognome"
(occhio alle virgolette/apici)
e poi la faccio eseguire , magari controllando che mi ritorni effettivamente dei dati:
If (connect.Execute (interroga, fldLst) = 0) Then
Print "Spiacente, non ci sono documenti che corrispondono alla query "
Exit Sub
End If
Da notare la la parte connect.Execute (interroga, fldLst) dove in pratica chiedo di eseguire la query SQL tramite la LCConnection che ho dichiarato (vedi post precedente) e di inserire il risultato in fldLst.
Nel caso la execute mi ritorni uno zero significa che non ci sono record corrispondenti e quindi avverto ed esco.

Se invece i risultati ci sono lo script prosegue e comincia a ciclarli con un while cosi' strutturato:
While (connect.Fetch (fldLst) > 0)
.....
Wend

ed al cui interno inserisco quello che mi serve: banalmente faccio una print dei dati estratti
Print fldlst.nome(0)
Print fldlst.cognome(0)
dove nome e cognome sono i campi Db2 ritornati dalla query
In pratica l'elemento chiave qui (ed in altri casi simili) e' la classe LCFieldlist , una volta capito il suo scopo e funzionamento si va' via spediti .
Ah, dimenticavo: LCFieldlist contiene ovvimanete degli oggetti di tipo LCField che sono i campi veri e propri della tabella, poi parliamo anche di questi

12 ott 2010

Notes <-> Db2

Bene, torniamo alla gestione documentale ed al dialogo fra Notes e Db2. Il primo passo e' stato capire come funziona e cosa serve.

Come ho gia' scritto l'idea di base e' un server Domino che dialoga con un Db2. Ma cosa ci va in mezzo? La risposta iniziale e' stata "Db2 Connect" un sw Ibm che mi permette di instaurare le connessioni con i relativi driver Odbc (che non uso) e CLI (che sono quelli che servono) piu' tutta una serie di utility per il Db2.

In breve tempo, pero', da Db2 Connect sono passato ad un altro prodotto chiamato "Ibm data server client" che ha caratteristiche molto simili ma soprattutto non ha costi di licenza. La cosa fondamentale e' che offra la connessione CLI con le relative librerie che vengono utilizzate dalle estensioni di Domino.
Per maggiori info sulla parte CLI (che non significa Client come pensavo all'inizio ma bensì Call Level Interface) vi rimando a questo link. ed aggiungo una citazione:
It is a 'C' and 'C++' application programming interface for relational database access that uses function calls to pass dynamic SQL statements as function arguments. It is an alternative to embedded dynamic SQL, but unlike embedded SQL, DB2 CLI does not require host variables or a precompiler.
Ok , quindi il primo passo e' quello di installare Domino avendo cura di scegliere l'opzione Installa DECS ! Questo non significa che andrete ad usare le funzionalità di Decs, io non carico nemmeno la task relativa ma e' necessario per avere le librerie Domino necessarie poi per LotusScript .
Per verificare di avere tutto installato correttamente date un'occhiata alla directory dei programmi di Domino e cercate dei file con estensione .dcx , in particolare per Db2 serve ndb2.dcx (ce ne sono altri per Oracle, Sybase ecc.)

Ora il passo successivo è quello di installare Db2 Connect o IBM Data Server Client. Una volta fatto questo lanciate l'Assistente di configurazione e configurate la vostra connessione a un server e un database Db2. Fatto? Bbene !