SlideShare a Scribd company logo
1 of 38
Strumenti per la gestione dei processi BPEL e BPMN Michele Malgaretto  2 Aprile 2009
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 OASIS L'ultima versione è la 2.0
BPEL e SOA Un'architettura SOA (Service Oriented Architetture) è un'architettura software basata su Web Services, che utilizza fondamentalmente tre standard: ,[object Object],[object Object],[object Object],Ruoli in SOA
BPEL ,[object Object],[object Object],[object Object],[object Object]
BPEL – Le Activities Le Activities ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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=&quot;ncname&quot;  // riferimenti WSDL portType=&quot;qname&quot;  // riferimenti WSDL operation=&quot;ncname&quot;  // funzione da richiamare inputVariable=&quot;ncname&quot; // nelle chiamate asincrone è specificata  solamente la variabile in input. outputVariable=&quot;ncname&quot;>  // per le chiamate sincrone </ invoke >
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=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot; faultName=&quot;qname&quot;> </ reply > <receive  partnerLink=&quot;ncname&quot;  // riferimenti WSDL (regole di ricezione) portType=&quot;qname&quot;  // riferimenti WSDL operation=&quot;ncname&quot;  // operazione che si vuole invocare variable=&quot;ncname&quot;  // valore in input createInstance=&quot;yes|no&quot;  // creazione o meno del processo a seconda se l'attività è quella iniziale </receive>
BPEL – Le Activities - Semplici Throw – le eccezioni Definisce un messaggio di errore. < throw  faultName=&quot;qname&quot;  faultVariable=&quot;ncname&quot; </throw>  Wait Sospende il processo per un determinato periodo di tempo o fino a quando non si verifica un determinato evento. < wait  (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;) />  (es. deadline-expr = “2004-12-31T10:00+1:00”)
BPEL – Le Activities - Semplici Empty Questa tipologia di Activities è utile quando c'è la necessità di non fare nulla, per esempio quando un errore necessita di essere “catturato” e “sopresso”. < empty  />  Assign L’attività di assign permette di aggiornare i valori delle variabili, quindi permette di copiare dati di tipo compatibile da una variabile ad un'altra . Exit Termina 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>
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>
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>
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 >
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=&quot;WaitingFor&quot; createInstance=&quot;yes&quot;> < onMessage  partnerLink=&quot;client&quot; portType=&quot;client:BPELProcess&quot; operation=&quot;initiate&quot; variable=&quot;OnMessage_initiate_InputVariable&quot;> <assign name=&quot;copyMessage&quot;> <copy> <from variable=&quot;inputVariable&quot; part=&quot;payload&quot; query=&quot;/client:BPELProcessRequest/client:input&quot;/> <to variable=&quot;outputVariable&quot; part=&quot;payload&quot; query=&quot;/client:BPELProcessResponse/client:result&quot;/> </copy> </assign></onMessage></pick>
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>
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=&quot;BPELVariableName&quot;  parallel=&quot;yes|no&quot;  // permette l'esecuzione in parallelo standard-attributes> standard-elements < startCounterValue  expressionLanguage=&quot;anyURI&quot;?> unsigned-integer-expression </ startCounterValue > < finalCounterValue  expressionLanguage=&quot;anyURI&quot;?> unsigned-integer-expression </ finalCounterValue > <completionCondition> ... </completionCondition> <scope ...>...</scope> </forEach>
BPEL – Visione finale
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.2 http://www.bpmn.org
BPMN Ecco un esempio di Work Flow conforme alle specifiche BPMN
BPMN ,[object Object],[object Object],[object Object],[object Object],[object Object]
BPMN – Flow Objects EVENTI L'evento è rappresentato da un cerchio ed è qualcosa che &quot;Accade&quot; 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.
BPMN – Connecting Objects SEQUENCE FLOW Una 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 FLOW Un messaggio di flusso è rappresentato da una freccia tratteggiata che è usata per mostrare il flusso di messaggi tra due Processi. ASSOCIATION L'associazione è rappresentata da una freccia punteggiata, ed è usata per associare dati, testi, e artefatti, con il flusso di oggetti.
BPMN –  Swimlanes POOL Una piscina rappresenta un  partecipante  in un ocesso LANES Un Lane è un sub-partizione all'interno di un Piscina e si estenderà l'intero lunghezza della piscina, sia in verticale che o in senso orizzontale. Sono usate per organizzare e classificare le attività.
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 TESTO Le 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
BPMN –  ESEMPIO
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?
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)
XPDL Quindi XPDL è un linguaggio STANDARD basato su XML che permette lo  stored  dei Work Flow BPMN. <xpdl2:Transition Id=&quot;TRANS1&quot; xpdExt:DisplayName=&quot;Room is free&quot; Name=&quot;Roomisfree&quot; From=&quot;ACT1&quot; To=&quot;ACT2&quot;> <xpdl2:ConnectorGraphicsInfos> <xpdl2:ConnectorGraphicsInfo BorderColor=&quot;222,0,128&quot; ToolId=&quot;XPD.ConnectionInfo&quot;/> </xpdl2:ConnectorGraphicsInfos> </xpdl2:Transition>
XPDL Qui di seguito la rappresentazione grafica del segmento di codice della slide precedente.
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=&quot;ACT1&quot; Name=&quot;Start&quot; xpdExt:DisplayName=&quot;Start&quot;> <xpdl2:Event> <xpdl2:StartEvent  Trigger =&quot;None&quot;/> </xpdl2:Event> <xpdl2:NodeGraphicsInfos> <xpdl2:NodeGraphicsInfo BorderColor=&quot;0,0,128&quot; FillColor=&quot;255,219,74&quot; Height=&quot;27.0&quot; LaneId=&quot;LANEx&quot; Width=&quot;27.0&quot;> <xpdl2:Coordinates XCoordinate=&quot;187.0&quot; YCoordinate=&quot;35.0&quot;/> </xpdl2:NodeGraphicsInfo> </xpdl2:NodeGraphicsInfos> </xpdl2:Activity>
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=&quot;ACT2&quot; Name=&quot;IsPaperworkCorrect&quot; xpdExt:DisplayName=&quot;Is Paperwork Correct?&quot;> <xpdl2:Route GatewayType=&quot;Exclusive&quot; MarkerVisible=&quot;true&quot; ExclusiveType=&quot;Data&quot;/> <xpdl2:TransitionRestrictions> <xpdl2:TransitionRestriction> <xpdl2:Join Type=&quot;Exclusive&quot; ExclusiveType=&quot;Data&quot;/> <xpdl2: Split  Type=&quot; Exclusive &quot; ExclusiveType=&quot;Data&quot;> <xpdl2:TransitionRefs> <xpdl2:TransitionRef Id=&quot;ACT1&quot;/> <xpdl2:TransitionRef Id=&quot;ACT2&quot;/> </xpdl2:TransitionRefs> </xpdl2:Split> </xpdl2:TransitionRestriction> </xpdl2:TransitionRestrictions> <xpdl2:NodeGraphicsInfos> ... </xpdl2:NodeGraphicsInfos> </xpdl2:Activity>
XPDL Vediamo ora come vengono rappresentati i due elementi in modalità grafica.
XPDL Alcuni software per il BPM -  TIBCO (opensource) -  INTALIO (opensource) -  eClarus (propietario)
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.
Tools per il BPM - TIBCO
Tools per il BPM - TIBCO
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
Tools per il BPM – INTALIO
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

More Related Content

Similar to BPM Standards

Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerMatteo Magni
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoJava User Group Roma
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5JBug Italy
 
Windows Workflow Foundation 4
Windows Workflow Foundation 4Windows Workflow Foundation 4
Windows Workflow Foundation 4Felice Pescatore
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance OptimizationAlessandro Martin
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDIMarco Brambilla
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Javascript Camp - Listener Per Eventi
Javascript Camp - Listener Per EventiJavascript Camp - Listener Per Eventi
Javascript Camp - Listener Per EventiSimone Gentili
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)jampslide
 

Similar to BPM Standards (20)

Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
4 Modulo Ge[1].Flow
4   Modulo Ge[1].Flow4   Modulo Ge[1].Flow
4 Modulo Ge[1].Flow
 
Javascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesignerJavascript - 7 | WebMaster & WebDesigner
Javascript - 7 | WebMaster & WebDesigner
 
Pycon Jungle
Pycon JunglePycon Jungle
Pycon Jungle
 
Ajax
AjaxAjax
Ajax
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano Ciccazzo
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5
 
Windows Workflow Foundation 4
Windows Workflow Foundation 4Windows Workflow Foundation 4
Windows Workflow Foundation 4
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Javascript Camp - Listener Per Eventi
Javascript Camp - Listener Per EventiJavascript Camp - Listener Per Eventi
Javascript Camp - Listener Per Eventi
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)
 
Yagwto
YagwtoYagwto
Yagwto
 
Js intro
Js introJs intro
Js intro
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
1 Programmazione
1   Programmazione1   Programmazione
1 Programmazione
 
Introduzione a Struts
Introduzione a StrutsIntroduzione a Struts
Introduzione a Struts
 

BPM Standards

  • 1. Strumenti per la gestione dei processi BPEL e BPMN Michele Malgaretto 2 Aprile 2009
  • 2. 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 OASIS L'ultima versione è la 2.0
  • 3.
  • 4.
  • 5.
  • 6. 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=&quot;ncname&quot; // riferimenti WSDL portType=&quot;qname&quot; // riferimenti WSDL operation=&quot;ncname&quot; // funzione da richiamare inputVariable=&quot;ncname&quot; // nelle chiamate asincrone è specificata solamente la variabile in input. outputVariable=&quot;ncname&quot;> // per le chiamate sincrone </ invoke >
  • 7. 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=&quot;ncname&quot; portType=&quot;qname&quot; operation=&quot;ncname&quot; variable=&quot;ncname&quot; faultName=&quot;qname&quot;> </ reply > <receive partnerLink=&quot;ncname&quot; // riferimenti WSDL (regole di ricezione) portType=&quot;qname&quot; // riferimenti WSDL operation=&quot;ncname&quot; // operazione che si vuole invocare variable=&quot;ncname&quot; // valore in input createInstance=&quot;yes|no&quot; // creazione o meno del processo a seconda se l'attività è quella iniziale </receive>
  • 8. BPEL – Le Activities - Semplici Throw – le eccezioni Definisce un messaggio di errore. < throw faultName=&quot;qname&quot; faultVariable=&quot;ncname&quot; </throw> Wait Sospende il processo per un determinato periodo di tempo o fino a quando non si verifica un determinato evento. < wait (for=&quot;duration-expr&quot; | until=&quot;deadline-expr&quot;) /> (es. deadline-expr = “2004-12-31T10:00+1:00”)
  • 9. BPEL – Le Activities - Semplici Empty Questa tipologia di Activities è utile quando c'è la necessità di non fare nulla, per esempio quando un errore necessita di essere “catturato” e “sopresso”. < empty /> Assign L’attività di assign permette di aggiornare i valori delle variabili, quindi permette di copiare dati di tipo compatibile da una variabile ad un'altra . Exit Termina 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>
  • 10. 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>
  • 11. 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>
  • 12. 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 >
  • 13. 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=&quot;WaitingFor&quot; createInstance=&quot;yes&quot;> < onMessage partnerLink=&quot;client&quot; portType=&quot;client:BPELProcess&quot; operation=&quot;initiate&quot; variable=&quot;OnMessage_initiate_InputVariable&quot;> <assign name=&quot;copyMessage&quot;> <copy> <from variable=&quot;inputVariable&quot; part=&quot;payload&quot; query=&quot;/client:BPELProcessRequest/client:input&quot;/> <to variable=&quot;outputVariable&quot; part=&quot;payload&quot; query=&quot;/client:BPELProcessResponse/client:result&quot;/> </copy> </assign></onMessage></pick>
  • 14. 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>
  • 15. 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=&quot;BPELVariableName&quot; parallel=&quot;yes|no&quot; // permette l'esecuzione in parallelo standard-attributes> standard-elements < startCounterValue expressionLanguage=&quot;anyURI&quot;?> unsigned-integer-expression </ startCounterValue > < finalCounterValue expressionLanguage=&quot;anyURI&quot;?> unsigned-integer-expression </ finalCounterValue > <completionCondition> ... </completionCondition> <scope ...>...</scope> </forEach>
  • 17. 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.2 http://www.bpmn.org
  • 18. BPMN Ecco un esempio di Work Flow conforme alle specifiche BPMN
  • 19.
  • 20. BPMN – Flow Objects EVENTI L'evento è rappresentato da un cerchio ed è qualcosa che &quot;Accade&quot; 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.
  • 21. BPMN – Connecting Objects SEQUENCE FLOW Una 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 FLOW Un messaggio di flusso è rappresentato da una freccia tratteggiata che è usata per mostrare il flusso di messaggi tra due Processi. ASSOCIATION L'associazione è rappresentata da una freccia punteggiata, ed è usata per associare dati, testi, e artefatti, con il flusso di oggetti.
  • 22. BPMN – Swimlanes POOL Una piscina rappresenta un partecipante in un ocesso LANES Un Lane è un sub-partizione all'interno di un Piscina e si estenderà l'intero lunghezza della piscina, sia in verticale che o in senso orizzontale. Sono usate per organizzare e classificare le attività.
  • 23. 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 TESTO Le 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
  • 24. BPMN – ESEMPIO
  • 25. 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?
  • 26. 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)
  • 27. XPDL Quindi XPDL è un linguaggio STANDARD basato su XML che permette lo stored dei Work Flow BPMN. <xpdl2:Transition Id=&quot;TRANS1&quot; xpdExt:DisplayName=&quot;Room is free&quot; Name=&quot;Roomisfree&quot; From=&quot;ACT1&quot; To=&quot;ACT2&quot;> <xpdl2:ConnectorGraphicsInfos> <xpdl2:ConnectorGraphicsInfo BorderColor=&quot;222,0,128&quot; ToolId=&quot;XPD.ConnectionInfo&quot;/> </xpdl2:ConnectorGraphicsInfos> </xpdl2:Transition>
  • 28. XPDL Qui di seguito la rappresentazione grafica del segmento di codice della slide precedente.
  • 29. 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=&quot;ACT1&quot; Name=&quot;Start&quot; xpdExt:DisplayName=&quot;Start&quot;> <xpdl2:Event> <xpdl2:StartEvent Trigger =&quot;None&quot;/> </xpdl2:Event> <xpdl2:NodeGraphicsInfos> <xpdl2:NodeGraphicsInfo BorderColor=&quot;0,0,128&quot; FillColor=&quot;255,219,74&quot; Height=&quot;27.0&quot; LaneId=&quot;LANEx&quot; Width=&quot;27.0&quot;> <xpdl2:Coordinates XCoordinate=&quot;187.0&quot; YCoordinate=&quot;35.0&quot;/> </xpdl2:NodeGraphicsInfo> </xpdl2:NodeGraphicsInfos> </xpdl2:Activity>
  • 30. 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=&quot;ACT2&quot; Name=&quot;IsPaperworkCorrect&quot; xpdExt:DisplayName=&quot;Is Paperwork Correct?&quot;> <xpdl2:Route GatewayType=&quot;Exclusive&quot; MarkerVisible=&quot;true&quot; ExclusiveType=&quot;Data&quot;/> <xpdl2:TransitionRestrictions> <xpdl2:TransitionRestriction> <xpdl2:Join Type=&quot;Exclusive&quot; ExclusiveType=&quot;Data&quot;/> <xpdl2: Split Type=&quot; Exclusive &quot; ExclusiveType=&quot;Data&quot;> <xpdl2:TransitionRefs> <xpdl2:TransitionRef Id=&quot;ACT1&quot;/> <xpdl2:TransitionRef Id=&quot;ACT2&quot;/> </xpdl2:TransitionRefs> </xpdl2:Split> </xpdl2:TransitionRestriction> </xpdl2:TransitionRestrictions> <xpdl2:NodeGraphicsInfos> ... </xpdl2:NodeGraphicsInfos> </xpdl2:Activity>
  • 31. XPDL Vediamo ora come vengono rappresentati i due elementi in modalità grafica.
  • 32. XPDL Alcuni software per il BPM - TIBCO (opensource) - INTALIO (opensource) - eClarus (propietario)
  • 33. 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.
  • 34. Tools per il BPM - TIBCO
  • 35. Tools per il BPM - TIBCO
  • 36. 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
  • 37. Tools per il BPM – INTALIO
  • 38. 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