Business Process Execution Language
linguaggio di programmazione
Data di origineaprile 2003
Influenzato daXML

BPEL (sigla di Business Process Execution Language) è un linguaggio basato sull'XML costruito per descrivere formalmente i processi commerciali e industriali in modo da permettere una suddivisione dei compiti tra attori diversi.

Un'applicazione BPEL viene invocata come Web service e interagisce con il mondo esterno esclusivamente invocando altri Web service. In questo senso, essa stessa rappresenta una forma di coordinazione di servizi Web, permettendo altresì di comporre questi ultimi in maniera ricorsiva. L'ambiente runtime all'interno del quale viene eseguito il generico processo è detto motore BPEL.

Lo standard che definisce l'uso di BPEL nelle interazioni tra Web service è chiamato BPEL4WS o WS-BPEL. BPEL è nato come integrazione delle ricerche svolte da IBM e Microsoft su WSFL e XLANG, entrambi superati da BPEL. Nell'aprile del 2003 BPEL è stato sottoposto ad OASIS che lo ha standardizzato[1].

Il linguaggio BPEL

Il linguaggio BPEL permette di descrivere un processo di business mediante un insieme di attività, che possono essere semplici o strutturate. Le attività semplici esprimono una generica azione (ad es. invoca servizio, ricevi risposta, assegna valore ad una variabile, termina processo, ecc.), mentre quelle strutturate sono normalmente utilizzate per raggruppare attività semplici allo scopo di esprimere loop, operazioni condizionali, esecuzione sequenziale, esecuzione concorrente, ecc. L'intero processo è descritto mediante un'unica attività strutturata (top-level activity), generalmente di tipo sequenziale.

Un tag "scope" racchiude l'insieme di attività che compone una transazione atomica, ovvero un processo che può terminare con un "commit" o un "abort", senza stati intermedi, nel quale l'arresto del processo su un'attività comporta l'interruzione del processo e la cancellazione delle modifiche in scrittura al database durante le attività precedenti ("undo" delle attività). Questo è necessario ad esempio in una transazione bancaria/finanziaria nella quale ad ogni addebito deve corrispondere un accredito di somme.

Un diagramma di workflow contiene tipicamente operazioni, messaggi, attori (umani o applicativi), applicazioni che definiscono il web-service, condizioni logiche (IF), parallelismi, loop e task di sincronizzazione fra operazioni.

BPEL è in particolare adatto a modellare workflow completamente automatizzati, per la composizione di Web service l'integrazione di servizi (e applicazioni che li eseguono) eterogenee per hardware che li esegue, architetture di rete e linguaggio del relativo codice.

BPEL mette altresì a disposizione dei costrutti per esprimere le cosiddette transazioni di lungo periodo (long running transactions, LRT), che rappresentano un'estensione delle transazioni ACID al caso di processi di lunga durata mediante la nozione di compensazione delle attività eseguite. Ancora, il meccanismo della correlazione è utilizzato per tener traccia di una certa conversazione a livello business, identificando così una sorta di sessione tra più partecipanti ad una stessa istanza di processo.

BPEL consente di descrivere un workflow esistente oppure un processo astratto non eseguibile, trasformando in codice di programmazione una modellazione grafica che contiene la semantica descrivibile con i costrutti di UML. Questo è particolarmente utile per far comunicare software proprietari per la modellazione dei processi, che utilizzano terminologie e icone differenti per rappresentare quanto può essere descritto con una notazione UML. BPEL permette di esportare e importare questi diagrammi in un file.bpel da un database proprietario all'altro senza perdere il contenuto della rappresentazione.

La "receive" di un messaggio crea un'istanza del processo; istanze del processo differenti variano per il contenuto del messaggi scambiati. Perciò, un campo del messaggio identifica univocamente l'istanza di appartenenza in modo da inviare i corretti dati a ogni istanza di processo. I messaggi sono delle "Input/Output variable" per le quali BPEL crea in automatico il tipo appropriato (stringa, testo, numero), ossia ciò che serve alla persistenza dell'informazione durante l'esecuzione del workflow; messaggi con identico contenuto informativo vengono rappresentati con un'istruzione di "assign" che permette di associare ad una variabile il contenuto di un'altra.

Motori BPEL

Sono stati sviluppati vari motori BPEL, tra i quali:

Note

  1. ^ OASIS Web Services Business Process Execution Language (WSBPEL) TC, su oasis-open.org. URL consultato il 10 marzo 2020.

Altri progetti

Standard

Motori e implementazioni

Sviluppo di applicazioni BPEL

Articoli su BPEL

Controllo di autoritàLCCN (ENsh2006005369 · J9U (ENHE987007566690005171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica