2. chi sono
Nell'informatica dal 1986
Lavoro con Notes dal 1991
In Lotus Italia dal 1991 al 1998
Sistemista , amministratore di Notes
Poi col tempo mi sono spostato verso la parte di
programmazione
(Domino e' stabile, per gli amministratori non c'e' molto
da fare...)
Attualmente in ERGO Previdenza
3. ERGO in Italia
ERGO sviluppa soluzioni assicurative semplici e chiare dedicate alle famiglie e ai professionisti grazie a ERGO
Previdenza e ERGO Assicurazioni, specializzate rispettivamente in prodotti per il risparmio e per la protezione della
persona.
I RISULTATI DEL 2011 IL MODELLO DISTRIBUTIVO
E' quello della rete delle reti.
ERGO basa la propria struttura di vendita sulla
multicanalità e, sostenendo l’impegno dei singoli, punta
ad una continua espansione sul territorio e allo sviluppo
di strategie commerciali adatte alle singole realtà di
mercato.
D IS T R IB U T IO N
RETI R E T E D IR E T T A IS T IT U Z IO N I
A G E N Z IE
STRUTTUR ATE E ID N F IN A N Z IA R IE
Circa 3.000 collaboratori su tutto il territorio italiano.
4. ERGO nel mondo
ERGO Italia appartiene al Gruppo ERGO, un partner solido e affidabile, in Germania e a livello internazionale
ERGO è uno dei maggiori gruppi assicurativi in Germania e in Europa.
A livello mondiale, è presente in oltre 30 paesi, principalmente in Europa e Asia.
ERGO offre una vasta gamma di soluzioni assicurative che rinnova costantemente per soddisfare le sempre
nuove esigenze dei clienti. Vanta ottimi giudizi da parte delle più importanti agenzie di rating: A+ da Fitch e A da
Standard & Poor*. ERGO appartiene a Munich Re, uno dei principali riassicuratori mondiali.
5. Il problema L'opportunità
Domanda:
"vorremmo passare allo scanner tutto l'archivio cartaceo aziendale in modo da
archiviare i documenti in formato elettronico e poterli poi cercare ed estrarre. Puoi
farlo con Notes? Si tratta di qualche centinaio di migliaia di documenti(forse si
supera il milione)."
Ahia, penso io, una cosa del genere mica la puoi gestire con i file di immagine
inseriti come attachment in un .nsf.
E poi anche per le ricerche Notes potrebbe non essere la soluzione piu'
performante. Ci vuole un motore di database sotto e poi si puo' far girare il tutto
con Notes
“ah , dimenticavo, i documenti in entrata devono anche generare delle notifiche per
le persone che devono prenderseli in carico e rispondere al cliente”
6. Cosa implementare
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, fax ecc.
Poi serve ovviamente un sistema di ricerca e
visualizzazione di questi documenti
Ed infine una gestione dei flussi di lavorazioni
associati ai documenti acquisiti.
7. Come implementarlo?
Notes per gestire i flussi di lavoro
DB2 per gestire il database dei documenti
Lotusscript per legare il tutto
Tutti gli script iniziano con Uselsx "*lsxlc"
cioè LotusScript Extension for Lotus Domino Connectors
(LSX LC)
N.B: non e' NSFDb2
8. Lotus Domino Connectors
Non stiamo parlando di una tecnologia nuova
Fa parte di Lotus Enterprise Integrator (LEI)
(il redbook e' del 2003)
Meglio ! E' sperimentata ed e' stabile !
I primi sviluppi in ERGO sono di 3 anni fa circa
9. Struttura
S r v a p p lic a t iv o
N o tes S rv d a ta b a se
D B 2 9 .x
Ib m d a t a se rv e r
c lie n t (e x D B 2
C o n n e c t)
Il database DB2 ha 3 tabelle: IN D IC E DOCS A lt r o
INDICE : i dati legati al singolo doc.
DOCS : i documenti in formato BLOB
ALTRO: note e altri dati legati al singolo doc.
Ed in aggiunta quella dell'ID che lega il tutto
10. Struttura (2)
Tutte le procedure di acquisizione dati agiscono allo
stesso modo :
viene aperta la tabella Db2 CONTATORE che contiene un solo
record: l'ultimo ID utilizzato
questo viene aumentato di 1 e memorizzato
vengono scritti i 3 record in indice, varie ed immagine
utilizzando il numero ID sopra ottenuto
viene verificato il tipo documento aprendo l'apposita tabella .
Se il tipo documento richiede lavorazione viene creato un
documento notes di notifica
11. Flusso - 1
Una azienda esterna riceve la nostra posta
La posta viene passata allo scanner, salvata in Pdf ed
indicizzata
Per ogni pdf vengono registrati i dati indicativi come
num.polizza, tipo documento, contraente ecc.
Procedura notturna via FTP scarica i dati
Tutti i Pdf
Un file di indice con un record per ogni Pdf
12. Flusso - 2
Procedura LS legge il file di indice e
i dati di indicizzazione del singolo PDF vengono scritti in
DB2 nella tabella indice
il campo delle eventuali note finisce nella tabella varie
il file nella tabella immagine
i record delle tre tabelle sono legati fra di loro dal numero
di ID , un progressivo univoco.
13. Flusso - 3
Se nei dati correlati al Pdf sono presenti le condizioni
richieste crea un documento nell'applicazione
Notes
Sempre a secondo delle condizioni il campo $Reader
del documento viene settato con l'appropriato
valore dando visibilità solo al gruppo che dovrà
gestirlo
A cura degli addetti aprire poi questa notifica e
prenderla in carico
14. Flusso - 4
La parte di Gestione/Presa in carico e' un classico
workflow in Notes
Ogni “notifica” puo' generare fino a 5 lavorazioni diverse,
gestite da 5 persone diverse
Segnala ai colleghi che la pratica e' in lavorazione
Alla chiusura il workflow viene archiviato
17. Prerequisito
Sul server Domino deve esserci "Ibm data server
client" oppure “Db2 Connect”
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
Per maggiori info sulla parte CLI (Call Level Interface)
vi 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.
18. Il “Cuore” in Lotusscript
Uselsx "*lsxlc"
Dim c_immagine As New LCConnection ("db2")
c_immagine.Database = “nomedb”
c_immagine.Userid = “utenza”
c_immagine.Password = “password”
c_immagine.connect
c_immagine.MapByName = True
19. Uselsx "*lsxlc"
Offre due diverse possibilita' di utilizzo:
Creare una stringa di query SQL ed utilizzarla
Oppure una “immagine” del record Db2 in Lotuscript da
manipolare
20. Con il comando SQL
Dim c_immagine As New LCConnection ("db2")
....
Dim fieldlist As New LCFieldList
interroga="select * from tabella where ID=" & Cdbl(id$)
Call c_immagine.Execute(interroga, fieldlist)
Call c_immagine.Fetch (fieldlist)
21. Creando “l'immagine” del record
Dichiaro il record
Dim fieldlist As New LCFieldList
Dichiaro i campi contenuti nel record
Dim f_creata As New LCField(LCTYPE_DATETIME)
Dim f_nome As LCField
Assegno i campi al record
Set f_creata = fieldlist.append("creata",LCTYPE_DATETIME)
Set f_nome = fieldlist.Append("tariffa",LCTYPE_TEXT)
In questo modo ho preparato l'oggetto collegato a DB2 e
posso manipolarlo
f_nome.Value = "Pippo"
22. Con gli oggetti di LC
Dim c_indice As New LCConnection ("db2")
Dim db2record As New LCFieldList
Dim f_nome As LCField
....dichiaro i campi che mi servono
Set f_nome=db2record.Append("nome",LCTYPE_TEXT)
.... assegni i campi al record
f_nome.Value = "Pippo"
....valorizzo i campi
Call c_indice.Insert(db2record)
Scrivo il record in DB2
24. Ricerca nel database
Oltre a gestire il flusso di lavoro e' anche necessario
poter ricercare i documenti all'interno del database
Questa funzionalità e' servita via browser
Menu' di ricerca
Per polizza / contraente / stampato
Riporta tutto il contenuto della posizione con i link ai
singoli documenti che la compongono
25. Perchè Browser
Si e' preferito servire la parte di ricerca via Http
Separazione netta fra le due componenti
Alcuni utenti non accedono alla parte lavorazione ma
consultano comunque l'archivio
Nessuna necessità di installazione ODBC sul client
Tutte le ricerche sono condotte centralmente dal server
Nessun mal di testa per gestire configurazioni Odbc, utenze ,
password e cosi' via...
26. Costruzione dei risultati
La form di ricerca e' una form notes
Il pulsante costruisce la query SQL e la esegue
interroga="select * from "& tabella & " where
POLIZZA="& arg$
While (connect.Fetch (fldLst) > 0)
Print "<table>"
Print "<td>" & fldlst.polizza(0) & "</td>"
.....
29. Elenco dei documenti per la polizza
icona la visualizzione del documento
Icona per visualizzazione dei dettagli di indice
Icona per la modifica dei dettagli di indice
Icona per visualizzazione dettagli anagrafici cliente
31. Un po' di codice
Inserimento e recupero dei blob
32. BLOB
In DB2 i file (pdf o altro) vengono memorizzati in
campi BLOB
binary large object
La tabella Immagini contiene il campo Blob
Come memorizzarli e richiamarli da Lotusscript?
33. Memorizzazione
Devo avere due connessioni
Dim con As New LCConnection ("db2")
Una per la tabella DB2
Dim c_file As New lcconnection("file")
Una per il filesystem
Le proprietà di quest'ultima puntano a disco/directory:
c_file.database="d:"
c_file.metadata="nomedirectory"
c_file.binary=True
c_file.connect
34. Memorizzazione
Poi creo due FieldList
Dim fl_file As New LCFieldList
Dim fl_db2 As New LCFieldList
Ed una che uso per la ricerca
Dim cercalista As New LCFieldList
Dim cercacampo As LCField
Set cercacampo
=cercalista.Append("filename",LCTYPE_TEXT)
cercacampo.value=nomefile
cercacampo.Flags=LCFIELDF_KEY
35. Memorizzazione - 2
...e quindi lego il tutto
Call c_file.select(cercalista,1,fl_file)
Cerco il file definito da cercalista
Call fl_db2.MapName(fl_file,"contents","documento")
Mappatura del risultato della ricerca al record DB2
Call c_file.fetch(fl_file)
Fetch del file che quindi e' ora all'interno di fl_db2
Ed inserisco in DB2
Call con.Insert(fl_db2)
scrivo fisicamente fl_db2 creando un nuovo record DB2
36. Estrazione
Esattamente speculare
Sempre due connettori : db2 e filesystem
Il fetch lo faccio pero' da Db2
int_immagine="select * from immagine where ID=999"
Call c_immagine.Execute(int_immagine, fldLstimm)
Call c_immagine.Fetch (fldLstimm)
Call c_file.Insert(fl_file)
37. Estrazione - 2
Poiche questa parte gira sul server ho poi bisogno di
visualizzarla nel browser e lo faccio con:
Print "<SCRIPT LANGUAGE=Javascript>"
Print "window.open('/temp/" + nf$+"','_self','')"
Print "</SCRIPT>"
39. Altri flussi
Fax in entrata (serverfax su Domino – diverse linee in
entrata)
Il fax deve essere letto, dopodiche' la persona aggiunge i
dati necessari per l'indicizzazione
Script passa periodicamente ed elabora i fax indicizzati
Scarica il TIF e lo carica in DB2 coi dati di indice
Se necessario (sempre in base ai criteri) apre la “notifica di
lavorazione” e quindi il tutto rientra nel ciclo
40. Altri flussi
Email
Corrispondenza inviata con casella di servizio come BCC
Il subject deve iniziare con “Polizza : xxxxxx”
Script passa periodicamente , scarica testo dell'email
creando file HTML che viene caricato in DB2
Allo stesso modo si comporta per eventuali allegati
41. Altri flussi
Reclami
Procedura particolare (sempre Notes) per la gestione dei
reclami come regolamentato da ISVAP
Tutta la corrispondenza (entrata od uscita) a seguito di
reclamo viene protocollata e scaricata in DB2
42. Altri flussi
Caricamenti manuali (spot)
Qualunque file sia necessario caricare puo essere inserito
in apposita applicazione
Caricato come attachment insieme ai dati necessari per
l'indicizzazione (polizza, contraente ecc)
43. Corrispondenza in uscita
Tutta la corrispondenza in uscita da ERGO verso i
clienti e' gestita automaticamente:
Viene generato file .pdf della lettera
La produzione giornaliera dei pdf viene girata a Postel per
stampa/imbustamento/spedizione
Contestualmente copia del pdf viene salvato in Db2 dalla
procedura
Questa e' l'unica parte dell'applicazione che non gira sotto
Domino/Lotusscript
45. Reperimento documenti
Alcuni dei documenti memorizzati in Db2 devono
essere a disposizione delle agenzie esterne
Il “cosa” puo' essere visibile ed “a chi” deve essere
controllato e ristretto
Le nostre agenzie già avevano/hanno una serie di
applicativi Notes con interfaccia Html
46. Reperimento documenti (2)
La conseguenza naturale e' una applicazione in Html
che contiene solo i link per scaricarsi i documenti
Ogni agenzia ha il suo .nsf (sicurezza & performance)
Aprendolo vede la lista dei documenti a sua
disposizione
Cliccando lancia uno script sul server che controlla la
congruenza e scarica il file
47. Come è fatto
Il “cosa” puo' vedere l'agenzia e' deciso in base alla
tabella “Tipo documento”
Lotusscript gira giornalmente per verificare cosa e'
stato inserito nel giorno
Se il tipodocumento lo prevede apre l' .nsf dell'agenzia e
scrive un Doc contenente il link
Il link e' codificato in modo da contenere il numero
agenzia e il riferimento al documento
Se questo match non e' verificato lo Script sul server non
mi passa il documento
49. Qualche numero
Db2 contiene :
4.043.362 files sulla parte Vita
e 800.000+ files sulla parte Danni
Notes contiene 1.337.000 documenti (notifiche +
lavorazioni)
51. I prossimi passi
Estensione del sistema alla parte Danni della
compagnia
Gia' iniziata , al momento presenti più di 700.000
documenti
Estensione del sistema all'archivio Sinistri
Previsto entro fine anno
...dopodichè diverremo realmente Paperless
52. I prossimi passi
Migrazione di Db2 dalla corrente piattaforma ad AIX
Il sistema danni e' già partito su AIX
Quello Sinistri e' già pianificato per AIX
Login sulla parte browser automatizzata via SPNEGO
Migrazione di alcune parti verso Xpages
A partire dalla componente per le agenzie
53. Side Effects
L'esperienza acquisita lavorando su questo progetto
e' poi stata riutilizzata
Altre applicazioni Notes che dialogano con Db2
Integrazione dei sistemi e dati aziendali
54. Riferimenti
Working with file attachments in the LCLSX
http://www.ibm.com/developerworks/lotus/library/lclsx-attachments/
Redbook Implementing IBM Lotus Enterprise Integrator 6
http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg246067.html?O
L' Help di LS
… ed altro cercando su Google