# YAWL
## Présentation

YAWL (acronyme de Yet Another Workflow Language) est un langage graphique de programmation de workflow.
Comme son nom l'indique, c'est un langage de workflow basé sur des modèles de workflow, pris en charge par un système logiciel qui comprend un moteur d'exécution, un éditeur graphique et un gestionnaire de liste de travail. Il est disponible en tant que logiciel open source sous licence LGPL
Les implémentations de YAWL au niveau de la production incluent le déploiement au Royaume-Uni pour automatiser les processus de service front-end, et par l'école australienne de cinéma, de télévision et de radio pour coordonner les processus de tournage de films.

## Caractéristiques

* Prise en charge complète des modèles de flux de travail.
* Prise en charge de politiques avancées d’allocation des ressources, y compris le principe des quatre yeux et l’exécution en chaîne.
* Prise en charge de l'adaptation dynamique des modèles de workflow grâce à la notion de "worklets".
* Fonctionnalités sophistiquées de validation du modèle de flux de travail (par exemple, détection des blocages au moment de la conception).
* Modèle basé sur XML pour la définition et la manipulation de données basé sur XML Schema, XPath et XQuery.
* Interfaces basées sur XML pour surveiller et contrôler les instances de flux de travail et pour accéder aux journaux d'exécution.
* Interfaces de plug-in basées sur XML pour connecter des services Web tiers au système, y compris des gestionnaires de listes de travail/tâches tiers.
* Génération automatisée de formulaires à partir d'un schéma XML.

## Contexte historique

Le langage et son système de support ont été initialement développés par des chercheurs de l’Université de technologie d’Eindhoven et de l’Université de technologie du Queensland. Par la suite, plusieurs organisations telles qu'InterContinental Hotels Group et ATOS Worldline ont contribué à l'initiative.
Les objectifs initiaux de YAWL étaient de définir un langage de workflow qui prendrait en charge tous (ou la plupart) des modèles de workflow et qui aurait une sémantique formelle. Constatant que les réseaux de Petri étaient sur le point de prendre en charge la plupart des modèles de flux de travail, les concepteurs de YAWL ont décidé de prendre les réseaux de Petri comme point de départ et d'étendre ce formalisme avec trois constructions principales, à savoir l'or-join, les ensembles d'annulation et les activités multi-instances. Ces trois concepts visent à prendre en charge cinq des modèles de workflow qui n'étaient pas directement pris en charge dans les réseaux de Petri, à savoir la synchronisation de la fusion, le discriminateur, la jointure N-sur-M, les instances multiples sans connaissance a priori de l'exécution et le cas d'annulation.
De plus, YAWL ajoute des éléments syntaxiques aux réseaux de Petri afin de capturer intuitivement d'autres modèles de flux de travail tels que le choix simple (xor-split), la fusion simple (xor-join) et le choix multiple (or-split). Lors de la conception du langage, il s'est avéré que certaines des extensions ajoutées aux réseaux de Petri étaient difficiles, voire impossibles, à réencoder dans des réseaux de Petri simples. En conséquence, la sémantique formelle originale de YAWL est définie comme un système de transition étiqueté et non en termes de réseaux de Petri. Le fait que YAWL soit basé sur une sémantique formelle a permis la mise en œuvre de plusieurs techniques d'analyse des processus YAWL. Le système YAWL comprend notamment un outil d'analyse statique appelé WofYAWL.