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:
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.
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/*)>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 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 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.