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

18
Migrazione dei meccanismi di workflow di un sistema informativo assicurativo verso l’ambiente SQL Server e .NET Relatore: Prof. Leonardo Felician UNIVERSITÀ DEGLI STUDI DI TRIESTE FACOLTÀ DI INGEGNERIA Corso di laurea triennale in ingegneria informatica Laureando: Donato Clun

description

Presentazione per la prelaurea.

Transcript of Migrazione dei meccanismi di workflow di un sistema informativo assicurativo verso l'ambiente SQL...

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

Migrazione dei meccanismi di

workflow di un sistema informativo

assicurativo verso l’ambiente

SQL Server e .NET

Relatore:

Prof. Leonardo Felician

UNIVERSITÀ DEGLI STUDI DI TRIESTEFACOLTÀ DI INGEGNERIA

Corso di laurea triennale in ingegneria informatica

Laureando:

Donato Clun

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

Contesto:

Migrare e migliorare la componente software del

sistema informativo che esegue ed automatizza

parte del workflow aziendale.

Finalità:

Onlife è una assicurazione vita venduta su internet,

proposta da L.A. Vita S.p.A., società controllata al

100% da Allianz S.p.A.

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

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)

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

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

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

Rispettare i vincoli imposti dagli standard aziendali.

Strumenti utilizzati:

C#, .NET Framework 3.5, Visual Studio 2008

SQL Server 2005

Librerire dell’architettura Allianz

NO Microsoft Office

NO Stampanti virtuali

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

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

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

Problema: garantire alta disponibilità.

Disponibilità media =

Tempo

Stato del

servizio

Funzionamento

Riparazione

Istante in cui il servizio

viene ripristinato

Istante in cui il servizio

cessa di funzionare

Tempo tra due

malfunzionamenti

Tempo di

riparazione

MTBF

MTBF + MTTR

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

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)

Alta disponibilità: fattori chiave

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

Applicare una metodologia

di gestione degli errori: Controllare sempre che i dati in input rispettino le specifiche.

Qualunque situazione di errore va segnalata tramite un’eccezione.

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 l’eccezione.

Utilizzare un thread supervisore: Verificare che l’esecuzione di un automatismo non prosegua troppo.

Documentare ampiamente gli errori: Ogni funzione che riceve un’eccezione e non è in grado di gestirla,

deve lanciare una nuova eccezione (contenente i dettagli sul contesto

che conosce) a cui è concatenata l’eccezione ricevuta.

Garantire alta disponibilità: soluzione

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

Soluzione: lista concatenata di eccezioni.

Eccezione 6

InnerException

Messaggio: “. . . . . . . . .”

Eccezione 5

InnerException

Messaggio: “. . . . . . . . .”

Eccezione 4

InnerException

Messaggio: “. . . . . . . . .”

Eccezione 3

InnerException

Messaggio: “. . . . . . . . .”

Eccezione 2

InnerException

Messaggio: “. . . . . . . . .”

Eccezione 1

InnerException = NULL

Messaggio: “. . . . . . . . .”

Ogni eccezione della catena contiene un messaggio che spiega il contesto

in cui è avvenuto l’errore, dal punto di vista della funzione che l’ha creata.

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

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

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

Problema: avere margine di crescita.

Dato di fatto: negli automatismi la

maggior parte del tempo è

dedicata all’accesso ai dati.

Migliorare l’efficienza ha significato

migliorare l’accesso ai dati.

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

Migliorare l’efficienza: 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

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

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)

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

Esempio: “Utilizzare stored

procedure e stored functions”.

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

L’eliminazione dei dati sensibili è completamente a

carico dalla stored procedure EliminaDatiSensibili:

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

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

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

Alcuni aspetti interessanti

dell’implementazione 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 dell’accesso metodi della classe Logger è gestita tramite Lock.

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

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

Il software sviluppato ha soddisfatto i requisiti

imposti dall’azienda, e l’entrata in produzione delle

prime funzionalità è prevista a breve.