The Grid Workflow Description Language Toolbox

The GWorkflowDL is a description language for Grid workflows. 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 Grid Workflow Description Language please refer to:

Selected Publications:

  • 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 Grid 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 1.1):

                    
<workflow xmlns="http://www.gridworkflow.org/gworkflowdl"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xsi:schemaLocation="http://www.gridworkflow.org/gworkflowdl http://www.gridworkflow.org/kwfgrid/src/xsd/gworkflowdl_1_1.xsd
                              http://www.gridworkflow.org/gworkflowdl/operationclass http://www.gridworkflow.org/kwfgrid/src/xsd/gworkflowdl_operationclass_1_1.xsd"
          ID="No_ID">
  <description>little workflow example with condition, side effect, and places related to data classes</description>

  <!-- place that contains the initial input data as two tokens -->
  <place ID="begin">
    <token><data><value xsi:type="xsd:string">15 8 0</value></data></token>
    <token><data><value xsi:type="xsd:string">7 0 0</value></data></token>
  </place>

  <!--
    place that is related to the output data and that will hold the data instance(s) (=tokens)
    of the output data after the workflow enactment
    -->
  <place ID="outputData"/>

  <!-- place that describes a side effect -->
  <place ID="hasBeenSorted" />

  <!-- transition related to the "sort" Web Service -->
  <transition ID="sort">
    <description>sorts strings or numbers</description>

    <!-- SOAP input parameter "input" is linked to place with ID "begin" -->
    <inputPlace placeID="begin" edgeExpression="input" />

    <!-- SOAP response "output" is linked to place with ID "outputData" -->
    <outputPlace placeID="outputData" edgeExpression="output" />

    <!--
      side effect: after invocation of the SOAP method call, an (empty) token
      will be placed on place "hasBeenSorted".
      -->
    <outputPlace placeID="hasBeenSorted" />

    <!--
      condition expressed in XPath 1.0
      Here, the transition only fires if the input place contains a token of type string with a length > 0.
      $input is a placeholder and will (in this case) replaced during runtime by //place[@ID="begin"].
      -->
    <condition>string-length($input/gwdl:token/gwdl:data/*)&gt;0</condition>

    <operation>
      <!-- abstract description of the operation -->
      <oc:operationClass xmlns:oc="http://www.gridworkflow.org/gworkflowdl/operationclass" name="sort">

        <!-- concrete Web Service operation candidate -->
        <oc:wsOperation 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_1_1.xsd) . Additional schema documentation is available here. Below you find a visual representation of the GWorkflowDL version 1.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_1_1.xsd). Below you find a visual representation of this Operation XML Schema.