3.7. Conductor service

Il coordinatore è basato su Netflix - Conductor una piattaforma gratuita e open source per l’orchestrazione dei microservizi, attraverso flussi di lavoro che definiscono le interazioni tra servizi, il progetto principale è stato forkato per permettere e gestire l’autenticazione e l’autorizzazione sull’esecuzione dei flussi e sul passaggio della stessa ai microservizi invocati dal flusso.

Nel progetto workflow-definition sono presenti le definizioni in formato json dei flussi necessari al completamento degli obiettivi del progetto.

3.7.1. Flusso principale - Amministrazione Trasparente

Importante

Il flusso principale necessita dei seguenti parametri di input per la sua corretta invocazione come mostrato in Tabella 3.1

Tabella 3.1 Parametri di Input per il flusso principale

Nome

Descrizione

Valore consigliato/default

Può essere Vuoto?

page_size

Dimensione della pagina per il recupero delle PA

2000

No

parent_workflow_id

Identificativo del flusso, viene valorizzato con UUID generato

vuoto

Si

codice_categoria

Se valorizzato filtra le PA che fanno parte della categoria

vuoto

Si

codice_ipa

Se valorizzato individua la singola PA

vuoto

Si

crawling_mode

Modalità base di esecuzione del crawler può assumere i valori httpStream e htmlSource

httpStream

No

crawler_save_object

Booleano indica se salvare sempre la pagina HTML

false

No

crawler_save_screenshot

Booleano indica se salvare sempre lo screenshot della pagina

false

No

rule_name

Nome della regola

amministrazione-trasparente

No

root_rule

Nome della regola di base dell’albero

amministrazione-trasparente

No

execute_child

Booleano indica se controllare le regole figlie

true

No

id_ipa_from

Identificativo numerico della PA da cui partire

0

No

connection_timeout

Timeout in millisecondi della connessione

60000

No

read_timeout

Timeout in millisecondi della lettura

60000

No

connection_timeout_max

Timeout in millisecondi della connessione

120000

No

read_timeout_max

Timeout in millisecondi della lettura

120000

No

crawler_child_type

Modalità di esecuzione dei flussi figli può assumere i valori SUB_WORKFLOW e START_WORKFLOW

START_WORKFLOW

No

rule_base_url

URL di base del microservizio delle Regole

URL

No

public_company_base_url

URL di base del microservizio delle PA

URL

No

result_aggregator_base_url

URL di base del microservizio Aggregato

URL

No

result_base_url

URL di base del microservizio dei Risultati

URL

No

crawler_uri

URL di base del microservizio Crawler

URL

No

3.7.2. Dettagli del flussso principale

Il primo TASK del flusso si occupa di invocare l’aggiornamento della configurazione del microservizio delle regole. Dopo aver valorizzato la variabile necessaria al controllo delle pagine elaborate, il flusso invoca il microservizio delle PA descritto in Public Sites Service e recupera le informazioni necessarie.

Il blocco recuperato contentente le informazioni di n PA viene parcellizzato in base al parametro fornito in input page_size e diviso per 10, utilizzando infine il TASK FORK/JOIN vengono eseguiti in parallello 10 istanze del flusso Rule valorizzando il parametro in input companies.

All’uscita del TASK delle PA, se il flusso è stato eseguito non per una singola PA, allora vengono rielaborati i risultati con i codici 400 e 407 con i timeout massimi ed eseguiti i flussi Crawler Result Failed.

Infine viene eseguito il TASK per elaborare la Mappa geolocalizzata dei risultati.

In Fig. 3.1 l’immagine del flusso:

Flusso principale - Amministrazione Trasparente

Fig. 3.1 Flusso principale - Amministrazione Trasparente

3.7.3. Flusso per singola Amministrazione

Il flusso Rule Detail come mostrato in Fig. 3.2 viene eseguito per una singola PA passata come parametro in input ipa, controlla inizialmente la presenza della URL istituzionale e successivamente invoca il crawler il cui risultato viene passato al microservizio delle regole e la cui risposta è utilizzata come input al Task dei risultati

Flusso per singola Amministrazione

Fig. 3.2 Flusso per singola Amministrazione