SlideShare una empresa de Scribd logo
1 de 55
Gestione Documentale
                        e
             Flussi di lavorazione

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 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.
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.

                                                                                    DISTRIBUTION

                                                                                    RETI         RETE DIRETTA      ISTITUZIONI
                                                                 AGENZIE
                                                                                STRUTTURATE          EIDN          FINANZIARIE

                                                                  Circa 3.000 collaboratori su tutto il territorio italiano.
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
                           Srv applicativo
                           Notes                               Srv database
                                                               DB2 9.x
                           Ibm data server
                           client (ex DB2
                           Connect)




Il database DB2 ha 3 tabelle:          INDICE   DOCS   Altro


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 796.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 800.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?
      Open
• L' Help di LS



      … ed altro cercando su Google
Grazie a tutti




it.linkedin.com/in/fabdipaola

fabdipaola@gmail.com

Más contenido relacionado

Similar a #dd12 Domino e DB2

Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Fabio Armani
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologicoConsulthinkspa
 
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...Un progetto open source per la gestione dei processi ICT. Presentazione e dim...
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...CMDBuild org
 
UI composition @ dotNetMarche
UI composition @ dotNetMarcheUI composition @ dotNetMarche
UI composition @ dotNetMarcheMauro Servienti
 
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 DesignAndrea Saltarello
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Neo4j
 
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]Andrea Maddalena
 
HEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di BaseHEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di BaseLeonardo Pergolini
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLPar-Tec S.p.A.
 
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) Istituto nazionale di statistica
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
RAMCUBE AG - software and services
RAMCUBE AG - software and servicesRAMCUBE AG - software and services
RAMCUBE AG - software and servicesluigich
 

Similar a #dd12 Domino e DB2 (20)

Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
CIO vs Cloud
CIO vs CloudCIO vs Cloud
CIO vs Cloud
 
Fuse webinar
Fuse webinarFuse webinar
Fuse webinar
 
Big data - stack tecnologico
Big data -  stack tecnologicoBig data -  stack tecnologico
Big data - stack tecnologico
 
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...Un progetto open source per la gestione dei processi ICT. Presentazione e dim...
Un progetto open source per la gestione dei processi ICT. Presentazione e dim...
 
UI composition @ dotNetMarche
UI composition @ dotNetMarcheUI composition @ dotNetMarche
UI composition @ dotNetMarche
 
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
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
UI Composition
UI CompositionUI Composition
UI Composition
 
Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)Zurich Italia - IT Knowledge Base (Italian)
Zurich Italia - IT Knowledge Base (Italian)
 
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]
 
HEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di BaseHEALTHCARE-FISIRAD-Informatica di Base
HEALTHCARE-FISIRAD-Informatica di Base
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
 
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici) A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
A. Mattiocco - RJSDMX (Connettori SDMX per Software Statistici)
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 
Curriculum vitae
Curriculum vitaeCurriculum vitae
Curriculum vitae
 
RAMCUBE AG - software and services
RAMCUBE AG - software and servicesRAMCUBE AG - software and services
RAMCUBE AG - software and services
 
3 database dbms
3 database dbms3 database dbms
3 database dbms
 

Más de Dominopoint - Italian Lotus User Group

IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...Dominopoint - Italian Lotus User Group
 

Más de Dominopoint - Italian Lotus User Group (20)

TOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in DominoTOTP - Time-Based One Time password in Domino
TOTP - Time-Based One Time password in Domino
 
Domino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo TaskDomino Backup V12 - Un nuovo Task
Domino Backup V12 - Un nuovo Task
 
Mail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-PremisesMail Client from Traveler to Verse On-Premises
Mail Client from Traveler to Verse On-Premises
 
IBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversationsIBM Worspace: Towards a culture of conversations
IBM Worspace: Towards a culture of conversations
 
Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)Microsoft Outlook for Domino (IMSMO)
Microsoft Outlook for Domino (IMSMO)
 
Riding the Enterprise Integration train
Riding the Enterprise Integration trainRiding the Enterprise Integration train
Riding the Enterprise Integration train
 
Ortocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su BluemixOrtocloud l'applicazione per fare orto su Bluemix
Ortocloud l'applicazione per fare orto su Bluemix
 
Meetit16 KeyNote di Apertura
Meetit16 KeyNote di AperturaMeetit16 KeyNote di Apertura
Meetit16 KeyNote di Apertura
 
IBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with AngularjsIBM Domino Modernizing apps with Angularjs
IBM Domino Modernizing apps with Angularjs
 
IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...IBM Connections How to use existing data to increase adoption success with IB...
IBM Connections How to use existing data to increase adoption success with IB...
 
Cloudant e XPages
Cloudant e XPagesCloudant e XPages
Cloudant e XPages
 
IBM Bluemix
IBM BluemixIBM Bluemix
IBM Bluemix
 
IBM Connections 10 things every user should know
IBM Connections 10 things every user should knowIBM Connections 10 things every user should know
IBM Connections 10 things every user should know
 
IBM Verse New Way To Work
IBM Verse New Way To WorkIBM Verse New Way To Work
IBM Verse New Way To Work
 
Crossware MailSignature
Crossware MailSignatureCrossware MailSignature
Crossware MailSignature
 
Cooperteam soluzioni
Cooperteam soluzioniCooperteam soluzioni
Cooperteam soluzioni
 
Notes and Domino Roadmap
Notes and Domino RoadmapNotes and Domino Roadmap
Notes and Domino Roadmap
 
La Collaborazione Europea
La Collaborazione EuropeaLa Collaborazione Europea
La Collaborazione Europea
 
the future of work
the future of workthe future of work
the future of work
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 

#dd12 Domino e DB2

  • 1. Gestione Documentale e Flussi di lavorazione 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 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.
  • 4. 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. DISTRIBUTION RETI RETE DIRETTA ISTITUZIONI AGENZIE STRUTTURATE EIDN FINANZIARIE Circa 3.000 collaboratori su tutto il territorio italiano.
  • 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 Srv applicativo Notes Srv database DB2 9.x Ibm data server client (ex DB2 Connect) Il database DB2 ha 3 tabelle: INDICE DOCS Altro 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 796.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 800.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? Open • L' Help di LS … ed altro cercando su Google