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:
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 email@example.com or firstname.lastname@example.org.
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) > 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 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 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
Below you find a visual representation of this Operation XML Schema.