The Generic Workflow Description Language Toolbox

The GWorkflowDL is a generic description language for workflows in distributed environments. This software package contains the XML Schema as well as Java tools for creating, parsing, and editing GWorkflowDL documents.

The GWorkflowDL is based on High-Level Petri nets (HLPN, refer to ISO/IEC 15909-1), which are composed of a set of places visualized by circles, transitions visualized by squares, and flow relations represented by arcs from places to transitions or from transitions to places. In addition, places can be labeled with a partial capacity restriction specifying the maximum number of tokens hold by a place. In contrast to ordinary Petri Nets, the tokens of HLPNs are distinguishable and can be used to model high-level values, such as real input/output data, references to data (e.g., filenames or URLs), and boolean values representing side-effects. The distribution of tokens on places is called marking and represents the state of the distributed system. When an enabled transition occurs (fires), then one input token is consumed from each input place (e.g., holding input data) and one new output token is put on each output place (e.g., holding output data).

The module GWorkflowDL comprises a Java library for dealing with workflow representations such as construction, refinement and reading from and writing to XML workflow representations. Especially the operations of the execution control GWES are based on the GworkflowDL library. Interfaces and implementation classes are designed to ease implementation exchange to support future optimizations.

A special feature of the GworkflowDL is the support of different abstraction layers of transitions or operations respectively. The most abstract ones represent pure control functionality and the least abstract ones describe executable grid operations that are constructed by higher-level tools as WCT, AAB, and Scheduler.

Moreover, a tool is included to perform a static analysis of workflows at design-time and at run-time as well. The tool is based on the Karp-Miller-Tree construction and answers questions like "Has the workflow an infinite run?", "Is a certain place unbounded?", or "Can a certain transition fire at all?".

For further information about the Generic Workflow Description Language please refer to:

Selected Publications:

  • Andreas Hoheisel, Thorsten Dollmann, Michael Fellmann: Überführung von EPK-Modellen in ausführbare Grid- und Cloud-Prozesse. In: Markus Nüttgens; Frank J. Rump; Jan Mendling; Nick Gehrke (Hrsg.). EPK 2009 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten 8. Workshop der Gesellschaft für Informatik e.V. (GI) und Treffen ihres Arbeitkreises "Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten (WI-EPK)" 26. EPK-2009, November 26-27, Berlin, Germany, Pages 118-137, GI, Bonn, 2009.
  • Andreas Hoheisel and Martin Alt: Petri Nets. In: Workflows for e-Science - Scientific Workflows for Grids, Ian J. Taylor, Dennis Gannon, Ewa Deelman, and Matthew S. Shields (Eds.), Springer, 2006, ISBN: 978-1-84628-519-6
  • Falk Neubauer, Andreas Hoheisel, Joachim Geiler: Workflow-based Grid Applications. In: Peter Sloot (Ed.) Future Generation Computer Systems, Volume 22, Number 1-2, pp. 6-15, Elsevier, 2006
  • Martin Alt, Andreas Hoheisel, Hans-Werner Pohl, Sergei Gorlatch: Using High Level Petri-Nets for Describing and Analysing Hierarchical Grid Workflows. In: Proceedings of the CoreGRID Integration Workshop 2005, Pisa, 2005
  • Martin Alt, Andreas Hoheisel, Hans-Werner Pohl, Sergei Gorlatch: A Generic Workflow Language Using High-Level Petri Nets. In: Proceedings of the PPAM05, Poznan, 2005
  • Hoheisel, A.: User Tools and Languages for Graph-based Grid Workflows. In: Special Issue of Concurrency and Computation: Practice and Experience, (c) Wiley, 2005 (pdf 502kB, doi10.1002/cpe.1002)

Please regard that the license agreement allows the free use only for the Licensee's own scientific or educational purposes. Any use beyond - especially but not limited for commercial purposes - and/or distribution to third parties requires our prior written consent. In these cases please contact andreas.hoheisel@first.fraunhofer.de or steffen.unger@first.fraunhofer.de.

Examples

Here an example how to use the GWorkflowDL-API in Java:

import net.kwfgrid.gworkflowdl.structure.*;

...

//string "gworkflowdl" contains the XML document
String gworkflowdl = xmlstring;

//parse the gworkflowdl document
Workflow workflow = JdomString.string2workflow(gworkflowdl);

//print out the workflow description element
System.out.println(workflow.getDescription());

//get all place identifiers
String[] placeIDs = workflow.getPlaceIDs();

//get all transition identifiers
String[] transitionIDs = workflow.getTransitionIDs();

Here an example of a simple workflow that contains just one transition, one input place, and two output places. This example models the full set of Input, Ouput, Precondition, and Effect (IOPE).

And here the corresponding GWorkflowDL document (version 2.1):

                    
<?xml version="1.0" encoding="UTF-8"?>
<workflow xmlns="http://www.gridworkflow.org/gworkflowdl"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.gridworkflow.org/gworkflowdl http://www.gridworkflow.org/kwfgrid/src/xsd/gworkflowdl_2_1.xsd
                              http://www.gridworkflow.org/gworkflowdl/operationclass http://www.gridworkflow.org/kwfgrid/src/xsd/gworkflowdl_operationclass_2_0.xsd"
          ID="No_ID">

  <description>little workflow example with condition, side effect, and places related to data classes</description>
  <property name="occurrence.sequence" />
  <property name="faultManagementPolicy">AbortOnActivityTerminated</property>
  <place ID="begin">
    <token ID="d1">
      <data>
        <value xmlns="" xsi:type="xsd:string">15 8 0</value>
      </data>
    </token>
    <token ID="d2">
      <data>
        <value xmlns="" xsi:type="xsd:string">7 0 0</value>
      </data>
    </token>
  </place>
  <place ID="parameter">
    <token ID="d3">
      <data>
        <param xmlns="" xsi:type="xsd:string">-n</param>
      </data>
    </token>
    <token ID="d4">
      <data>
        <param xmlns="" xsi:type="xsd:string">-n</param>
      </data>
    </token>
  </place>
  <place ID="outputData" />
  <place ID="hasBeenSorted" />
  <transition ID="sort">
    <description>sorts strings or numbers</description>
    <property name="icon.url">http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/images/text.png</property>
    <inputPlace placeID="begin" edgeExpression="value" />
    <inputPlace placeID="parameter" edgeExpression="params" />
    <outputPlace placeID="outputData" edgeExpression="*" />
    <outputPlace placeID="hasBeenSorted" />
    <condition>string-length($value) &gt; 0</condition>
    <condition>$params/@xsi:type = "xsd:string"</condition>
    <operation>
      <oc:operationClass xmlns:oc="http://www.gridworkflow.org/gworkflowdl/operationclass" name="urn:dgrdl:service:sort">
        <oc:operationCandidate type="soap" operationName="sort" resourceName="http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl" selected="true" />
      </oc:operationClass>
    </operation>
  </transition>
</workflow>

The GWorkflowDL XML Schema

The current GWorkflowDL XML schema can be downloaded here (gworkflowdl_2_1.xsd). Additional schema documentation is available here. Below you find a visual representation of the GWorkflowDL version 2.1.

The Operation XML Schema

The GWorkflowDL XML schema itself does not contain the specification of operations, as this is normally context-specific. Therfore the <operation> element of the GWorkflowDL contains a wildcard (<xs:any/>), which allows you to include arbitrary operation descriptions. For the specification of Web Service operations and command line programs, we implemented a specific XML schema, which can be downloaded here (gworkflowdl_operationclass_2_0.xsd). Below you find a visual representation of this Operation XML Schema.