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

GWorkflowDL

Created by bassheide. Last edited by bassheide, one year and 104 days ago. Viewed 4,783 times. #18
[diff] [history] [edit] [rdf]
labels
attachments
PetriNetWeather_small.jpg (10837)
gworkflowdl_0_4.gif (16926)

Grid Workflow Description Language


Up to date information about the Grid Workflow Description Language is available at the >>GWorkflowDL software development site

Current GWorkflowDL examples are available at >>myExperiment.org


The Grid Workflow Description Language (GWorkflowDL) is being developed in the context of the K-Wf Grid and the CoreGRID projects as an extension of the existing Grid Job Definition Language (GJobDL), an XML-based language that makes use of the formalism of Petri nets in order to describe the dynamic behaviour of distributed Grid jobs. The GJobDL was developed for the Fraunhofer Resource Grid.

The advanced GWorkflowDL has the following features:

  1. In principle, the rules of coloured Petri nets apply [Jensen:94].
  2. Definition of transitions: may have reference to an OWL description of {operation, WSClassOperation, list of WSOperations, WSOperation}.
  3. A transition may also refer to a whole sub net -> hierarchical approach.
  4. Edges link transitions to input places and output places. Edge expressions are used to relate input places to a specific parameter of a Web Service operation.
  5. Definition of places: may have reference to an OWL description of data or parameters for type checking.
  6. Transitions may be annotated with conditions. Conditions could be expressed by XPath queries, by Web Service operations or other (user-defined) modules that return a Boolean value.
  7. Tokens are placed on places and contain high-level control information (e.g., true or false) or data related to the input and output parameters of the Web Service operations. Tokens store the state of the workflow.
One implementation of a Workflow Engine for the GWorkflowDL is the so-called GWES (Grid Workflow Execution Service).

GWorkflowDL XML Schema

Figure [GWorkflowDL0.4] represents the XML Schema of the GWorkflowDL version 0.4. The root element is called <workflow>, which contains the optional element <description> with a human-readable description of the workflow, and several occurrences of the elements <transition> and <place> that define the Petri net of the workflow. The element <transition> contains a child element <KWfGridExtension> which represents the special K-Wf Grid mapping of transitions onto several levels of abstraction regarding Web Service operations. The child elements <inputPlace> and <outputPlace> define the edges of the net.

gworkflowdl_0_4

Figure [GWorkflowDL0.4]: Graphical representation of the XML Schema of the GWorkflowDL version 0.4. Legend of the symbols: ?=0..1; *=0,1,2,...; +=1,2,3,...

The following XML code shows the complete XML Schema of the GWorkflowDL version 0.4.

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
 <xs:annotation>
  <xs:documentation>
   Copyright K-Wf Grid project team (>>http://www.kwfgrid.net/)  2005 
   Written by Andreas Hoheisel, Hans-Werner Pohl, and Tilman Linden
   Fraunhofer FIRST (>>http://www.first.fraunhofer.de/)
  </xs:documentation>
 </xs:annotation>
 <xs:element name = "workflow">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref = "description" minOccurs = "0"/>
    <xs:choice minOccurs = "0" maxOccurs = "unbounded">
     <xs:element name = "transition">
      <xs:complexType>
       <xs:sequence>
        <xs:element ref = "description" minOccurs = "0"/>
        <xs:element name = "inputPlace" type = "placeRef" maxOccurs = "unbounded"/>
        <xs:element name = "outputPlace" type = "placeRef" maxOccurs = "unbounded"/>
        <xs:element name = "KWfGridExtension" minOccurs = "0">
         <xs:complexType>
          <xs:sequence>
           <xs:element name = "condition" type = "xs:string" minOccurs = "0" maxOccurs = "unbounded"/>
           <xs:element name = "operation" minOccurs = "0">
            <xs:complexType>
             <xs:sequence>
              <xs:element name = "WSClassOperation" minOccurs = "0">
               <xs:complexType>
                <xs:sequence>
                 <xs:element name = "WSOperation" minOccurs = "0" maxOccurs = "unbounded">
                  <xs:complexType>
                   <xs:attribute name = "selected" default = "false" type = "xs:boolean"/>
                   <xs:attribute name = "name" type = "xs:string"/>
                   <xs:attribute name = "owl" type = "xs:string"/>
                  </xs:complexType>
                 </xs:element>
                </xs:sequence>
                <xs:attribute name = "name" type = "xs:string"/>
                <xs:attribute name = "owl" type = "xs:string"/>
               </xs:complexType>
              </xs:element>
             </xs:sequence>
             <xs:attribute name = "name" type = "xs:string"/>
             <xs:attribute name = "owl" type = "xs:string"/>
            </xs:complexType>
           </xs:element>
          </xs:sequence>
         </xs:complexType>
        </xs:element>
       </xs:sequence>
       <xs:attribute name = "ID" use = "required" type = "xs:ID"/>
      </xs:complexType>
     </xs:element>
     <xs:element name = "place">
      <xs:complexType>
       <xs:sequence>
        <xs:element ref = "description" minOccurs = "0"/>
        <xs:element name = "token" minOccurs = "0" maxOccurs = "unbounded"/>
       </xs:sequence>
       <xs:attribute name = "ID" use = "required" type = "xs:ID"/>
      </xs:complexType>
     </xs:element>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:complexType name = "placeRef">
  <xs:attribute name = "placeID" use = "required" type = "xs:string"/>
  <xs:attribute name = "edgeExpression" type = "xs:string"/>
 </xs:complexType>
 <xs:element name = "description" type = "xs:string"/>
</xs:schema>

Example

Figure [PetriNet] shows the graphical representation of a Petri net-based workflow description that contains two operations (weatherModel, and visualisation). The data that is available is represented by the token on the place "begin". The following code snippet shows the corresponding XML description of this workflow. The first transition weatherModel has been mapped onto a concrete Web Service operation while the second transition visualisation is still on an abstract level.

PetriNetWeather_small

Figure [PetriNet]. The graphical representation of a simple, Petri-net-based workflow description.

<?xml version = "1.0" encoding = "ISO-8859-1"?>
<workflow xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "http://www.gridworkflow.org/fhrg/gworkflowdl_0_4.xsd">
 <description>example workflow  involving a weather model and a visualisation of the output data</description>
 <place ID = "begin">
  <token>grid>>ftp://fhrg.first.fraunhofer.de/data/mm5input.dat</token>
 </place>
 <place ID = "end"/>
 <!-- transition related to a specific web service operation -->
 <transition ID = "weatherModel">
  <description>weather model</description>
  <inputPlace placeID = "begin" edgeExpression = "input"/>
  <outputPlace placeID = "weatherModelOutput" edgeExpression = "output"/>
  <KWfGridExtension>
   <operation name = "weatherModel" owl = "weatherModel.xml">
    <WSClassOperation name = "MM5" owl = "mm5.xml">
     <WSOperation name = "mm5@first" owl = "http://fhrg.first.fraunhofer.de/ws/mm5/calc"/>
     <WSOperation name = "mm5@cyfronet" owl = "http://agh.edu.pl/ws/mm5/calc"/>
     <WSOperation name = "mm5@iisas" owl = "http://savba.sk/ws/mm5/calc" selected = "true"/>
    </WSClassOperation>
   </operation>
  </KWfGridExtension>
 </transition>
 <place ID = "weatherModelOutput"/>
 <!-- transition related to an abstract operation that is not defined yet -->
 <transition ID = "visualisation">
  <description>Visualisation of weather data</description>
  <inputPlace placeID = "weatherModelOutput" edgeExpression = "input"/>
  <outputPlace placeID = "end" edgeExpression = "output"/>
  <KWfGridExtension>
   <operation name = "weatherVisualisation" owl = "weatherVisualisation.xml"/>
  </KWfGridExtension>
 </transition>
</workflow>
no comments | post comment
gridworkflow.org | Copyright 2005-2008 Fraunhofer FIRST