• Non ci sono risultati.

6   R EALIZZAZIONE DEL PROTOTIPO 119

6.1   Introduzione ad Activiti 120

Activiti è un motore di gestione di processi di business descritti secondo la notazione BPMN 2.0.

È un software open source scritto in Java e distribuito sotto licenza Apache.

La notazione BPMN 2.0 è una specifica standard, che definisce la visualizzazione e la serializzazione XML dei processi di business e può essere estesa per includere funzionalità più avanzate.

Activiti è perfettamente integrato in Alfresco e mette a disposizione degli utenti un insieme di workflow documentali predefiniti:

-­‐ Adhoc: permette di assegnare un task ad un singolo utente.

-­‐ Esamina e approva: permette di avviare un processo di revisione e approvazione di un documento assegnando il compito ad un singolo utente. -­‐ Esamina e approva in gruppo: permette di avviare un processo di revisione e

approvazione di un documento assegnandolo agli utenti di un gruppo.

-­‐ Esamina e approva in parallelo: permette di avviare un processo di revisione e approvazione di un documento assegnando il compito ad utenti multipli. Oltre ai tipi di processi sopra citati, è possibile creare workflow avanzati e personalizzati che si adattino meglio alle esigenze degli utenti.

In Alfresco, un workflow consiste di un certo numero di artefatti (Fig.6.1): • Process definition

• Task model

• Share workflow UI • Resource bundle.

Figura 6.1. Artefatti di Alfresco.

Process definition.

La Process definition è la definizione del processo di business.

Il motore Activiti, integrato in Alfresco, accetta definizioni di processi scritte secondo la notazione BPMN 2.0. Essi sono sostanzialmente file XML che rappresentano e descrivono il processo attraverso l’utilizzo di task, eventi, gateway e altri elementi tipici della notazione BPMN.

Task model.

Il Task model definisce il modello dei contenuti per ogni task utente presente nella definizione del processo.

Il Task model consiste di: • Types • Properties • Property types • Constraint • Aspects. Types.

Il concetto di Types, o Tipi, è simile al concetto di Classe dei linguaggi Object Oriented. Essi sono usati per modellare oggetti di business e sono caratterizzati da alcune proprietà. I Tipi messi a disposizione da Alfresco sono ‘Content’, ‘Person’ e ‘Folder’. È comunque possibile creare Tipi personalizzati, adatti alle varie esigenze dettate dai requisiti di business.

Properties.

Le Properties, o Proprietà, sono metadati associati a uno specifico Tipo. Se i Tipi sono concettualmente simili alle classi, si può dire che le Proprietà si avvicinano al concetto di variabili della classe. Supponendo di avere un Tipo custom ‘Cliente’, le Proprietà che lo caratterizzano potrebbero essere tutte le informazioni legate ad esso, come ‘Nome_Cliente’, ‘Cognome_Cliente’, ‘Indirizzo_Cliente’ etc.

Property Types.

I Property Types, o Data Types, descrivono il tipo di dato utilizzato per memorizzare le Proprietà. I tipi di dato più comuni sono quelli fondamentali come String, Float, Date,

Constraints.

I Constraints, o Vincoli, possono essere utilizzati opzionalmente per restringere il dominio di una Proprietà. Alfresco mette a disposizione quattro tipi di vincoli: REGEX, LIST, MINMAX e LENGHT.

REGEX è utilizzato per far sì che i valori che può assumere una Proprietà, rispettino una data espressione regolare. Il vincolo LIST definisce una lista di possibili valori per una Proprietà. MINMAX fornisce un intervallo numerico per i valori della Proprietà. LENGHT impone una restrizione sulla lunghezza di una stringa.

Aspects.

Gli Aspect, o Aspetti, sono informazioni trasversali, più precisamente, proprietà condivise tra i Tipi utilizzati all’interno di un workflow. Può risultare conveniente far uso degli Aspetti nei casi in cui, all’interno di un processo, i Tipi condividano proprietà che necessitano di essere accedute frequentemente durante l’esecuzione del workflow.

Il Task model è utilizzato per la gestione e la modifica dell’interfaccia utente esposta durante l’esecuzione del processo all’interno della piattaforma Alfresco. È importante, ai fini della creazione e implementazione di un nuovo workflow, tener presente che a ogni task utente, presente nella definizione del processo, corrisponde un Tipo nel modello dei contenuti, con le rispettive Proprietà, Vincoli e Aspetti.

Figura 6.2. Esempio di Task Model

"wf:reviewOutcome" è un Tipo che si riferisce ad un task contenuto nella definizione

del processo, possiede una Proprietà wf:reviewOutcome di tipo d:text   e   può   assumere  una  lista  di  valori:  Approve o  Reject.

wf: è il namespace in cui sono dichiarati gli elementi.

Share Workflow UI.

È possibile personalizzare la presentazione dei task utente nei client Alfresco Share. La personalizzazione riguarda il modo in cui le Proprietà dei task e le informazioni legate al workflow sono visualizzate nell’interfaccia del client.

<type name="wf:activitiReviewTask">

<parent>bpm:activitiOutcomeTask</parent>

<properties>

<property name="wf:reviewOutcome">

<type>d:text</type>

<default>Reject</default>

<constraints>

<constraint name="wf:reviewOutcomeOptions" type="LIST">

<parameter name="allowedValues">

<list>

<value>Approve</value>

<value>Reject</value>

</list> </parameter> </constraint> </constraints> </property> </properties> </type>

Resource Bundle.

Un Resource bundle fornisce messaggi human-readable visualizzati nell’interfaccia utente del workflow. I messaggi includono i titoli dei task, i nomi delle Proprietà dei task etc.

La Figura 6.3 mostra la relazione tra la Process definition e il Task model all’interno del server e le configurazioni dell’interfaccia e i Resource Bundle nel client.

Documenti correlati