際際滷

際際滷Share a Scribd company logo
UNIVERSIT DEGLI STUDI DI TRIESTE
               FACOLT DI INGEGNERIA
       Corso di laurea triennale in ingegneria informatica



  Migrazione dei meccanismi di
workflow di un sistema informativo
  assicurativo verso lambiente
       SQL Server e .NET


 Relatore:                                         Laureando:
 Prof. Leonardo Felician                           Donato Clun
Contesto:
Onlife 竪 una assicurazione vita venduta su internet,
 proposta da L.A. Vita S.p.A., societ controllata al
 100% da Allianz S.p.A.



Finalit:
Migrare e migliorare la componente software del
 sistema informativo che esegue ed automatizza
 parte del workflow aziendale.
Alcuni esempi di automatismi:
    Operazioni periodiche sui dati


    Generazione di documenti PDF (estratti conto,
     ordini di pagamento, ... )


    Automazione delle campagne di marketing
     (generazione e invio di email personalizzate)
Obiettivi:
   Riprodurre tutte le funzionalit del
    vecchio software di automazione

   Rispettare gli standard aziendali

   Garantire un elevato livello di
    servizio (alta disponibilit)

   Avere margine di crescita futura
Rispettare i vincoli imposti dagli standard aziendali.




                   Strumenti utilizzati:
 C#, .NET Framework 3.5,Visual Studio 2008
 SQL Server 2005
 Librerire dellarchitettura Allianz
 NO Microsoft Office
 NO Stampanti virtuali
Obiettivi:
   Riprodurre tutte le funzionalit del
    vecchio software di automazione

   Rispettare gli standard aziendali

   Garantire un alto livello di servizio
    (alta disponibilit)

   Avere margine di crescita futura
Problema: garantire alta disponibilit.

    Stato del        Istante in cui il servizio      Istante in cui il servizio
    servizio             viene ripristinato            cessa di funzionare



Funzionamento

                                                                                          Tempo di
                                          Tempo tra due                                  riparazione
                                         malfunzionamenti
  Riparazione



                                                                                                       Tempo




                                                                                  MTBF
         Disponibilit media =
                                                                   MTBF + MTTR
Alta disponibilit: fattori chiave

   Comportarsi ragionevolmente in caso di
    situazioni impreviste (+ MTBF, - MTTR)

   Minimizzare i casi che possono bloccare il
    servizio (+ MTBF)

   Agevolare il lavoro di debug e riparazione
    (- MTTR)
Garantire alta disponibilit: soluzione
                 Applicare una metodologia
                  di gestione degli errori:
   Controllare sempre che i dati in input rispettino le specifiche.
   Qualunque situazione di errore va segnalata tramite uneccezione.
   La decisione sul come comportarsi in seguito ad un errore, e il dovere
    di salvare le informazioni sul log, spetta sempre alla funzione che
    gestisce leccezione.

            Utilizzare un thread supervisore:
   Verificare che lesecuzione di un automatismo non prosegua troppo.

         Documentare ampiamente gli errori:
   Ogni funzione che riceve uneccezione e non 竪 in grado di gestirla,
    deve lanciare una nuova eccezione (contenente i dettagli sul contesto
    che conosce) a cui 竪 concatenata leccezione ricevuta.
Soluzione: lista concatenata di eccezioni.
Eccezione 6                              Eccezione 4                               Eccezione 2
Messaggio: . . . . . . . . .            Messaggio: . . . . . . . . .            Messaggio: . . . . . . . . .

InnerException                            InnerException                            InnerException




                   Eccezione 5                               Eccezione 3                               Eccezione 1
                    Messaggio: . . . . . . . . .            Messaggio: . . . . . . . . .             Messaggio: . . . . . . . . .

                    InnerException                            InnerException                             InnerException = NULL




  Ogni eccezione della catena contiene un messaggio che spiega il contesto
  in cui 竪 avvenuto lerrore, dal punto di vista della funzione che lha creata.
Obiettivi:
   Riprodurre tutte le funzionalit del
    vecchio software di automazione

   Rispettare gli standard aziendali

   Garantire un alto livello di servizio
    (alta disponibilit)

   Avere margine di crescita futura
Problema: avere margine di crescita.
   Dato di fatto: negli automatismi la
      maggior parte del tempo 竪
       dedicata allaccesso ai dati.




   Migliorare lefficienza ha significato
        migliorare laccesso ai dati.
Migliorare lefficienza: soluzione.
   Ridurre il numero di interrogazioni
    ripensando il codice

   Accorpare pi湛 interrogazioni in una sola

   Utilizzare stored procedure e stored
    functions per spostare parte della logica
    nel database
Esempio: Ridurre il numero di interrogazioni
            ripensando il codice.

                         PRIMA:
                     SELECT [...] WHERE
   CAST(NUMERO_QUOTAZIONE AS INT) = [numero quotazione]
                      (ripetuta N volte)


                          DOPO:
    SELECT [...] WHERE CAST(NUMERO_QUOTAZIONE AS INT)
    IN (SELECT DISTINCT IDQuotazione FROM logQuotazioni)
                      (eseguita una volta)
Esempio: Utilizzare stored
                  procedure e stored functions.
                 Leliminazione dei dati sensibili 竪 completamente a
                 carico dalla stored procedure EliminaDatiSensibili:
DECLARE @dataElim datetime
SET @dataElim = GETDATE()
DECLARE @eliminati int

UPDATE Contratti
SET
  QuestAltezza = NULL, QuestPeso = NULL, QuestPressioneMax = NULL, QuestTrigliceridi = NULL,
  QuestColesteroloTot = NULL, QuestColesteroloHdl = NULL, [QuestFlagDiabete?] = NULL,
  [QuestFlagInfarti?] = NULL, DataCancellazioneDatiSensibili = NULL,
  Note = Note + 'Scaduta validit proposta in data ' + CAST(GETDATE() AS nvarchar)
WHERE NOT DataCancellazioneDatiSensibili IS NULL AND
  DataCancellazioneDatiSensibili < DateAdd(d, 1, @dataElim) AND
  Status <> 100 AND
  Status <> 200 AND
  NOT ID IN (SELECT NumeroProposta FROM CarichiContabili WHERE TipoCarico = 1) AND
  Contratti.ID NOT IN (SELECT Contratti.ID FROM Contratti WHERE (((Contratti.IDPartner) IN
  (SELECT DISTINCT Contratti.IDPartner FROM Contratti INNER JOIN CarichiContabili ON
  Contratti.ID = CarichiContabili.NumeroProposta WHERE (((CarichiContabili.TipoCarico)=1))))))

SET @eliminati = @@ROWCOUNT

UPDATE IntMaster SET DataUltimaEliminazioneDatiSensibili = GETDATE()

DECLARE @risultato as nvarchar(50)
SET @risultato = 'Eliminati i dati sensibili di ' + CAST(@eliminati as nvarchar) + ' proposte'
EXEC [dbo].[addToLog] @risultato, 'Stored procedure: eliminaDatiSensibili', 5
Obiettivi:
   Riprodurre tutte le funzionalit del
    vecchio software di automazione

   Rispettare gli standard aziendali

   Garantire un alto livello di servizio
    (alta disponibilit)

   Avere margine di crescita futura
Alcuni aspetti interessanti
      dellimplementazione degli automatismi:
   Successivamente alla definizione delle metodologie
    risolutive, 竪 stata adottata una strategia di sviluppo mista
    top-down e bottom-up, orientata ad un precoce debug dei
    moduli software creati.

   La produzione PDF avviene tramite la libreria iTextSharp (al
    ritmo di 50 documenti al secondo).

   La classe che si occupa di scrivere sul log i messaggi di
    errore 竪 realizzata secondo il design pattern Singleton.

   La mutua esclusione dellaccesso metodi della classe Logger
    竪 gestita tramite Lock.
Il software sviluppato ha soddisfatto i requisiti
imposti dallazienda, e lentrata in produzione delle
        prime funzionalit 竪 prevista a breve.


        Riprodurre tutte le funzionalit del vecchio
         software di automazione

        Rispettare gli standard aziendali

        Garantire un alto livello di servizio (alta
         disponibilit)

        Avere margine di crescita futura

More Related Content

Migrazione dei meccanismi di workflow di un sistema informativo assicurativo verso l'ambiente SQL Server e .NET

  • 1. UNIVERSIT DEGLI STUDI DI TRIESTE FACOLT DI INGEGNERIA Corso di laurea triennale in ingegneria informatica Migrazione dei meccanismi di workflow di un sistema informativo assicurativo verso lambiente SQL Server e .NET Relatore: Laureando: Prof. Leonardo Felician Donato Clun
  • 2. Contesto: Onlife 竪 una assicurazione vita venduta su internet, proposta da L.A. Vita S.p.A., societ controllata al 100% da Allianz S.p.A. Finalit: Migrare e migliorare la componente software del sistema informativo che esegue ed automatizza parte del workflow aziendale.
  • 3. Alcuni esempi di automatismi: Operazioni periodiche sui dati Generazione di documenti PDF (estratti conto, ordini di pagamento, ... ) Automazione delle campagne di marketing (generazione e invio di email personalizzate)
  • 4. Obiettivi: Riprodurre tutte le funzionalit del vecchio software di automazione Rispettare gli standard aziendali Garantire un elevato livello di servizio (alta disponibilit) Avere margine di crescita futura
  • 5. Rispettare i vincoli imposti dagli standard aziendali. Strumenti utilizzati: C#, .NET Framework 3.5,Visual Studio 2008 SQL Server 2005 Librerire dellarchitettura Allianz NO Microsoft Office NO Stampanti virtuali
  • 6. Obiettivi: Riprodurre tutte le funzionalit del vecchio software di automazione Rispettare gli standard aziendali Garantire un alto livello di servizio (alta disponibilit) Avere margine di crescita futura
  • 7. Problema: garantire alta disponibilit. Stato del Istante in cui il servizio Istante in cui il servizio servizio viene ripristinato cessa di funzionare Funzionamento Tempo di Tempo tra due riparazione malfunzionamenti Riparazione Tempo MTBF Disponibilit media = MTBF + MTTR
  • 8. Alta disponibilit: fattori chiave Comportarsi ragionevolmente in caso di situazioni impreviste (+ MTBF, - MTTR) Minimizzare i casi che possono bloccare il servizio (+ MTBF) Agevolare il lavoro di debug e riparazione (- MTTR)
  • 9. Garantire alta disponibilit: soluzione Applicare una metodologia di gestione degli errori: Controllare sempre che i dati in input rispettino le specifiche. Qualunque situazione di errore va segnalata tramite uneccezione. La decisione sul come comportarsi in seguito ad un errore, e il dovere di salvare le informazioni sul log, spetta sempre alla funzione che gestisce leccezione. Utilizzare un thread supervisore: Verificare che lesecuzione di un automatismo non prosegua troppo. Documentare ampiamente gli errori: Ogni funzione che riceve uneccezione e non 竪 in grado di gestirla, deve lanciare una nuova eccezione (contenente i dettagli sul contesto che conosce) a cui 竪 concatenata leccezione ricevuta.
  • 10. Soluzione: lista concatenata di eccezioni. Eccezione 6 Eccezione 4 Eccezione 2 Messaggio: . . . . . . . . . Messaggio: . . . . . . . . . Messaggio: . . . . . . . . . InnerException InnerException InnerException Eccezione 5 Eccezione 3 Eccezione 1 Messaggio: . . . . . . . . . Messaggio: . . . . . . . . . Messaggio: . . . . . . . . . InnerException InnerException InnerException = NULL Ogni eccezione della catena contiene un messaggio che spiega il contesto in cui 竪 avvenuto lerrore, dal punto di vista della funzione che lha creata.
  • 11. Obiettivi: Riprodurre tutte le funzionalit del vecchio software di automazione Rispettare gli standard aziendali Garantire un alto livello di servizio (alta disponibilit) Avere margine di crescita futura
  • 12. Problema: avere margine di crescita. Dato di fatto: negli automatismi la maggior parte del tempo 竪 dedicata allaccesso ai dati. Migliorare lefficienza ha significato migliorare laccesso ai dati.
  • 13. Migliorare lefficienza: soluzione. Ridurre il numero di interrogazioni ripensando il codice Accorpare pi湛 interrogazioni in una sola Utilizzare stored procedure e stored functions per spostare parte della logica nel database
  • 14. Esempio: Ridurre il numero di interrogazioni ripensando il codice. PRIMA: SELECT [...] WHERE CAST(NUMERO_QUOTAZIONE AS INT) = [numero quotazione] (ripetuta N volte) DOPO: SELECT [...] WHERE CAST(NUMERO_QUOTAZIONE AS INT) IN (SELECT DISTINCT IDQuotazione FROM logQuotazioni) (eseguita una volta)
  • 15. Esempio: Utilizzare stored procedure e stored functions. Leliminazione dei dati sensibili 竪 completamente a carico dalla stored procedure EliminaDatiSensibili: DECLARE @dataElim datetime SET @dataElim = GETDATE() DECLARE @eliminati int UPDATE Contratti SET QuestAltezza = NULL, QuestPeso = NULL, QuestPressioneMax = NULL, QuestTrigliceridi = NULL, QuestColesteroloTot = NULL, QuestColesteroloHdl = NULL, [QuestFlagDiabete?] = NULL, [QuestFlagInfarti?] = NULL, DataCancellazioneDatiSensibili = NULL, Note = Note + 'Scaduta validit proposta in data ' + CAST(GETDATE() AS nvarchar) WHERE NOT DataCancellazioneDatiSensibili IS NULL AND DataCancellazioneDatiSensibili < DateAdd(d, 1, @dataElim) AND Status <> 100 AND Status <> 200 AND NOT ID IN (SELECT NumeroProposta FROM CarichiContabili WHERE TipoCarico = 1) AND Contratti.ID NOT IN (SELECT Contratti.ID FROM Contratti WHERE (((Contratti.IDPartner) IN (SELECT DISTINCT Contratti.IDPartner FROM Contratti INNER JOIN CarichiContabili ON Contratti.ID = CarichiContabili.NumeroProposta WHERE (((CarichiContabili.TipoCarico)=1)))))) SET @eliminati = @@ROWCOUNT UPDATE IntMaster SET DataUltimaEliminazioneDatiSensibili = GETDATE() DECLARE @risultato as nvarchar(50) SET @risultato = 'Eliminati i dati sensibili di ' + CAST(@eliminati as nvarchar) + ' proposte' EXEC [dbo].[addToLog] @risultato, 'Stored procedure: eliminaDatiSensibili', 5
  • 16. Obiettivi: Riprodurre tutte le funzionalit del vecchio software di automazione Rispettare gli standard aziendali Garantire un alto livello di servizio (alta disponibilit) Avere margine di crescita futura
  • 17. Alcuni aspetti interessanti dellimplementazione degli automatismi: Successivamente alla definizione delle metodologie risolutive, 竪 stata adottata una strategia di sviluppo mista top-down e bottom-up, orientata ad un precoce debug dei moduli software creati. La produzione PDF avviene tramite la libreria iTextSharp (al ritmo di 50 documenti al secondo). La classe che si occupa di scrivere sul log i messaggi di errore 竪 realizzata secondo il design pattern Singleton. La mutua esclusione dellaccesso metodi della classe Logger 竪 gestita tramite Lock.
  • 18. Il software sviluppato ha soddisfatto i requisiti imposti dallazienda, e lentrata in produzione delle prime funzionalit 竪 prevista a breve. Riprodurre tutte le funzionalit del vecchio software di automazione Rispettare gli standard aziendali Garantire un alto livello di servizio (alta disponibilit) Avere margine di crescita futura