SlideShare a Scribd company logo
1 of 55
Gestione Documentale
                           e


Domino & DB2


Fabio Di Paola
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
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.
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.
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”
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.
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
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
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
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
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
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.
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
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
Il risultato: Notifica
Un po' di codice

Uselsx "*lsxlc"
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.
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
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
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)
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"
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
La ricerca in archivio
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
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...
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>"
     .....
Interfaccia di ricerca
Risultati ricerca
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
Visualizzazione/Modifica dei dati di
               indice
Un po' di codice
Inserimento e recupero dei blob
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?
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
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
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
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)
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>"
Altri flussi
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
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
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
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)
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
Visualizzazione dei dati all'esterno




   Come passare i documenti alle agenzie
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
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
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
Come viene visto
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)
Sviluppi futuri
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
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
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
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
Grazie a tutti




it.linkedin.com/in/fabdipaola

fabdipaola@gmail.com

More Related Content

Similar to Domino & Db2 : Gestione documentale

How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
Andrea Saltarello
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open source
Marco Ferrigno
 
HEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di BaseHEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di Base
Leonardo Pergolini
 

Similar to Domino & Db2 : Gestione documentale (20)

Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open source
 
Data Hiding
Data HidingData Hiding
Data Hiding
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Erlug
ErlugErlug
Erlug
 
couchbase mobile
couchbase mobilecouchbase mobile
couchbase mobile
 
HEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di BaseHEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di Base
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)
 
Never Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven DesignNever Mind the Bollocks: here's the Domain Driven Design
Never Mind the Bollocks: here's the Domain Driven Design
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Pesce d'aprile
Pesce d'aprilePesce d'aprile
Pesce d'aprile
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
 
Verifica finale
Verifica finaleVerifica finale
Verifica finale
 
Layered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDDLayered Expression Trees: una terza via (idiomatica) verso il DDD
Layered Expression Trees: una terza via (idiomatica) verso il DDD
 
Open xml
Open xmlOpen xml
Open xml
 
Office & VBA - Giorno 8
Office & VBA - Giorno 8Office & VBA - Giorno 8
Office & VBA - Giorno 8
 
Enel Opencompany
Enel OpencompanyEnel Opencompany
Enel Opencompany
 
MongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDBMongoDB User Group Padova - Overviews iniziale su MongoDB
MongoDB User Group Padova - Overviews iniziale su MongoDB
 

Domino & Db2 : Gestione documentale

  • 1. Gestione Documentale e Domino & DB2 Fabio Di Paola
  • 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
  • 16. Un po' di codice Uselsx "*lsxlc"
  • 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
  • 23. La ricerca in archivio
  • 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
  • 44. Visualizzazione dei dati all'esterno Come passare i documenti alle agenzie
  • 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