38
Strumenti per la gestione dei processi BPEL e BPMN Michele Malgaretto 2 Aprile 2009

BPM Standards

Embed Size (px)

DESCRIPTION

Una rassegna degli standard BPM

Citation preview

Page 1: BPM Standards

Strumenti per la gestione dei processi

BPEL e BPMN

Michele Malgaretto

2 Aprile 2009

Page 2: BPM Standards

BPEL

Che cos'è?BPEL ( Business Process Execution Language ) è un meta linguaggio basato su XML

A cosa serve?- Permette l'Orchestrazione di Servizi.

- Permette di creare nuovi Services (più complessi) componendone altri esistenti

Dove lo si usa?BPEL trova la sua naturale collocazione in architetture di tipo SOA, cioè in architetture basata su Servizi (Web Services).

E' standardizzato dal 2003 da OASISL'ultima versione è la 2.0

Page 3: BPM Standards

BPEL e SOA

Un'architettura SOA (Service Oriented Architetture) è un'architettura software basata su Web Services, che utilizza fondamentalmente tre standard:

• WSDL (è un linguaggi basato su XML necessario per descrivere le interfacce pubbliche dei Web Services )

• UDDI (è un linguaggio basato su XML che contiene i riferimenti (fra cui gli indirizzi Web) dei Web service pubblicati dal Service Provider)

• SOAP (è il protocollo per l'invio e la ricezione dei messaggi )

Ruoli in SOA

Page 4: BPM Standards

BPEL

Come avviene l'orchestrazione?L'Orchestrazione dei servizi avviene per mezzo delle così note Activities che possono essere

SEMPLICI

STRUTTURATE

Page 5: BPM Standards

BPEL – Le Activities

Le Activities

SEMPLICI

Invoke Receive & Reply Assign Throw Wait Empty Exit Re-Throw

STRUTTURATE

Sequenziale (Sequence) Condizionale (if) Ripetitiva (while,repeat until,for each) Selettiva (pick) Parallelizzabile (flow)

Page 6: BPM Standards

BPEL – Le Activities - Semplici

InvokeÈ usata per richiamare il Web Services offerto dal Service Provider (la richiesta può essere request-response o one-way)

<invoke partnerLink="ncname" // riferimenti WSDL portType="qname" // riferimenti WSDL operation="ncname" // funzione da richiamare inputVariable="ncname"// nelle chiamate asincrone è specificata solamente la variabile in input. outputVariable="ncname"> // per le chiamate sincrone</invoke>

Page 7: BPM Standards

BPEL – Le Activities - Semplici

Receive & Reply

Rappresenta l’activity di ingresso del processo. Più precisamente, rappresenta la ricezione di un messaggio. Con receive si può decidere se, alla ricezione di un nuovo messaggio, si debba creare una nuova istanza del processo, oppure se si sta semplicemente ricevendo un messaggio: questa differenziazione è utile in caso di chiamate a web service orchestrati da BPEL, in quanto evita di creare nuove istanze ogni volta che viene restituita da essi la risposta della loro elaborazione al processo stesso.

Reply è usata per inviare una risposta dopo una receive.

<reply partnerLink="ncname" portType="qname" operation="ncname" variable="ncname" faultName="qname"></reply>

<receive partnerLink="ncname" // riferimenti WSDL (regole di ricezione) portType="qname" // riferimenti WSDL operation="ncname" // operazione che si vuole invocare variable="ncname" // valore in input createInstance="yes|no" // creazione o meno del processo a seconda se l'attività è quella iniziale</receive>

Page 8: BPM Standards

BPEL – Le Activities - Semplici

Throw – le eccezioniDefinisce un messaggio di errore.

<throw faultName="qname" faultVariable="ncname"

</throw>

WaitSospende il processo per un determinato periodo di tempo o fino a quando non si verifica un determinato evento.

<wait (for="duration-expr" | until="deadline-expr") /> (es. deadline-expr = “2004-12-31T10:00+1:00”)

Page 9: BPM Standards

BPEL – Le Activities - Semplici

EmptyQuesta tipologia di Activities è utile quando c'è la necessità di non fare nulla, per esempio quando un errore necessita di essere “catturato” e “sopresso”.

<empty />

AssignL’attività di assign permette di aggiornare i valori delle variabili, quindi permette di copiare dati di tipo compatibile da una variabile ad un'altra .

ExitTermina il processo immediatamente

X

<assign ><copy>

<from variable=”input ” /><to variable=”output” />

</copy></assign>

<assign ><copy>

<from variable=”input ” ><xsd:integer>100</xsd:integer></from><to variable=”output” />

</copy></assign>

Page 10: BPM Standards

BPEL – Le Activities - Strutturate

Sequenziale <Sequence> L'attivities <sequence> contiene una o più attività che sono tra di loro sequenziali a seconda dell'ordine con cui sono scritte all'interno del tag. L'activities sequence finisce quando l'ultima attività è completata.

<sequence>

<receive> ... </receive> <invoke> ... </invoke>

<flow> ... </flow> <scope> … </scope> <pick> ... </pick>

</sequnce>

Page 11: BPM Standards

BPEL – Le Activities - Strutturate

Condizionale if <if>

L'attivities <if> funziona proprio come un costrutto funzionale di un qualsiasi linguaggio di programmazione e comprende le opzioni <else>, <elseif> e <condition>.

<if standard-attributes> <condition>...</condition> activity <elseif> <condition></condition> activity </elseif> <else> activity </else></if>

Page 12: BPM Standards

BPEL – Le Activities - Strutturate

Ripetitiva while <while>,<repeatUntil>

L'attivities <while> permette di ripetere l'esecuzione di un'attività .

<while standard-attributes> <condition>...</condition> activity</while>

<repeatUntil standard-attributes> activity <condition>...</condition></repeatUntil>

Page 13: BPM Standards

BPEL – Le Activities - Strutturate

pick <pick>

L'activity <pick> aspetta l'occorenza esatta di un evento per cominciare l'esecuzione delle activities. (un esempio di evento potrebbe essere onMessage che è molto simile al funzionamento di receive)

<pick name="WaitingFor" createInstance="yes"><onMessage partnerLink="client" portType="client:BPELProcess"operation="initiate"variable="OnMessage_initiate_InputVariable"><assign name="copyMessage">

<copy><from variable="inputVariable" part="payload" query="/client:BPELProcessRequest/client:input"/><to variable="outputVariable" part="payload"query="/client:BPELProcessResponse/client:result"/>

</copy></assign></onMessage></pick>

Page 14: BPM Standards

BPEL – Le Activities - Strutturate

flow <flow>

L'activity <flow> è l'attività che permette la parallelizzazione delle attività. Cioè esegue le attività al suo interno in parallelo. Termina solamente quando tutte le attività sono completate.

<sequence> <flow> <invoke partnerLink=”” ... /> <invoke partnerLink=”” ... /> </flow> <invoke partnerLink=”” ... /></sequence>

Page 15: BPM Standards

BPEL – Le Activities - Strutturate

forEach <forEach>

L'activity <forEach> eseguirà il contenuto di <scope> N+1 volte dove N equivale al <finalCounterValue> meno <startCounterValue>. (se start > final scope activity non viene eseguita e termina).

< forEach counterName="BPELVariableName" parallel="yes|no" // permette l'esecuzione in parallelostandard-attributes>

standard-elements <startCounterValue expressionLanguage="anyURI"?> unsigned-integer-expression </startCounterValue> <finalCounterValue expressionLanguage="anyURI"?> unsigned-integer-expression </finalCounterValue> <completionCondition> ... </completionCondition> <scope ...>...</scope>

</forEach>

Page 16: BPM Standards

BPEL – Visione finale

Page 17: BPM Standards

BPMN

BPMN è un insieme di specifiche, introdotte dal BPMI (Business Process Management Initiative) che definiscono la notazione standard per la modellazione dei processi. La caratteristica fondamentale di BPMN è che ha uniformato le specifiche di modellazione dei work flow per i processi.

Attualmente è alla versione 1.2http://www.bpmn.org

Page 18: BPM Standards

BPMN

Ecco un esempio di Work Flow conforme alle specifiche BPMN

Page 19: BPM Standards

BPMN

BPMN quindi essendo una notazione ha diviso i vari elementi in 4 categorie

• Flow Objects

• Connecting Objects

• Swimlanes

• Artifacts

Page 20: BPM Standards

BPMN – Flow Objects

EVENTI

L'evento è rappresentato da un cerchio ed è qualcosa che "Accade" nel corso di un processo. Questi Eventi influenzano il flusso naturale del processo e di solito hanno una causa (trigger) o un impatto (result). La prima notazione indica lo start del processo, la seconda un evento intermedio (di solito si usa indicare il trigger all'interno) e il terzo indica la fine del processo.

ACTIVITIES

L'attività è rappresentata da un rettangolo con angoli arrotondati con al centro un termine generico che indica il lavoro che svolge. L'attività può essere atomica o non atomica (composti). L'attività non atomica comprende un Sub-Processo e viene indicata con un segno nella parte bassa del rettangolo

DECISIONALI

Un gateway è rappresentato da un rombo, ed è usato per controllare la divergenza e la convergenza di Sequenze Flow. Pertanto sarà utile per rappresentare il biforcare, la fusione e giunzione di sentieri.All'interno viene specificato il tipo di controllo.

Page 21: BPM Standards

BPMN – Connecting Objects

SEQUENCE FLOWUna sequenza di flusso è rappresentato da una freccia solida che è usata per mostrare l'ordine (la sequenza), con cui le attività saranno eseguite nel processo.

MESSAGE FLOWUn messaggio di flusso è rappresentato da una freccia tratteggiata che è usata per mostrare il flusso di messaggi tra due Processi.

ASSOCIATIONL'associazione è rappresentata da una freccia punteggiata, ed è usata per associare dati, testi, e artefatti, con il flusso di oggetti.

Page 22: BPM Standards

BPMN – Swimlanes

POOL Una piscina rappresenta un partecipante in unocesso

LANESUn Lane è un sub-partizione all'interno di un Piscina e si estenderà l'intero lunghezza della piscina, sia in verticale cheo in senso orizzontale. Sono usate per organizzare e classificare le attività.

Page 23: BPM Standards

BPMN – Artifacts

DATA OBJECT

Data Objects sono un meccanismo per mostrare quali dati sono necessari o sono prodotti da un'attività. Essi sono collegati alle attività attraverso Association.

ANNOTAZIONI di TESTOLe annotazioni sono un meccanismo che aiutano il modellatore a fornire ulteriori informazioni al lettore di un diagramma BPMN.

GRUPPI Permette di creare dei raggruppamenti logici

Page 24: BPM Standards

BPMN – ESEMPIO

Page 25: BPM Standards

BPMN & XPDL

Fino ad ora abbiamo visto qual'è la notazione per

modellare Work Flow di processi, ma a cosa ci serve?Ci serve per avere un linguaggio comune per esprimere i Work Flow...

- ma come viene gestito questo standard a livello software?

Page 26: BPM Standards

BPMN & XPDL

Inizialmente ogni produttore di software per BPM implementava BPMN con soluzione proprietarie.

Mancava uno standard

In questo senso si è mosso il WfMC (Work Flow Management Coalition) che ha creato XPDL, giunto alla versione 2.1. (http://www.wfmc.org)

Page 27: BPM Standards

XPDL

Quindi XPDL è un linguaggio STANDARD basato su XML che permette lo stored dei Work Flow BPMN.

<xpdl2:Transition Id="TRANS1" xpdExt:DisplayName="Room is free" Name="Roomisfree" From="ACT1" To="ACT2"> <xpdl2:ConnectorGraphicsInfos> <xpdl2:ConnectorGraphicsInfo BorderColor="222,0,128" ToolId="XPD.ConnectionInfo"/> </xpdl2:ConnectorGraphicsInfos></xpdl2:Transition>

Page 28: BPM Standards

XPDL

Qui di seguito la rappresentazione grafica del segmento di codice della slide precedente.

Page 29: BPM Standards

XPDL ← BPMN

Esempio di rappresentazione di un elemento Events (BPMN) in XPDL v2.1 dove vengono introdotte anche le coordinate per il posizionamento degli elementi in modo da garantire anche una visualizzazione standard indipendentemente dal tools.

<xpdl2:Activity Id="ACT1" Name="Start" xpdExt:DisplayName="Start"> <xpdl2:Event> <xpdl2:StartEvent Trigger="None"/> </xpdl2:Event> <xpdl2:NodeGraphicsInfos> <xpdl2:NodeGraphicsInfo BorderColor="0,0,128" FillColor="255,219,74" Height="27.0" LaneId="LANEx" Width="27.0"> <xpdl2:Coordinates XCoordinate="187.0" YCoordinate="35.0"/> </xpdl2:NodeGraphicsInfo> </xpdl2:NodeGraphicsInfos></xpdl2:Activity>

Page 30: BPM Standards

XPDL ← BPMN

In questo caso invece viene rappresentato un oggetto di tipo Gateway che permette di diversificare la “rotta” del flusso in seguito per esempio ad una condizione.<xpdl2:Activity Id="ACT2" Name="IsPaperworkCorrect" xpdExt:DisplayName="Is Paperwork Correct?"> <xpdl2:Route GatewayType="Exclusive" MarkerVisible="true" ExclusiveType="Data"/> <xpdl2:TransitionRestrictions> <xpdl2:TransitionRestriction> <xpdl2:Join Type="Exclusive" ExclusiveType="Data"/> <xpdl2:Split Type="Exclusive" ExclusiveType="Data"> <xpdl2:TransitionRefs> <xpdl2:TransitionRef Id="ACT1"/> <xpdl2:TransitionRef Id="ACT2"/> </xpdl2:TransitionRefs> </xpdl2:Split> </xpdl2:TransitionRestriction> </xpdl2:TransitionRestrictions> <xpdl2:NodeGraphicsInfos> ... </xpdl2:NodeGraphicsInfos></xpdl2:Activity>

Page 31: BPM Standards

XPDL

Vediamo ora come vengono rappresentati i due elementi in modalità grafica.

Page 32: BPM Standards

XPDL

Alcuni software per il BPM

- TIBCO (opensource)

- INTALIO (opensource)

- eClarus (propietario)

Page 33: BPM Standards

Tools per il BPM - TIBCO

TIBCO

TIBCO azienda leader nello sviluppo di soluzioni software per il BPM ha implementato iProcess Suite, che è un insieme di strumenti che ti permettono di automatizzare e ottimizzare ogni tipo di processo. Si basa su architetture di tipo SOA quindi basate su Servizi

L'ambiente modeller basato su Eclipse è opensource.

Page 34: BPM Standards

Tools per il BPM - TIBCO

Page 35: BPM Standards

Tools per il BPM - TIBCO

Page 36: BPM Standards

Tools per il BPM - INTALIO

INTALIO è leader nella produzione di soluzioni software per il BPM opensource.

Mette a disposizione più pacchetti software per il BPM

- Product Edition - Business Edition - Developr Edition

- Community Edition

- Enterprise Edition

NON SUPPORTA L'XPDL. USA BPMN

Page 37: BPM Standards

Tools per il BPM – INTALIO

Page 38: BPM Standards

Tools per il BPM – eClarus

Supporta XPDL, BPEL, BPMN e SOA

Permette il passaggio da XPDL a BPEL e si basa su Eclipse.

Non è OpenSource

http://www.eclarus.com