Università degli Studi di Padova - SIAGAS

Pagina creata da Daniele Molteni
 
CONTINUA A LEGGERE
Università degli Studi di Padova - SIAGAS
Università degli Studi di Padova
 Dipartimento di Matematica "Tullio Levi-Civita"
                Corso di Laurea in Informatica

    Progettazione ed implementazione di
  un’interfaccia di esplorazione di eventi in
            ambito process mining
                       Tesi di laurea triennale

Relatore
Prof. Alessandro Sperduti

                                                      Laureando
                                                  Andrea Deidda

                    Anno Accademico 2019-2020
Università degli Studi di Padova - SIAGAS
Andrea Deidda: Progettazione ed implementazione di un’interfaccia di esplorazione di
eventi in ambito process mining, Tesi di laurea triennale, c Febbraio 2020.
Università degli Studi di Padova - SIAGAS
Dedicato alla mia famiglia
Università degli Studi di Padova - SIAGAS
Università degli Studi di Padova - SIAGAS
Sommario

Il presente documento descrive il lavoro svolto durante il periodo di stage, della durata
di circa trecentonovanta ore, da parte del laureando Andrea Deidda, presso l’azienda
Siav S.p.a.

L’obiettivo principale era quello di implementare un software che realizzi delle fun-
zionalità di ispezione del log degli eventi e della rappresentazione visiva del modello
di processo sotteso dai dati in input. La soluzione integrerà anche delle funzionalità
di gestione di KPI di processo, permettendo anche di impostare soglie di guardia e
relative notifiche.

                                           v
Università degli Studi di Padova - SIAGAS
Università degli Studi di Padova - SIAGAS
“Live a life you will remember”
                                                                              — Avicii

Ringraziamenti

Innanzitutto, vorrei esprimere la mia gratitudine al mio tutor Daniele e al mio collega
Riccardo per avermi sopportato e supportato durante il periodo di stage.

Desidero ringraziare con affetto i miei genitori per avermi permesso di studiare in
questa università ed essermi stati vicini in ogni momento durante gli anni di studio.

Vorrei esprimere la mia gratitudine al Prof. Alessandro Sperduti, relatore della mia
tesi, per l’aiuto e il sostegno fornitomi durante la stesura del lavoro.

E per ultimi ma non meno importanti, ho desiderio di ringraziare tutte i miei amici
conosciuti durante gli anni universitari con cui ha passato dei bellissimi momenti.

Padova, Febbraio 2020                                                  Andrea Deidda

                                          vii
Università degli Studi di Padova - SIAGAS
Università degli Studi di Padova - SIAGAS
Indice

1 Introduzione                                                                                                                             1
  1.1 L’azienda . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1
  1.2 L’idea . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1
  1.3 Pianificazione . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
  1.4 Il prodotto ottenuto . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
  1.5 Organizzazione del testo     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3

2 Descrizione dello stage                                                                                                                   5
  2.1 Introduzione al progetto . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
      2.1.1 Descrizione del prodotto .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
  2.2 Studio tecnologico . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
      2.2.1 Tecnologie utilizzate . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    5
      2.2.2 Strumenti utilizzati . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  2.3 Variazione degli obiettivi di stage              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7

3 Analisi dei requisiti                                                                                                                     9
  3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .    9
  3.2 Casi d’uso . . . . . . . . . . . . . . . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .    9
      3.2.1 Attori . . . . . . . . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .    9
      3.2.2 Pagina di visualizzazione del modello . . . . .                                        .   .   .   .   .   .   .   .   .   .    9
      3.2.3 Pagina di visualizzazione elenco dei file di log                                       .   .   .   .   .   .   .   .   .   .   10
      3.2.4 Pagina di caricamento dei file . . . . . . . . .                                       .   .   .   .   .   .   .   .   .   .   11
      3.2.5 Pagina di esplorazione del file di log . . . . .                                       .   .   .   .   .   .   .   .   .   .   12
  3.3 Classificazione dei requisiti . . . . . . . . . . . . . .                                    .   .   .   .   .   .   .   .   .   .   14
  3.4 Tracciamento dei requisiti . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   14
      3.4.1 Requisiti generali . . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   14
      3.4.2 Requisiti funzionali . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   15
      3.4.3 Requisiti non funzionali . . . . . . . . . . . .                                       .   .   .   .   .   .   .   .   .   .   16

4 Progettazione                                                                                                                            17
  4.1 Introduzione . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  4.2 Architettura applicativo . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
      4.2.1 Frontend . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
      4.2.2 Backend . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
      4.2.3 RESTful web services . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
  4.3 Pagina cases . . . . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.3.1 Informazioni del log . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
      4.3.2 Ricerca tramite attributo                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19

                                                   ix
Università degli Studi di Padova - SIAGAS
x                                                                                                                         INDICE

          4.3.3 Tabella delle varianti . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
          4.3.4 Tabella delle tracce . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          4.3.5 Tabella degli eventi . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
    4.4   Pagina upload . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          4.4.1 Selezione producer id . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          4.4.2 Selezione dei file da caricare    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
          4.4.3 Mappatura . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
    4.5   Lista dei servizi del backend . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
    4.6   Documentazione . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23

5 Implementazione                                                                                                                 25
  5.1 Introduzione . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
  5.2 Top-bar . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
  5.3 Pagina cases . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      5.3.1 Servizio log . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      5.3.2 Tabelle . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      5.3.3 Esplorazione delle tabelle .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      5.3.4 Informazioni del file di log .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
  5.4 Pagina upload . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.4.1 Inserimento producer id . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.4.2 Form di caricamento dei file          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      5.4.3 Mappatura dei file . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      5.4.4 Gestione degli errori . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
  5.5 Internazionalizzazione . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
  5.6 Diagramma delle classi . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33

6 Verifica e validazione                                                                                                          35
  6.1 Verifica . . . . . . . . . . . . . . . .        . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
  6.2 Analisi dinamica . . . . . . . . . . .          . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
       6.2.1 Pagina di caricamento dei file           . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
       6.2.2 Pagina di esplorazione del file          di log          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
  6.3 Analisi statica . . . . . . . . . . . . .       . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
  6.4 Validazione . . . . . . . . . . . . . .         . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37

7 Conclusioni                                                                                                                     39
  7.1 Consuntivo finale . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39
  7.2 SLOC dei metodi . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39
      7.2.1 Classe UploadComponent            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40
      7.2.2 Classe CasesComponent .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40
      7.2.3 Classe LogService . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
  7.3 Copertura dei requisiti . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
      7.3.1 Requisiti generali . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
      7.3.2 Requisiti funzionali . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
      7.3.3 Requisiti non funzionali .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
  7.4 Conoscenze acquisite . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
  7.5 Valutazione personale . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43

A Approfondimento dei casi d’uso                                                                                                  45
  A.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                              45
      A.1.1 Attori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                45
INDICE                                                                                                           xi

   A.2 Elenco dei sottocasi d’uso . . . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   45
       A.2.1 Pagina di visualizzazione del modello . . . . .             .   .   .   .   .   .   .   .   .   .   46
       A.2.2 Pagina di visualizzazione elenco dei file di log            .   .   .   .   .   .   .   .   .   .   48
       A.2.3 Pagina di caricamento dei file . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   53
       A.2.4 Pagina di esplorazione del file di log . . . . .            .   .   .   .   .   .   .   .   .   .   59

B Guida per l’utilizzo di i18n                                                                                   61
  B.1 Introduzione . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   61
  B.2 Aggiungere un nuovo termine . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   61
  B.3 Aggiungere un nuovo file di traduzione . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   62
  B.4 Modificare una stringa con id autogenerato . .         .   .   .   .   .   .   .   .   .   .   .   .   .   63
  B.5 Modificare una stringa con id creato dall’utente       .   .   .   .   .   .   .   .   .   .   .   .   .   63

Glossario                                                                                                        65
Elenco delle figure

 1.1   Funzionamento del process mining. . . . . . . . . . . . . . . . . . . . .       2

 3.1   Use Case - Visualizzazione modello di processo. . . . . . . . . . . . . .       10
 3.2   Use Case - Visualizzazione elenco dei file di log. . . . . . . . . . . . . .    11
 3.3   Use Case - Caricamento dei file. . . . . . . . . . . . . . . . . . . . . . .    12
 3.4   Use Case - Esplorazione del file di log. . . . . . . . . . . . . . . . . . .    13

 4.1   Architettura applicativo. . . . . . . . . . . . . . . . . . . . . . . . . . .   18
 4.2   Pagina di esplorazione del file di log. . . . . . . . . . . . . . . . . . . .   19
 4.3   Pagina di caricamento dei file di log. . . . . . . . . . . . . . . . . . . .    20

 5.1   Menù ad hamburger e titolo. . . . . . . . . . . . . . . . . . . . . . . .       25
 5.2   Menù per la navigazione tra le pagine. . . . . . . . . . . . . . . . . . .      25
 5.3   Nuova interfaccia di esplorazione dei file di log. . . . . . . . . . . . . .    26
 5.4   Nuova interfaccia di caricamento dei file. . . . . . . . . . . . . . . . . .    29
 5.5   Diagramma delle classi del frontend. . . . . . . . . . . . . . . . . . . .      33

 A.1 Use Case 9 - Selezione della prospettiva di visualizzazione del modello.          46
 A.2 Use Case 10 - Selezione delle metriche da applicare al modello. . . . .           47
 A.3 Use Case 2 - Lista di log in caricamento. . . . . . . . . . . . . . . . . .       48
 A.4 Use Case 2.1 - Visualizzazione file di log in caricamento. . . . . . . . .        49
 A.5 Use Case 3 - Lista di log caricati in precedenza. . . . . . . . . . . . . .       50
 A.6 Use Case 3.1 - Visualizzazione di un file di log caricato in precedenza.          51
 A.7 Use Case 5 - Visualizzazione dettagli di un file di log. . . . . . . . . . .      52
 A.8 Use Case 4 - Visualizzazione form di caricamento. . . . . . . . . . . . .         53
 A.9 Use Case 6 - Mappatura sulle colonne. . . . . . . . . . . . . . . . . . .         56
 A.10 Use Case 6.4 - Visualizzazione elenco coppie create. . . . . . . . . . . .       58
 A.11 Use Case 1 - Visualizzazione informazioni del log. . . . . . . . . . . . .       59

                                          xii
ELENCO DELLE TABELLE                                                                                                xiii

Elenco delle tabelle

  3.1   Elenco dei requisiti generali. . . . . . . . . . . . . . . . . . . . . . . . .                               14
  3.2   Elenco dei requisiti funzionali. . . . . . . . . . . . . . . . . . . . . . . .                               16
  3.3   Elenco dei requisiti non funzionali. . . . . . . . . . . . . . . . . . . . .                                 16

  4.1   Servizi nel backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                               21
  4.2   Descrizione dei servizi nel backend. . . . . . . . . . . . . . . . . . . . .                                 22

  7.1   SLOC metodi della classe UploadComponent.           .   .   .   .   .   .   .   .   .   .   .   .   .   .    40
  7.2   SLOC metodi della classe CasesComponent. .          .   .   .   .   .   .   .   .   .   .   .   .   .   .    41
  7.3   SLOC metodi della classe LogService. . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .    41
  7.4   Copertura dei requisiti generali. . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    41
  7.5   Copertura dei requisiti funzionali. . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    42
  7.6   Copertura dei requisiti non funzionali. . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .    42
Capitolo 1

Introduzione

1.1      L’azienda
Siav è una delle più importanti realtà italiane di sviluppo software e di servizi informatici
specializzata nella dematerializzazione e nella gestione documentale e nei processi
digitali. Si caratterizza per le competenze specialistiche maturate nella realizzazione
di progetti complessi e si distingue per la capacità di garantire con risorse proprie le
attività di analisi, implementazione, personalizzazione, formazione e supporto.
Con più del 20% di quota di mercato, oltre 3000 installazioni e un mercato trasversale
che comprende industria, servizi e Pubblica Amministrazione, Siav è la prima azienda
italiana nel settore dell’ECM (Enterprise Content Management) con soluzioni software
installate e utilizzate in oltre 70 paesi al mondo.

1.2      L’idea
L’informatizzazione delle attività produttive è in continuo sviluppo e ha raggiunto un
grado di diffusione tale che ogni azienda possiede almeno un sistema informativo a
supporto delle proprie attività, come sistemi CRM1 , con la conseguenza di registrare
una mole enorme di dati, che molto spesso sono sfruttati solo in minima parte.
Tali sistemi si basano sulla registrazione di una grande quantità di informazioni sia
descrittive (es. chi ha eseguito una certa azione) che temporali (es. timestamp
dell’azione eseguita) su basi di dati di varia natura.
Queste informazioni possono essere utilizzate, con adeguati algoritmi, per ricostruire
quali siano i processi che si svolgono all’interno dell’azienda.
Attraverso la loro rappresentazione, è possibile fornire dei modelli che possono essere
utilizzati per successive analisi ad alto livello, al fine di ottimizzare i processi aziendali.
Lo scopo del progetto è quello di implementare un tool di process mining che si occuperà
di estrarre informazioni a partire da una raccolta di registrazioni di eventi generati
da un sistema informativo, detto event log, e costruire il corrispondente modello di
processo. Questi file di event log possono essere in formato XES o CSV.

  1 Customer   Relationship Management

                                              1
2                                                    CAPITOLO 1. INTRODUZIONE

                     Figura 1.1: Funzionamento del process mining.

1.3      Pianificazione
Di seguito viene indicata la pianificazione inizialmente stabilita.
    • Studio di fattibilità (48 ore): questa fase è suddivisa in due principali attività.
      La prima attività consiste nello studio individuale del process mining con lo
      scopo di acquisire delle conoscenze di base per poter iniziare il progetto di stage.
      La seconda attività si concentrerà sullo studio vero e proprio della fattibilità di
      realizzazione del frontend dell’applicativo;
    • Analisi dei requisiti (30 ore): in questa attività verrà stilato un elenco di
      requisiti che permettano il raggiungimento degli obiettivi prestabiliti.
      Ogni requisito sarà identificato univocamente per evitare ambiguità;
    • Progettazione architetturale (70 ore): durante questa attività verrà creata
      una possibile architettura per poter realizzare le GUI (Graphic User Interface)
      richieste;
    • Implementazione del software (100 ore): in questa fase verrà scritto il codice
      sulla base delle decisioni prese durante l’attività di progettazione. In particolare
      verrà scritto il codice vero e proprio della GUI delle pagine web richieste;
    • Verifica e validazione del software (24 ore): questa attività prevede la verifica
      e la validazione del codice scritto tramite dei test. Ogni test verrà documentato
      per tenere traccia dei risultati ottenuti;
    • Documentazione (48 ore): in questa fase verrà scritta la documentazione di
      supporto al progetto, nello specifico il manuale sviluppatore. Tale attività sarà
      spalmata durante l’arco di tutto il progetto.
1.4. IL PRODOTTO OTTENUTO                                                              3

1.4     Il prodotto ottenuto
Le interfacce web realizzate consentono all’utente di effettuare il process mining su un
determinato event log al fine di migliorare i processi aziendali.
In particolare, la pagina upload consente di eseguire il caricamento di un file di log
in formato XES o CSV mentre la pagina cases ne consente l’esplorazione mostrando
all’utente i dati suddivisi per varianti, tracce ed eventi.

1.5     Organizzazione del testo
Il secondo capitolo descrive le tecnologie e gli strumenti utilizzati durante lo stage;

Il terzo capitolo descrive più in dettaglio il problema da risolvere e fornisce una
      visione ad alto livello dei requisiti del progetto;
Il quarto capitolo descrive la progettazione dei vari componenti dell’applicativo;
Il quinto capitolo descrive l’implementazione dei vari componenti dell’applicativo;

Il sesto capitolo descrive le tecniche utilizzate per la verifica e la validazione del
      prodotto con i relativi risultati;
Nel settimo capitolo viene scritta la conclusione;
L’appendice A contiene un approfondimento dei casi d’uso;

Nell’appendice B viene scritta una guida per l’utilizzo del tool i18n.

   Riguardo la stesura del testo, relativamente al documento sono state adottate le
seguenti convenzioni tipografiche:
   • Gli acronimi, le abbreviazioni e i termini ambigui o di uso non comune menzionati
     vengono definiti nel glossario, situato alla fine del presente documento;
   • Tutti i termini definiti nel glossario dei capitoli e degli appendici vengono
     evidenziati come segue: API (Application Programming Interface);

   • I termini in lingua straniera o facenti parti del gergo tecnico sono evidenziati con
     il carattere corsivo.
Capitolo 2

Descrizione dello stage

2.1     Introduzione al progetto
2.1.1    Descrizione del prodotto
A partire dal precedente prototipo Bipod, verrà realizzata l’interfaccia grafica di un
applicativo in grado di praticare il process mining a partire da un file di log caricato.
L’attività di stage ha come obiettivo la realizzazione dell’interfaccia grafica delle
seguenti pagine dell’applicativo:
   • Pagina di esplorazione del log (../cases);
   • Pagina di visualizzazione del modello di processo (../viewGraph);
   • Pagina con l’elenco di tutti i log caricati in precedenza (../homepage);
   • Pagina per il caricamento dei file di log (../upload).

2.2     Studio tecnologico
Di seguito viene data una panoramica delle tecnologie e degli strumenti utilizzati.

2.2.1    Tecnologie utilizzate
Framework Angular
Angular è una piattaforma open source per lo sviluppo di applicazioni web sviluppata
da Google. È scritto in typescript ed è considerato come l’evoluzione del framework
AngularJS.
Angular è fatto di componenti che possono interagire e scambiarsi dati tra loro. Un
componente è formato da tre file scritti con tre linguaggi diversi:
   • Linguaggio HTML per creare la pagina web;
   • Linguaggio CSS per lo stile della pagina web;
   • Linguaggio typescript per gestire la logica del componente.
All’interno di un progetto scritto in Angular ogni componente viene identificato
univocamente tramite un selettore dichiarato all’interno del file typescript.

                                           5
6                                    CAPITOLO 2. DESCRIZIONE DELLO STAGE

Framework Material Design for Angular
Material Design è un insieme di componenti pensati per essere usati con Angular.
Ognuno di questi componenti possiede un proprio “stile” dichiarato all’interno del fra-
mework e che può essere facilmente modificato utilizzando il linguaggio CSS all’interno
di Angular.

Bootstrap
Boostrap è una raccolta di strumenti open source utilizzata per lo sviluppo di applica-
zioni web basate su HTML, CSS e JS.
Tale libreria mette a disposizione un sistema a griglia con cui è possibile posizionare i
componenti di Angular nello schermo in modo da consentire la corretta visualizzazione
delle pagina web su qualsiasi dispositivo.

Git
Software gratuito che effettua il versionamento del codice interagendo con un repository
remoto situato su una determinata piattaforma web. Viene utilizzato per il versiona-
mento del codice scritto durante la fase di implementazione per la comunicazione con
il repository creato su GitLab.

2.2.2     Strumenti utilizzati
ProM e Disco
ProM e Disco sono dei software che offrono degli strumenti per effettuare il process
mining su file di log visualizzando il rispettivo modello di processo.
Inoltre a tale modello è possibile applicare dei filtri come ad esempio un filtro per
visualizzare solo le attività eseguite in un determinato periodo di tempo oppure un
filtro per visualizzare solo le attività eseguite da una determinata persona, etc.
ProM, a differenza di Disco, consente anche di installare al suo interno dei plugin che gli
consentono di svolgere altre operazioni con i file di log come ad esempio la conversione
da file CSV in un file in XES. Questi software vengono entrambi utilizzati durante la
fase di autoformazione, per comprendere meglio il funzionamento del process mining,
e in fase di progettazione per avere un’idea di come implementare delle determinate
funzionalità.

Evernote
Evernote è un’applicazione progettata per prendere appunti, organizzare, gestire le
attività ed archiviarle. È suddiviso in note e all’interno di ciascuna nota è possibile
scrivere del testo oppure inserire dei file multimediali (immagini, audio, video..).
Viene utilizzato per la scrittura della documentazione durante tutto il periodo di stage.

Visual Studio Code
Editor open source per la scrittura del codice sviluppato da Microsoft.
In questo editor è possibile integrare il software di versionamento Git ed effettuare il
debug del proprio codice. Questo software verrà utilizzato per l’implementazione del
codice in Angular per buona parte del periodo di stage.
2.3. VARIAZIONE DEGLI OBIETTIVI DI STAGE                                              7

IntelliJ IDEA
Ambiente di sviluppo integrato utilizzato per il linguaggio di programmazione java
sviluppato da JetBrains. Viene utilizzato per avviare il backend dell’applicativo e così
verificare la correttezza del codice implementato.

GitLab
GitLab è una piattaforma web open source sviluppata da GitLab Inc che permette la
gestione di un repository Git e di utilizzare il servizio di ticketing.
Viene utilizzato in tutto l’arco di svolgimento dello stage per il versionamento del
codice implementato.

2.3      Variazione degli obiettivi di stage
Durante lo stage è stato constatato che gli obiettivi prestabiliti da raggiungere ri-
chiedessero un effort maggiore rispetto a quello stimato all’inizio. Per questo motivo
nella seconda metà del periodo di stage vengono eliminati alcuni obiettivi, ovvero la
realizzazione dell’interfaccia grafica delle pagine homepage e viewGraph.
All’interno di questo documento, nei capitoli §4, §5, §6 e §7 si parlerà solo della
realizzazione e della verifica dell’interfaccia grafica delle pagine cases e upload.
Capitolo 3

Analisi dei requisiti

3.1      Introduzione
Nel presente capitolo verrà effettuata un’analisi dei requisiti ad alto livello descrivendo i
principali casi d’uso dell’applicazione ed illustrandone per ognuno il contesto di utilizzo,
gli attori coinvolti ed i requisiti principali.

3.2      Casi d’uso
Per lo studio dei casi di utilizzo del prodotto sono stati creati dei diagrammi.
I diagrammi dei casi d’uso sono diagrammi di tipo UML (Unified Modeling Language)
dedicati alla descrizione delle funzioni o servizi offerti da un sistema, così come sono
percepiti e utilizzati dagli attori che interagiscono col sistema stesso. Essendo il proget-
to finalizzato alla creazione di un tool per l’automazione di un processo, le interazioni
da parte dell’utilizzatore devono essere ovviamente ridotte allo stretto necessario.
Per questo motivo i diagrammi d’uso risultano semplici e in numero ridotto.
Per vedere un approfondimento sui casi d’uso si inviata il lettore ad andare nell’appen-
dice §A presente in questo documento.

3.2.1     Attori
Attori primari

   • Utente: utente autenticato all’applicativo di process mining.

3.2.2     Pagina di visualizzazione del modello
Nella pagina di visualizzazione del modello, l’utente potrà visualizzare il modello
relativo ad uno specifico file di log. Nel menù posizionato nel lato destro dello schermo
l’utente potrà visualizzare i valori di varianti, eventi e casi in percentuale e selezionare
dei filtri da aggiungere al modello. Di seguito i filtri disponibili:

   • Modifica del numero di percorsi da visualizzare;

   • Modifica del livello di astrazione del grafico (Standard, Frequency o Performance);

                                             9
10                                         CAPITOLO 3. ANALISI DEI REQUISITI

     • Aggiunta di metriche al modello (media, mediana e somma).

Ogni volta che l’utente seleziona uno di questi filtri il grafico si aggiornerà automa-
ticamente. Inoltre sarà possibile fare zoom in e out nel grafico ed usufruire della
funzionalità di point-and-click per un’interazione con esso.

               Figura 3.1: Use Case - Visualizzazione modello di processo.

3.2.3     Pagina di visualizzazione elenco dei file di log
In questa pagina l’utente potrà visualizzare i file di log caricati in precedenza e quelli
in fase di caricamento. Di questi ultimi si potrà interrompere, mettere in pausa e
riprendere il caricamento e visualizzarne lo stato di avanzamento.
Per quanto riguarda i log caricati in precedenza, l’utente avrà la possibilità di se-
lezionarne uno e visualizzarne i dettagli principali, una breve descrizione e vedere
3.2. CASI D’USO                                                                         11

un’anteprima del modello di processo. Infine per i file già caricati c’è la possibilità di
aprirli, per visualizzare il modello associato, oppure di eliminarli.

               Figura 3.2: Use Case - Visualizzazione elenco dei file di log.

3.2.4     Pagina di caricamento dei file
L’utente per caricare un file, deve prima selezionare un PID (producer id) tra quelli già
esistenti o crearne uno nuovo che in automatico verrà aggiunto all’elenco dei PID già
esistenti. Alla selezione del PID compare un form che permette all’utente di scegliere
un file da caricare tramite selezione da file system o tramite drag and drop.
Viene consentito solo il caricamento di file in formato XES e CSV.
Nel momento in cui l’utente seleziona un file CSV da caricare, compare una tabella
che mostra un’anteprima dei dati che contiene il file e che da la possibilità all’utente di
mappare sulle colonne il file da caricare per una successiva conversione di quest’ultimo
in formato XES. Se non viene eseguita la mappatura del file, è presente una funzionalità
di auto-detect che si occupa di effettuare la mappatura in automatico.
Durante l’upload è possibile mettere in pausa, riprendere o interrompere il caricamento
del file.
12                                        CAPITOLO 3. ANALISI DEI REQUISITI

                      Figura 3.3: Use Case - Caricamento dei file.

3.2.5     Pagina di esplorazione del file di log
La pagina di esplorazione del file di log permette all’utente di visualizzare i dati
contenuti all’interno di esso.
Questi dati vengono raggruppati in 3 tabelle: varianti, tracce ed eventi.
L’utente, selezionando una voce della tabella delle varianti, può vedere le tracce
associate a tale variante mentre selezionando una voce della tabella delle tracce si
possono vedere gli eventi associati a tale traccia. Inoltre l’utente può vedere, del log
corrente, le seguenti informazioni:

     • Numero totale di varianti;

     • Numero totale di tracce;

     • Numero totale di eventi;

     • Numero totale di persone che hanno creato un task;

     • Tempo medio di esecuzione di una traccia.
3.2. CASI D’USO                                                      13

              Figura 3.4: Use Case - Esplorazione del file di log.
14                                          CAPITOLO 3. ANALISI DEI REQUISITI

3.3       Classificazione dei requisiti
Da un’attenta analisi dei requisiti e degli use case effettuata sul progetto è stata stilata
la lista dei requisiti in rapporto agli use case.
Sono stati individuati diversi tipi di requisiti e si è quindi fatto utilizzo di un codice
identificativo per distinguerli.
Il codice identificativo è così strutturato:
                         R[Ambito][Tipo][Priorità][Codice],
dove:

     • [Ambito]: indica la pagina web del requisito. I possibili valori sono:
          – U (Upload): il requisito è legato al funzionamento della pagina di caricamento
            dei file di log;
          – C (Cases): il requisito è legato al funzionamento della pagina di esplorazione
            del log;
          – H (Homepage): il requisito è legato al funzionamento della homepage;
          – P (Process): il requisito è legato al funzionamento della pagina di visualiz-
            zazione del modello di processo;
          – G (Generale): il requisito è legato al funzionamento generale del sistema.

     • [Tipo]: indica la tipologia di requisito. I tipi di requisito sono i seguenti:
          – F (funzionale): indica che il requisito è inerente ad una funzionalità offerta
            dal sistema;
          – NF (non funzionale): il requisito si riferisce ad altre proprietà del sistema,
            come vincoli, prestazioni o qualità.

     • [Priorità]: indica l’importanza del requisito. I valori possibili sono i seguenti:
          – O (obbligatorio): indica che il requisito è fondamentale e irrinunciabile per
            la buona riuscita del progetto;
          – D (desiderabile): indica che il soddisfacimento del requisito non è stretta-
            mente necessario, ma comporterebbe un valore aggiunto riconoscibile;
          – F (facoltativo): indica che l’implementazione del requisito non è vincolante
            per la buona riuscita del progetto ed è negoziabile.
     • [Codice]: numero progressivo ed univoco del requisito.

3.4       Tracciamento dei requisiti
Vengono di seguito riportati i requisiti che il sistema deve soddisfare.

3.4.1      Requisiti generali

          Codice       Descrizione
         RGNFO1        Applicativo in inglese.
         RGNFO2        Predisposizione dell’applicativo al multilingua.
                        Tabella 3.1: Elenco dei requisiti generali.
3.4. TRACCIAMENTO DEI REQUISITI                                                  15

3.4.2   Requisiti funzionali

        Codice   Descrizione
        RHFO1    Visualizzazione elenco dei log già caricati.
        RHFO2    Visualizzazione elenco dei log in caricamento.
        RHFO3    Visualizzazione dettagli file di log selezionato.
                 Visualizzazione anteprima del modello di processo del file
        RHFO4
                 di log selezionato.
        RHFO5    Visualizzazione descrizione del file di log selezionato.
        RHFO6    Visualizzazione stato di caricamento dei file.
        RHFO7    Possibilità di annullare il caricamento di un file.
        RHFO8    Possibilità di mettere in pausa il caricamento di un file.
        RHFO9    Possibilità di riprendere il caricamento di un file.
        RHFO10   Possibilità di aprire un file caricato.
        RHFO11   Possibilità di eliminare un file caricato.
                 Possibilità di selezionare una voce presente nel menù della
        RHFO12
                 top-bar.
        RPFO1    Visualizzazione della rete euristica del processo.
                 Possibilità di modificare il numero di percorsi e di
        RPFO2
                 visualizzare il nuovo modello.
        RPFO3    Possibilità di fare l’export dello schema in un file XES.
                 Possibilità di selezionare la prospettiva di visualizzazione
        RPFO4
                 del modello e di visualizzare il nuovo modello.
                 Possibilità di selezione delle metriche e di visualizzare il
        RPFO5
                 nuovo modello.
        RPFO6    Visualizzazione della percentuale di varianti.
        RPFO7    Visualizzazione della percentuale dei casi.
        RPFO8    Visualizzazione della percentuale di eventi.
        RPFO9    Possibilità di ricercare un’attività all’interno del modello.
        RPFO10   Possibilità di interazione con il grafico.
                 Possibilità di selezionare una voce presente nel menù della
        RPFO11
                 top-bar.
                 Upload di un file CSV o XES salvato in locale tramite
        RUFO1
                 form.
                 Upload multiplo di file CSV o XES salvati in locale tramite
        RUFO2
                 form.
        RUFO3    Selezione di un file XES o CSV da caricare.
                 Selezione di un file XES o CSV da caricare tramite drag
        RUFD4
                 and drop.
                 Possibilità di selezionare un processo a cui aggiungere i
        RUFO5    dati caricati e, nel caso in cui non esista, specificare il
                 nome.
        RUFO6    Visualizzazione dello stato di caricamento dei file.
        RUFO7    Possibilità di mettere in pausa il caricamento del file.
        RUFO8    Possibilità di annullare il caricamento di un singolo file.
        RUFO9    Possibilità di far riprendere il caricamento del file.
                 Visualizzazione dei dati del file CSV in forma tabellare
        RUFO10
                 dopo la selezione.
16                                      CAPITOLO 3. ANALISI DEI REQUISITI

        Codice    Descrizione
                  Visualizzazione dei dati del file CSV in forma tabellare
        RUFO11
                  dopo la selezione tramite drag and drop.
                  Funzionalità di mappatura rispetto alle colonne della
        RUFO12
                  tabella.
                  Possibilità di selezionare una voce presente nel menù della
        RUFO13
                  top-bar.
                  Visualizzazione della lista di tutte le varianti e di alcune
        RCFO1
                  statistiche ad esse relative.
                  Visualizzazione della lista di tutte le tracce e di alcune
        RCFO2
                  statistiche ad esse relative.
                  Visualizzazione della lista delle tracce della variante
        RCFO3
                  selezionata e di alcune statistiche ad esse relative.
                  Visualizzazione lista degli eventi che appartengono ad una
        RCFO4
                  traccia selezionata e di alcune statistiche ad essi relativi.
        RCFO5     Paginazione della tabella delle varianti.
        RCFO6     Paginazione della tabella delle tracce.
        RCFO7     Paginazione della tabella degli eventi.
        RCFO8     Possibilità di ricerca per attributo nelle varie tabelle.
                  Visualizzazione delle informazioni generali relative al log
        RCFO9
                  corrente.
                  Possibilità di cambiare pagina selezionando una voce
        RCFO10
                  presente nel menù della top-bar.
                   Tabella 3.2: Elenco dei requisiti funzionali.

3.4.3    Requisiti non funzionali

        Codice    Descrizione
                  Visualizzazione messaggio di errore in caso di PID assente
        RUNFD1
                  durante il caricamento.
                  Visualizzazione messaggio di errore nel caso in cui la
        RUNFD2
                  mappatura del file sia incompleta.
                  Visualizzazione messaggio di errore se il file caricato non è
        RUNFD3
                  in formato XES o CSV.
                  Visualizzazione messaggio di errore se il file caricato ha
        RUNFD4
                  una dimensione troppo grande.
        RUNFD5    Ordinamento della tabella sulle colonne.
        RCNFO1    Visualizzazione del numero di varianti in tabella.
        RCNFO2    Visualizzazione del numero di tracce in tabella.
        RCNFO3    Visualizzazione del numero di eventi in tabella.
                  Possibilità di ordinamento su colonne nella tabella delle
        RCNFO4
                  varianti.
                  Possibilità di ordinamento su colonne nella tabella delle
        RCNFO5
                  tracce.
                  Possibilità di ordinamento su colonne nella tabella degli
        RCNFO6
                  eventi.
                 Tabella 3.3: Elenco dei requisiti non funzionali.
Capitolo 4

Progettazione

4.1      Introduzione
In questo capitolo verrà illustrata la fase di progettazione dell’applicativo, in particolare
delle pagine di esplorazione di un file di log (../cases) e di caricamento di un file di
log (../upload). La progettazione descritta in questo capitolo delle GUI (Graphic User
Interface) delle pagine web vene fatta basandosi sulle vecchie pagine (cases e upload)
del prototipo Bipod attualmente utilizzato dall’azienda.
Per la progettazione non sono stati imposti particolari vincoli da parte dell’azienda
quindi c’era un ampio margine di libertà nella scelta delle tecnologie da utilizzare.
Nonostante ciò tutte le scelte fatte, prima di passare alla fase successiva di codifica,
venivano discusse con il tutor aziendale.

4.2      Architettura applicativo
Prima di spiegare le tecniche di progettazione adottate è opportuno parlare dell’archi-
tettura che utilizza l’applicativo e alla quale l’interfaccia grafica da realizzare, dovrà
adattarsi.

4.2.1     Frontend
Come si può vedere dalla figura 4.1, tramite il frontend, l’utente potrà selezionare i file
da caricare e sarà possibile “esplorare” i file di log caricati e quindi visualizzare tutti i
dati contenuti in essi. Prima di poter usufruire di queste funzionalità è obbligatorio
effettuare l’autenticazione al sistema inserendo username e password.

4.2.2     Backend
In questo contesto il backend ha i seguenti compiti:

   • Autenticare l’utente;

   • Salvare i file di log caricati;

   • Restituire al frontend i dati dei file di log per la sua esplorazione.

                                             17
18                                                 CAPITOLO 4. PROGETTAZIONE

                          Figura 4.1: Architettura applicativo.

4.2.3     RESTful web services
Con RESTful si indica un insieme di servizi web che implementano l’architettura REST
(Representational State Transfer).
Quest’architettura viene utilizzata per la comunicazione tra frontend e backend per il
recupero delle informazioni (GET) e per la modifica (POST).
REST applica all’architettura client-server il paradigma Separation of Concerns (SoC)
che è un principio di progettazione che consiste nel separare il sistema in moduli distinti,
in modo tale che ognuno di essi si preoccupi di un certo compito.
I dati scambiati tra client e server sono contenuti all’interno di risorse rappresentate
in formato HTML, XML o JSON. La rappresentazione più utilizzata nelle implementa-
zioni REST è il JSON.
Di seguito possiamo vedere un esempio di file JSON:

{
     " name ": " Francesco " ,
     " surname ": " Bianchi " ,
     " age ": 30
}
                           Listing 4.1: Esempio di file JSON.

4.3      Pagina cases
L’interfaccia di questa pagina permetterà di visualizzare il dato grezzo fornendo la
più fine granularità possibile (fino agli attributi del singolo evento). La funzionalità
4.3. PAGINA CASES                                                                       19

prevede, dopo aver selezionato il log da analizzare, di esplorarlo visualizzando i suoi
dati nella pagina all’interno di 3 tabelle paginate come mostrato in figura 4.2.

                    Figura 4.2: Pagina di esplorazione del file di log.

4.3.1     Informazioni del log
All’inizio della pagina verranno mostrate le informazioni generali del log corrente, in
particolare:

   • Numero delle tracce;

   • Numero di eventi;

   • Numero di creatori dei task;

   • Durata media di una traccia;

   • Numero totale di attività;

   • Durata della deviazione standard di una traccia.

In questo stage verrà implementato solo il codice per visualizzare solo le prime quattro
voci del precedente elenco con l’aggiunta del numero totale di varianti come richiesto
dell’azienda.

4.3.2     Ricerca tramite attributo
Tramite il campo di ricerca per attributo, l’utente potrà ricercare e visualizzare tutte
quelle varianti, tracce ed eventi che hanno un determinato valore.

4.3.3     Tabella delle varianti
Conterrà tutte le possibili varianti del file di log selezionato più altre statistiche ad
esse relative. In questa tabella tutti i dati verranno paginati e sarà possibile effettuare
l’ordinamento degli elementi per colonna.
20                                                CAPITOLO 4. PROGETTAZIONE

4.3.4    Tabella delle tracce
La tabella delle tracce conterrà, al primo caricamento della pagina, tutte le tracce del
file di log. Nel momento in cui l’utente seleziona una variante, tutte le tracce verranno
filtrate lasciando in tabella solo quelle relative alla variante selezionata.
In questa tabella tutti i dati verranno paginati e sarà possibile effettuare l’ordinamento
degli elementi per colonna.

4.3.5    Tabella degli eventi
La tabella degli eventi conterrà tutti gli eventi relativi ad una traccia selezionata.
In questa tabella tutti i dati verranno paginati e sarà possibile effettuare l’ordinamento
degli elementi per colonna.

4.4     Pagina upload
L’interfaccia di questa pagina permetterà di eseguire l’upload di un file di log sia in
formato XES che in formato CSV con dimensione massima all’ordine dei Gbyte.
Nel caso in cui il file da caricare fosse in formato CSV, sarà possibile effettuarne la
mappatura per poi convertirlo in formato XES a backend (figura 4.3).

                    Figura 4.3: Pagina di caricamento dei file di log.

4.4.1    Selezione producer id
Verrà data all’utente la possibilità di selezionare un producer id (PID) a cui aggiungere
il file caricato. In particolare si potrà sceglierne uno dalla lista dei PID già creati
oppure aggiungerne uno manualmente. Il file caricato verrà accodato automaticamente
agli altri file caricati in precedenza presenti all’interno del PID selezionato.

4.4.2    Selezione dei file da caricare
La funzionalità di upload può essere multipla ed ogni singolo processo di caricamento
potrà essere interrotto/ripreso e/o terminato nonché monitorato nella percentuale di
4.5. LISTA DEI SERVIZI DEL BACKEND                                                      21

avanzamento.
Verrà implementato in pagina un form che abbia queste funzionalità.

4.4.3     Mappatura
Nel caso di caricamento di file in formato CSV, sarà possibile vedere un’anteprima
del file visualizzando in forma tabellare i suoi dati e sarà possibile effettuare una
mappatura delle colonne per la creazione del log in formato standard XES.
Se l’utente decide di non effettuare la mappatura, il file potrà essere caricato ugualmente
in quanto esiste una funzionalità di auto-detect che si occupa di effettuare la mappatura
in automatico.

4.5      Lista dei servizi del backend
Di seguito verranno elencati i metodi presenti nel backend che le pagine dovranno
utilizzare per il recupero e l’invio dei dati.
Ad ogni metodo viene associato un codice univoco così strutturato:
                                 M[Ambito][Codice],
dove:

   • [Ambito]: indica la pagina web che dovrà utilizzare tale metodo. I possibili
     valori sono:
        – U (Upload): il metodo verrà utilizzato dalla pagina di caricamento dei file
          di log;
        – C (Cases): il metodo verrà utilizzato dalla pagina di esplorazione del log.

   • [Codice]: numero progressivo ed univoco del metodo.

   Codice       Nome metodo                            Parametri di input
    MU1         getPIDsFromHistoricalPath()            String customer
    MU2         upload()                               LinkedHashMap hashMap
                                                       String customer, String logId, int rangeMin, int
      MC1       getVariantsByLog()
                                                       rangeMax, String sortColumn, String sortType
                                                       String customer, String logId, int rangeMin,
      MC2       getTracesByLog()
                                                       int rangeMax
                                                       String variant, int rangeMin, int rangeMax,
      MC3       getTracesByVariant()
                                                       String sortColumn, String sortType
                                                       String caseid, int rangeMin, int rangeMax,
      MC4       getEventsByTrace()
                                                       String sortColumn, String sortType
    MC5         getHeaderEventTable()                  String caseid
    MC6         getLogInformation()                    String customer, String logId
    MC7         getNumberOfVariantsByLog()             String customer, String logId
    MC8         getNumberOfTracesByLog()               String customer, String logId
    MC9         getNumberOfTracesByVariant()           String variant
    MC10        getNumberOfEventsByTrace()             String caseid
                                   Tabella 4.1: Servizi nel backend.
22                                          CAPITOLO 4. PROGETTAZIONE

     Codice    Descrizione
      MU1      Restituisce la lista di tutti i PID dell’utente.
               Restituisce una risposta HttpResponse che indica
      MU2
               se l’upload è avvenuto con successo o meno.
               Restituisce le varianti in ordine di occorrenza (o secondo
               un certo ordine che può essere crescente o decrescente)
               estraendo solo quelle del range incluso fra i due parametri
      MC1      in input. Più in dettaglio, ritorna un file JSON contenente
               una lista di dizionari dove ciascuno contiene come chiavi
               ciascun attributo presente nel log e come valori i rispettivi
               valori degli attributi.
               Restituisce tutte le tracce del log in ordine di occorrenza
               (o secondo un certo ordine che può essere crescente o
               decrescente) estraendo solo quelle del range incluso fra
      MC2      i due parametri in input. Più in dettaglio, ritorna un
               file JSON contenente una lista di dizionari dove ciascuno
               contiene come chiavi ciascun attributo presente nel log e
               come valori i rispettivi valori degli attributi.
               Restituisce le tracce della variante selezionata in ordine
               di occorrenza (o secondo un certo ordine che può essere
               crescente o decrescente) estraendo solo quelle del range
      MC3      incluso fra i due parametri in input. Più in dettaglio,
               ritorna un file JSON contenente una lista di dizionari dove
               ciascuno contiene come chiavi ciascun attributo presente
               nel log e come valori i rispettivi valori degli attributi.
               Restituisce gli eventi della traccia selezionata in ordine
               di occorrenza (o secondo un certo ordine che può essere
               crescente o decrescente) estraendo solo quelle del range
      MC4      incluso fra i due parametri in input. Più in dettaglio,
               ritorna un file JSON contenente una lista di dizionari dove
               ciascuno contiene come chiavi ciascun attributo presente
               nel log e come valori i rispettivi valori degli attributi.
               Restituisce una stringa che rappresenta l’intestazione per
               la tabella degli eventi e delle impostazioni sulle funzionalità
      MC5
               delle colonne (ordinamento, ridimensionamento e larghezza
               della colonna).
               Restituisce un file JSON che contiene le informazioni
      MC6
               generali di un log.
     MC7       Restituisce il numero totale di varianti del log.
     MC8       Restituisce il numero totale di tracce del log.
     MC9       Restituisce il numero di tracce della variante selezionata.
     MC10      Restituisce il numero di eventi della traccia selezionata.
              Tabella 4.2: Descrizione dei servizi nel backend.
4.6. DOCUMENTAZIONE                                                                  23

4.6     Documentazione
Nel corso di tutto lo stage verrà scritta la documentazione che spiegherà in maniera
dettagliata lo svolgimento delle attività.
Per la scrittura della documentazione verrà utilizzato il software Evernote come imposto
dall’azienda.
Capitolo 5

Implementazione

5.1      Introduzione
In questo capitolo verrà spiegato il processo di implementazione delle interfacce grafiche
delle pagine web, dell’internazionalizzazione dell’applicativo e alla fine verrà mostrato
il diagramma delle classi finale.

5.2      Top-bar
Viene creata una top-bar da inserire all’inizio delle varie pagine per permettere all’utente
di spostarsi all’interno dell’applicativo di process mining.
Nella top-bar viene creato un menù ad hamburger, collocato a sinistra, con all’interno
un tasto per effettuare il logout dall’applicativo e a fianco viene scritto il titolo della
pagina corrente (figura 5.1). Nella parte destra della top-bar viene inserito un menù per
la navigazione tra le varie pagine dell’applicativo, composto da bottoni che contengono
delle icone realizzate usando il componente mat-icon di Angular Material (figura 5.2).
Per aiutare l’utente a capire a quali pagine sono collegate le varie voci del menù, viene
aggiunto un tooltip attivato al passaggio del cursore.
Per la scelta del colore da applicare alla top-bar e a tutte le pagine viene utilizzato
come riferimento un tool online.

                        Figura 5.1: Menù ad hamburger e titolo.

                   Figura 5.2: Menù per la navigazione tra le pagine.

                                            25
26                                              CAPITOLO 5. IMPLEMENTAZIONE

5.3       Pagina cases
Viene ora descritta in dettaglio la fase di implementazione della GUI (Graphic User
Interface) e delle funzionalità della pagina cases arrivando così ad ottenere un’interfaccia
grafica che permettesse all’utente l’esplorazione di un file di log (figura 5.3).
Per il posizionamento dei vari componenti nella pagina viene utilizzato il grid system
di Bootstrap.

               Figura 5.3: Nuova interfaccia di esplorazione dei file di log.

5.3.1      Servizio log
Tutte le chiamate POST al server, necessarie alla pagina cases, vengono delegate ad un
servizio creato appositamente chiamato log. In questo modo la classe CasesComponent
si limita a chiamare i metodi del servizio creato che ritornano oggetti di tipo Observable
che contengono i dati richiesti.
Di seguito viene fatto un elenco dei metodi che troviamo nel servizio e del loro compito:

     • getVariantsByLog(): questo metodo ritorna tutte le possibili varianti del log;

     • getTracesByLog(): restituisce tutte tracce del log;

     • getTracesByVariant(): questo metodo restituisce tutte le tracce del log di una
       determinata variante;

     • getEventsByTrace(): ritorna tutti gli eventi del log di una determinata traccia;

     • getHeaderEventTable(): questo metodo ritorna l’intestazione della tabella degli
       eventi;

     • getLogInformation(): questo metodo ritorna le informazioni di un log;

     • getNumberOfVariants(): questo metodo restituisce il numero di varianti del
       log;

     • getNumberOfTotalTraces(): ritorna il numero totale di tracce del log;
5.3. PAGINA CASES                                                                        27

   • getNumberOfTraces(): restituisce il numero di tracce del log che corrispondono
     alla variante specificata;

   • getNumberOfEvents(): questo metodo ritorna il numero di eventi del log che
     corrispondono al case ID specificato.

Per i metodi getVariantsByLog(), getTracesByVariant(), getEventsByTrace() e
getTracesByLog(), l’oggetto restituito, contiene esattamente cento elementi dato che
ogni pagina delle tabelle può contenere al massimo cento elementi.

5.3.2     Tabelle
Per la creazione delle tre tabelle viene utilizzato il componente ag-Grid che permette
di disporre i dati in forma tabellare e fornisce molte funzionalità per la gestione dei
dati in essa contenuti.
Le tabelle delle varianti e delle tracce hanno una propria intestazione che è uguale per
tutti i file di log mentre l’intestazione della tabella degli eventi è formata da campi
fissi più dei campi aggiuntivi che variano in base al file da “esplorare”.
Per questo motivo, l’intestazione della terza tabella viene ricavata invocando il metodo
getHeaderTraceByLog(), del servizio log, che ritorna l’intestazione corretta da inserire
in tabella.
Al primo caricamento della pagina vengono inserite le intestazioni nelle prime due
tabelle e vengono invocati i metodi getVariantsByLog() e getTracesByLog(), del
servizio log, che ritornano rispettivamente tutte le varianti e tutte le tracce del file di
log che verranno poi inserite nelle corrispondenti tabelle. Quando l’utente seleziona
una voce della tabella delle varianti, le tracce vengono filtrate eliminando quelle non
inerenti alla variante selezionata. La stessa cosa accade se viene selezionata una traccia,
ovvero apparirà una terza tabella che conterrà solo gli eventi che compongono la traccia
selezionata.
Viene implementato l’ordinamento sulle colonne messo a disposizione dal componente
ag-Grid che effettua l’ordinamento di tutte le voci della pagina corrente della tabella
in base alla colonna selezionata.

5.3.3     Esplorazione delle tabelle
Ai lati delle tabelle vengono inseriti dei pulsanti per consentire all’utente l’esplorazione
delle tabelle. Nello specifico, quando l’utente clicca uno dei sei tasti, vengono svolte le
seguenti azioni:

   1. Aggiornamento del numero attuale di pagina;

   2. Calcolo dei nuovi range per recuperare il blocco di dati corretto;

   3. Recupero dei nuovi dati da visualizzare invocando i metodi del servizio log come
      segue:

         • getVariantsByLog(): per ottenere i precedenti o successivi cento elementi,
           rispetto alla pagina attuale, della tabella delle varianti;
         • getTracesByLog(): per ottenere i precedenti o successivi cento elementi,
           rispetto alla pagina attuale, della tabella delle tracce di tutto il file di log;
28                                               CAPITOLO 5. IMPLEMENTAZIONE

          • getTracesByVariant(): per ottenere i precedenti o successivi cento ele-
            menti, rispetto alla pagina attuale, della tabella delle tracce di una variante
            selezionata;
          • getEventsByTrace(): per ottenere i precedenti o successivi cento elemen-
            ti, rispetto alla pagina attuale, della tabella degli eventi di una traccia
            selezionata.

     4. Inserimento dei nuovi dati nella corrispondente tabella;

     5. Calcolo del numero totale di pagine per decidere se abilitare o disabilitare i tasti
        di esplorazione della tabella.

All’inizio di ogni tabella viene aggiunto il numero totale di voci presenti in tutte le
pagine di essa utilizzando i metodi getNumberOfVariants() e getNumberOfEvents()
rispettivamente per la tabella delle varianti e degli eventi.
Per ottenere il numero totale di voci della tabella delle tracce, vengono utilizzati i
metodi getNumberOfTotalTraces() e getNumberOfTraces() che restituiscono rispet-
tivamente il numero totale di tracce di un event log e il numero totale di tracce associate
ad una determinata variante.
Vengono implementati i controlli per abilitare e disabilitare i pulsanti per l’esplorazione
delle tabelle a seconda del numero di pagine della stessa:

     • Se la tabella ha solo una pagina vengono disabilitati entrambi i pulsanti;

     • Se la tabella ha un numero di pagine maggiore di 1 e l’utente si trova nella
       prima pagina, il tasto di sinistra viene disabilitato mentre quello di destra viene
       abilitato;

     • Se l’utente è arrivato all’ultima pagina il pulsante di destra viene disabilitato
       mentre quello di sinistra rimane abilitato.

Allo scopo di mantenere l’ordinamento delle voci delle tabelle anche durante la loro
esplorazione, vengono creati i metodi getSortModelVariantTable(),
getSortModelTraceTable() e getSortModelEventTable(), invocati nel momento in
cui l’utente applica l’ordinamento a una delle tre tabelle e che “catturano” il tipo di
ordinamento scelto e la colonna sulla quale viene fatto l’ordinamento.
Nel momento in cui l’utente cambia pagina e c’è un tipo di ordinamento impostato,
questo verrà applicato anche a quella nuova caricata.
L’ordinamento può essere di due tipi:

     • asc: l’ordinamento è crescente;

     • desc: l’ordinamento è decrescente.

5.3.4       Informazioni del file di log
All’inizio della pagina vengono mostrate le informazioni del file di log da esplorare, in
particolare:

     • Numero di varianti;

     • Numero di tracce;

     • Numero di eventi;
5.4. PAGINA UPLOAD                                                                  29

   • Numero di creatori dei task;
   • Durata media di una traccia.
Per ottenere tutte queste informazioni viene invocato il metodo getLogInformation(),
del servizio log, che recupera tutte le informazioni relative ad un determinato file di
log passato come parametro.
Per rendere più leggibile la durata media di una traccia viene creato il metodo
getFormatMillisecond() che riceve in input il tempo in millisecondi e restituisce una
stringa con il tempo rappresentato come segue: HHhr MMmin SSsec.

5.4     Pagina upload
Viene ora descritta in dettaglio la fase di implementazione della pagina upload arri-
vando ad ottenere un’interfaccia grafica che permettesse all’utente il caricamento e la
mappatura dei file di log (figura 5.4). Anche per questa pagina, per il posizionamento
dei componenti, viene utilizzato Bootstrap.

                 Figura 5.4: Nuova interfaccia di caricamento dei file.

5.4.1    Inserimento producer id
Per la scelta del producer id (PID) a cui aggiungere il file da caricare, abbiamo due
modalità:
   • Selezione dall’elenco dei PID già esistenti;
   • Creazione del nuovo PID tramite inserimento manuale.
Utilizzando il componente mat-select di Angular Material viene data la possibilità
all’utente di selezionare un PID. Il mat-select viene popolato con la lista di tutti i
PID, ottenuta effettuando una chiamata GET al backend ed invocando il metodo
getPIDsFromHistoricalPath() passandogli come parametro lo username dell’utente.
Per la seconda modalità di selezione viene creato un campo di input, a comparsa, in
cui l’utente può scrivere il nome del nuovo PID. Non appena l’utente seleziona un PID
30                                              CAPITOLO 5. IMPLEMENTAZIONE

comparirà un form per consentire la selezione ed il caricamento dei file.
Dopo il caricamento, il file verrà accodato automaticamente ai log già esistenti nel file
system e verrà aggiornata la lista di PID contenuta nel mat-select.

5.4.2      Form di caricamento dei file
Per il form di caricamento dei file viene utilizzato il componente Essential JS 2
Uploader. Questo componente consente di effettuare anche il caricamento di più file
contemporaneamente ma in questo caso viene implementato solo il caricamento di file
singoli dato che sono stati riscontrati dei problemi durante i tentativi di caricamento
di file multipli. È possibile selezionare un event log da caricare cliccando sul tasto
“BROWSE” del form e scegliere il file da un determinato percorso oppure tramite drag
and drop (figura 5.4). Tutti i file da caricare devono avere una dimensione massima di
10GB e devono essere in formato XES o CSV.
Al momento dell’upload del file viene fatta una chiamata POST al server che invoca il
metodo upload() a cui vengono passati i seguenti dati addizionali:

     • Nome utente;

     • PID;

     • Nome del file caricato;

     • Formato del file caricato;

     • Configurazione della mappatura dei file CSV.

Questi dati addizionali verranno utilizzati dal backend per inserire il file caricato nella
corretta cartella del PID e per la conversione del file da CSV a XES.
Vengono infine implementate le seguenti funzionalità offerte dal componente EJS 2
Uploader:

     ◦ Controllo del formato del file selezionato;

     ◦ Monitoraggio dello stato di avanzamento del caricamento del file;

     ◦ Messa in pausa del caricamento del file;

     ◦ Ripresa del caricamento del file;

     ◦ Interruzione del caricamento del file.

5.4.3      Mappatura dei file
Utilizzando il componente ag-Grid viene creata una tabella che contiene i dati del file
di log, che appare nel momento in cui si inserisce un file tramite selezione in formato
CSV nel form di caricamento. Si è tentato di implementare questa funzionalità anche
per l’inserimento tramite drag and drop purtroppo però si è scoperto che il componente
Essential JS possedeva un bug al proprio interno quindi si è deciso di permettere
all’utente la mappatura solo tramite selezione.
Per l’inserimento dei dati in tabella il componente ag-Grid richiedeva che questi fossero
inseriti sotto forma di elenco di array di dizionari come segue:
Puoi anche leggere