# Yawl (linguaggio)

YAWL (acronimo di Yet Another Workflow Language, leggasi "iol") è un linguaggio per workflow management basato sui Workflow Patterns. YAWL è corredato da un editor grafico ed un execution engine che ne costituiscono il sistema software. La specifica del linguaggio ed il software di supporto sono stati inizialmente concepiti e sviluppati all'interno di un progetto di ricerca nato dalla collaborazione tra Eindhoven University of Technology e Queensland University of Technology. In seguito diverse organizzazioni come InterContinental Hotels Group, first:telecom e ATOS Worldline Archiviato il 16 gennaio 2007 in Internet Archive. hanno aderito all'iniziativa con il loro contributo, dando vita alla YAWL Foundation. Oggi il sistema YAWL è distribuito come software Open Source sotto licenza LGPL.
YAWL è nato dalla necessità di definire un linguaggio per workflow basato su una semantica formale ed in grado di offrire supporto per tutti i Workflow Patterns. Osservando che le reti di Petri supportano la maggior parte dei pattern, gli sviluppatori di YAWL decisero di usarle come punto di partenza estendendone la formalizzazione con tre costrutti principali: or-join, cancellation sets e attività multi-instance. L'obiettivo delle estensioni era quello di supportare cinque workflow pattern che non trovano un riscontro diretto nelle reti di Petri, quali synchronizing merge, discriminator, N-out-of-M join, multiple instance with no a priori runtime knowledge e cancel case. Inoltre, in YAWL sono presenti alcuni elementi sintattici per esprimere in modo intuitivo altri pattern come 'simple choice' (xor-split), 'simple merge' (xor-join), e 'multiple choice' (or-split). Tuttavia, durante la definizione del linguaggio, ci si rese conto che alcune estensioni alle reti di Petri, erano difficili o addirittura impossibili da rappresentare nelle stesse reti di Petri. Pertanto, YAWL è stato definito come un Labelled Transition System e non in termini di reti di Petri. Il fatto che YAWL si basi su una semantica formale ha permesso l'implementazione di diverse tecniche per l'analisi dei suoi processi, tra cui un tool per l'analisi statica chiamato WofYAWL.
YAWL è spesso visto come un'alternativa al linguaggio BPEL. Uno dei vantaggi principali del BPEL è che la sua specifica è disciplinata da una commissione per la sua standardizzazione, attergata da numerose organizzazioni e vendor IT. Grazie a ciò BPEL può vantare di un numero significativo di tool (proprietari o open source) che lo supportano, mentre YAWL conta solo su un'unica implementazione. Inoltre, diversi ricercatori hanno investigato sulla possibilità di rappresentare sottoinsiemi del linguaggio BPEL in formalismi diversi quali reti di Petri, algebra dei processi e macchine a stati finiti. Ciò ha consentito lo sviluppo di tool per l'analisi statica di processi BPEL. Tali tool possono costituire un'alternativa a quelli offerti dal sistema YAWL. D'altro canto è stato dimostrato che il BPEL standard non provvede nessuna interfaccia standard con le risorse aziendali. In particolare BPEL non supporta gli 'human tasks', cioè quei compiti che non possono essere eseguiti elettronicamente, ma che richiedono di essere allocati a posizioni aziendali/ruoli umani per il loro completamento. Alcune implementazioni di BPEL offrono tale supporto, tuttavia tali caratteristiche non sono state ancora standardizzate nella specifica. Al contrario, il sistema YAWL prevede un'interfaccia unificata per l'allocazione dei compiti (worklist), basata sullo standard dei Web service. Tale interfaccia consente agli sviluppatori di integrare il proprio servizio per worklist, in modo da supportare le human tasks in base alle proprie necessità. In più, il sistema YAWL implementa un servizio per worklist di default, che supporta diversi tipi di allocazione e gestione di human task. Tuttavia, uno dei vantaggi principali di YAWL è il suo potere espressivo, dimostrato dal pieno supporto per i workflow pattern. YAWL permette infatti di esprimere qualsiasi tipo di semantica relativa al controllo di flusso in modo semplice ed intuitivo.

## Caratteristiche

* Supporto completo dei Workflow Patterns.
* Estensione delle reti di Petri - potente strumento per definire aspetti legati alla concorrenza.
* La sintassi e la semantica del flusso di controllo (control-flow perspective) vantano una definizione formale.
* Sofisticato supporto per l'analisi di specifiche di workflow a build time.
* Supporto per la persistenza di specifiche di workflow a run time, generazione automatica di form e workflow administration.
* L'approccio basato su worklet e Ripple Down Rules (RDR) costituisce una soluzione unica ai workflow dinamici.
* Supporto per sofisticate estensioni basate su Service-oriented Architecture (SOA).
* Supporto per aspetti temporali (timeout, ecc.).
* Supporto per i dati aziendali (data perspective) basato su tecnologia XML (XML Schema, XPath, XQuery).
* Supporto per le risorse organizzative (resource perspective) per mezzo di un servizio per worklist, gestito tramite interfaccia.