The Grid Workflow Forum
[ start | index | login ]
start > YAWL

YAWL

Created by Nuanda. Last edited by bassheide, 2 years and 334 days ago. Viewed 2,956 times. #21
[diff] [history] [edit] [rdf]
labels
attachments
YAWL-task-state-transitions.png (11605)
test.png (6049)

YAWL: Yet Another Workflow Language

YAWL is a workflow language built upon two main concepts: workflow patterns and Petri net. It was developed by taking Petri nets as a starting point and adding mechanisms to allow for a more direct and intuitive support of the workflow patterns identified. YAWL supports the control-flow perspective and the data perspective. For YAWL to be more applicable in the area of web services and Enterprise Application Integration, it is also desirable that support for communication patterns is built-in.

Some claims about YAWL:

  • OR, AND, and XOR splits/joins
  • single tasks are atomic ones or subworkflows
  • Web Services may be used as atomic tasks of a workflow
  • explicit parallelism (multiple instances of an atomic task)
  • cancellation of a part of a workflow by a particular task

Resources

Related

Examples

Example of a YAWL.xml file and its graph:

test

<?xml version="1.0" encoding="UTF-8"?>
<specificationSet xmlns="http://www.citi.qut.edu.au/yawl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="Beta 4" xsi:schemaLocation="http://www.citi.qut.edu.au/yawl d:/yawl/schema/YAWL_SchemaBeta4.xsd">
  <specification uri="test.ywl">
    <metaData />
    <schema xmlns="http://www.w3.org/2001/XMLSchema" />
    <decomposition id="YAWL_test_net" isRootNet="true" xsi:type="NetFactsType">
      <processControlElements>
        <inputCondition id="0_InputCondition">
          <flowsInto>
            <nextElementRef id="2_Anton" />
          </flowsInto>
        </inputCondition>
        <task id="2_Anton">
          <flowsInto>
            <nextElementRef id="3_Anton2" />
          </flowsInto>
          <flowsInto>
            <nextElementRef id="5_Berta" />
          </flowsInto>
          <join code="xor" />
          <split code="and" />
          <decomposesTo id="Anton" />
        </task>
        <task id="5_Berta">
          <flowsInto>
            <nextElementRef id="4_Cesar" />
          </flowsInto>
          <join code="xor" />
          <split code="and" />
          <decomposesTo id="Berta" />
        </task>
        <task id="3_Anton2">
          <flowsInto>
            <nextElementRef id="4_Cesar" />
          </flowsInto>
          <join code="xor" />
          <split code="and" />
          <decomposesTo id="Anton2" />
        </task>
        <task id="4_Cesar">
          <flowsInto>
            <nextElementRef id="1_OutputCondition" />
          </flowsInto>
          <join code="and" />
          <split code="and" />
          <decomposesTo id="Cesar" />
        </task>
        <outputCondition id="1_OutputCondition" />
      </processControlElements>
    </decomposition>
    <decomposition id="Berta" xsi:type="WebServiceGatewayFactsType" />
    <decomposition id="Anton" xsi:type="WebServiceGatewayFactsType" />
    <decomposition id="Anton2" xsi:type="WebServiceGatewayFactsType" />
    <decomposition id="Cesar" xsi:type="WebServiceGatewayFactsType" />
  </specification>
</specificationSet>

State Transitions

YAWL-task-state-transitions

State transitions of a YAWL task (from [van der Aalst and Hofstede, 2002])

no comments | post comment
gridworkflow.org | Copyright 2005-2008 Fraunhofer FIRST