[jbpm-commits] JBoss JBPM SVN: r6685 - in projects/migration_tool/trunk: src and 13 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Sep 27 11:32:04 EDT 2010


Author: marcolof
Date: 2010-09-27 11:32:02 -0400 (Mon, 27 Sep 2010)
New Revision: 6685

Added:
   projects/migration_tool/trunk/pom.xml
   projects/migration_tool/trunk/src/main/resources/Schemas/
   projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/
   projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/BPMN20.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramDefinition.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramInterchange.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/Semantic.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.0.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.1.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.2.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.3.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.0.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.2.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.3.xsd
   projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.4.xsd
   projects/migration_tool/trunk/src/main/xslt/
   projects/migration_tool/trunk/src/main/xslt/migrate.xslt
   projects/migration_tool/trunk/src/test/
   projects/migration_tool/trunk/src/test/java/
   projects/migration_tool/trunk/src/test/java/test/
   projects/migration_tool/trunk/src/test/java/test/XSLTTest.java
   projects/migration_tool/trunk/src/test/resources/
   projects/migration_tool/trunk/src/test/resources/bpmn/
   projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn.xml
   projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn_diagram
   projects/migration_tool/trunk/src/test/resources/jbjPDL4ToBPMN2.xsl
   projects/migration_tool/trunk/src/test/resources/jpdl/
   projects/migration_tool/trunk/src/test/resources/jpdl/test/
   projects/migration_tool/trunk/src/test/resources/jpdl/test/gpd.xml
   projects/migration_tool/trunk/src/test/resources/jpdl/test/processdefinition.xml
   projects/migration_tool/trunk/src/test/resources/jpdl/test/processimage.jpg
Modified:
   projects/migration_tool/trunk/
Log:
Initial update of project. 


Property changes on: projects/migration_tool/trunk
___________________________________________________________________
Name: svn:ignore
   - *.settings
*.classpath
*.project

   + *.settings
*.classpath
*.project

target


Added: projects/migration_tool/trunk/pom.xml
===================================================================
--- projects/migration_tool/trunk/pom.xml	                        (rev 0)
+++ projects/migration_tool/trunk/pom.xml	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <!-- Model Information -->
+    <modelVersion>4.0.0</modelVersion>
+    <prerequisites>
+        <maven>2.2.0</maven>
+    </prerequisites>
+   
+    <!-- The Basics -->
+    <groupId>jboss</groupId>
+    <artifactId>jpdl2bpmn2</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    
+    <name>jPDL to BPMN2 translator</name>
+    <description>jpdl to bpmn2 translation project</description>
+    
+    <developers>
+        <developer>
+            <id>erics</id>
+            <name>Eric Schabell</name>
+            <email>erics at redhat.com</email>
+            <roles>
+                <role>architect</role>
+            </roles>
+            <timezone>+2</timezone>
+        </developer>
+    </developers>
+    
+    <dependencies>
+    
+        <!-- XSLT -->
+        <dependency>
+            <groupId>xalan</groupId>
+            <artifactId>xalan</artifactId>
+            <version>2.7.1</version>
+        </dependency>
+        <dependency>
+            <groupId>xerces</groupId>
+            <artifactId>xercesImpl</artifactId>
+            <version>2.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>xml-apis</groupId>
+            <artifactId>xml-apis</artifactId>
+            <version>1.0.b2</version>
+        </dependency>
+        
+        <!-- Test -->
+        <dependency>
+	        <groupId>junit</groupId>
+	        <artifactId>junit</artifactId>
+	        <version>4.8.1</version>
+            <scope>test</scope>
+	    </dependency>
+    </dependencies>
+    
+    <build>
+        <testResources>
+            <testResource>
+                <directory>src/main/use_cases</directory>
+            </testResource>
+        </testResources>
+        <resources>
+            <resource>
+                <directory>src/main/xslt</directory>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.1</version>
+                <configuration>
+                   <source>1.6</source>
+                 <target>1.6</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    
+    <!-- 
+        <scm>...</scm> 
+     -->
+        
+    <!-- <properties> </properties> -->
+    
+    <!-- Environment Settings -->
+    <!-- <repositories> ... </repositories> <pluginRepositories> ... </pluginRepositories> -->
+    <!-- <profiles> ... </profiles> -->
+    
+</project>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/pom.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/BPMN20.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/BPMN20.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/BPMN20.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"	
+	xmlns="http://schema.omg.org/spec/BPMN/2.0"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	xmlns:di="http://www.omg.com/di/1.0.0"
+	targetNamespace="http://schema.omg.org/spec/BPMN/2.0">
+
+	<xsd:import namespace="http://www.omg.com/di/1.0.0" schemaLocation="DiagramInterchange.xsd"/>
+	<xsd:include schemaLocation="Semantic.xsd"/>
+
+	<xsd:element name="definitions" type="tDefinitions"/>
+	<xsd:complexType name="tDefinitions">
+		<xsd:sequence>
+			<xsd:element ref="import" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element ref="extension" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element ref="rootElement" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element ref="di:diagram" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element ref="relationship" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
+		<xsd:attribute name="targetNamespace" type="xsd:anyURI" use="required"/>
+		<xsd:attribute name="expressionLanguage" type="xsd:anyURI" use="optional" default="http://www.w3.org/1999/XPath"/>
+		<xsd:attribute name="typeLanguage" type="xsd:anyURI" use="optional" default="http://www.w3.org/2001/XMLSchema"/>
+		<xsd:anyAttribute namespace="##other" processContents="lax"/>
+	</xsd:complexType>
+	
+	<xsd:element name="import" type="tImport"/>
+	<xsd:complexType name="tImport">
+		<xsd:attribute name="namespace" type="xsd:anyURI" use="required"/>
+		<xsd:attribute name="location" type="xsd:string" use="required"/>
+		<xsd:attribute name="importType" type="xsd:anyURI" use="required"/>
+	</xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/BPMN20.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramDefinition.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramDefinition.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramDefinition.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.omg.com/dd/1.0.0" xmlns:dd="http://www.omg.com/dd/1.0.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+  <xsd:element name="namedElement" type="dd:NamedElement"/>
+  <xsd:element name="package" type="dd:Package"/>
+  <xsd:element name="viewDefinition" type="dd:ViewDefinition" abstract="true"/>
+  <xsd:element name="nodeDefinition" type="dd:NodeDefinition" substitutionGroup="dd:viewDefinition"/>
+  <xsd:element name="connectorDefinition" type="dd:ConnectorDefinition" substitutionGroup="dd:viewDefinition"/>
+  <xsd:element name="diagramDefinition" type="dd:DiagramDefinition" substitutionGroup="dd:viewDefinition"/>
+  <xsd:element name="childDefinition" type="dd:ChildDefinition"/>
+  <xsd:element name="styleDefinition" type="dd:StyleDefinition"/>
+  <xsd:element name="constraint" type="dd:Constraint"/>
+  
+  <xsd:complexType abstract="true" name="NamedElement">
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Package">
+    <xsd:complexContent>
+      <xsd:extension base="dd:NamedElement">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="dd:viewDefinition"/>
+        </xsd:sequence>
+        <xsd:attribute name="nsURI" type="xsd:anyURI" use="required"/>
+        <xsd:attribute name="nsPrefix" type="xsd:NCName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType abstract="true" name="ViewDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:NamedElement">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="dd:constraint"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="dd:styleDefinition"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="dd:childDefinition"/>
+        </xsd:sequence>
+        <xsd:attribute name="id" type="xsd:NCName" use="required"/>
+        <xsd:attribute name="abstract" type="xsd:boolean"/>
+        <xsd:attribute name="superDefinition" type="xsd:QName"/>
+        <xsd:attribute name="contextType" type="xsd:QName"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="NodeDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:ViewDefinition"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="ConnectorDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:ViewDefinition">
+        <xsd:attribute name="sourceDefinition" type="xsd:QName" use="required"/>
+        <xsd:attribute name="targetDefinition" type="xsd:QName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="DiagramDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:ViewDefinition"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="ChildDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:NamedElement">
+        <xsd:attribute name="lowerBound" type="xsd:int" default="0" />
+        <xsd:attribute name="upperBound" type="xsd:int" default="-1"/>
+        <xsd:attribute name="typeDefinition" type="xsd:QName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="StyleDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="dd:NamedElement">
+        <xsd:attribute name="default" type="xsd:string"/>
+        <xsd:attribute name="inherited" type="xsd:boolean" default="false"/>
+        <xsd:attribute name="type" type="xsd:QName" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Constraint">
+    <xsd:complexContent>
+      <xsd:extension base="dd:NamedElement">
+        <xsd:attribute name="condition" type="xsd:string" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramDefinition.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramInterchange.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramInterchange.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramInterchange.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.omg.com/di/1.0.0" xmlns:dd="http://www.omg.com/dd/1.0.0" xmlns:di="http://www.omg.com/di/1.0.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+  <xsd:import namespace="http://www.omg.com/dd/1.0.0" schemaLocation="DiagramDefinition.xsd"/>
+  
+  <xsd:element name="view" type="di:View"/>
+  <xsd:element name="diagram" type="di:Diagram" substitutionGroup="di:view"/>
+  <xsd:element name="node" type="di:Node" substitutionGroup="di:view"/>
+  <xsd:element name="connector" type="di:Connector" substitutionGroup="di:view"/>
+  <xsd:element name="style" type="di:Style"/>
+  <xsd:element name="bendpoint" type="di:Bendpoint"/>
+  
+  <xsd:complexType abstract="true" name="View">
+    <xsd:sequence>
+      <xsd:element maxOccurs="unbounded" minOccurs="0" ref="di:style"/>
+      <xsd:element maxOccurs="unbounded" minOccurs="0" name="child" type="di:Node" form="qualified"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:NCName" use="required"/>
+    <xsd:attribute name="context" type="xsd:anyURI"/>
+    <xsd:attribute name="definition" use="required">
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:QName"/>
+      </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="targetConnector">
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:anyURI"/>
+      </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="sourceConnector">
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:anyURI"/>
+      </xsd:simpleType>
+    </xsd:attribute>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Diagram">
+    <xsd:complexContent>
+      <xsd:extension base="di:View">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="di:connector"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Node">
+    <xsd:complexContent>
+      <xsd:extension base="di:View"/>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Connector">
+    <xsd:complexContent>
+      <xsd:extension base="di:View">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="di:bendpoint"/>
+        </xsd:sequence>
+        <xsd:attribute name="source" type="xsd:anyURI" use="required"/>
+        <xsd:attribute name="target" type="xsd:anyURI" use="required"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Style">
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:attribute name="value" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  
+  <xsd:complexType name="Bendpoint">
+    <xsd:attribute name="sourceX" type="xsd:int" use="required"/>
+    <xsd:attribute name="sourceY" type="xsd:int" use="required"/>
+    <xsd:attribute name="targetX" type="xsd:int" use="required"/>
+    <xsd:attribute name="targetY" type="xsd:int" use="required"/>
+  </xsd:complexType>
+  
+</xsd:schema>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/DiagramInterchange.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/Semantic.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/Semantic.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/Semantic.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,1540 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
+	xmlns="http://schema.omg.org/spec/BPMN/2.0" 
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+	targetNamespace="http://schema.omg.org/spec/BPMN/2.0">
+	
+	<xsd:element name="activity" type="tActivity"/>
+	<xsd:complexType name="tActivity" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowNode">
+				<xsd:sequence>
+					<xsd:element ref="ioSpecification" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="dataInputAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="dataOutputAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="activityResource" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="loopCharacteristics" minOccurs="0"/>
+				</xsd:sequence>
+				<xsd:attribute name="isForCompensation" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="startQuantity" type="xsd:integer" default="1"/>
+				<xsd:attribute name="completionQuantity" type="xsd:integer" default="1"/>
+				<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="activityResource" type="tActivityResource"/>
+	<xsd:complexType name="tActivityResource">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="resourceAssignmentExpression" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="resourceParameterBinding" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="resourceRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="adHocSubProcess" type="tAdHocSubProcess" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tAdHocSubProcess">
+		<xsd:complexContent>
+			<xsd:extension base="tSubProcess">
+				<xsd:sequence>
+					<xsd:element name="completionCondition" type="tExpression" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="cancelRemainingInstances" type="xsd:boolean" default="true"/>
+				<xsd:attribute name="ordering" type="tAdHocOrdering"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:simpleType name="tAdHocOrdering">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="parallel"/>
+			<xsd:enumeration value="sequential"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+
+	<xsd:element name="artifact" type="tArtifact"/>
+	<xsd:complexType name="tArtifact" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="assignment" type="tAssignment" />
+	<xsd:complexType name="tAssignment">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="from" type="tBaseElementWithMixedContent" minOccurs="1" maxOccurs="1"/>
+					<xsd:element name="to" type="tBaseElementWithMixedContent" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="language" type="xsd:anyURI"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="association" type="tAssociation" substitutionGroup="artifact"/>
+	<xsd:complexType name="tAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tArtifact">
+				<xsd:attribute name="sourceRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="targetRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="associationDirection" type="tAssociationDirection" default="none"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:simpleType name="tAssociationDirection">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="none"/>
+			<xsd:enumeration value="one"/>
+			<xsd:enumeration value="both"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+
+	<xsd:element name="auditing" type="tAuditing"/>
+	<xsd:complexType name="tAuditing">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="baseElement" type="tBaseElement"/>
+	<xsd:complexType name="tBaseElement" abstract="true">
+		<xsd:sequence>
+			<xsd:element ref="documentation" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
+		<xsd:anyAttribute namespace="##other" processContents="lax"/>
+	</xsd:complexType>
+	
+	<xsd:element name="baseElementWithMixedContent" type="tBaseElementWithMixedContent"/>
+	<xsd:complexType name="tBaseElementWithMixedContent" abstract="true" mixed="true">
+		<xsd:sequence>
+			<xsd:element ref="documentation" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:element ref="category" minOccurs="0" maxOccurs="unbounded"/>
+			<xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
+		<xsd:anyAttribute namespace="##other" processContents="lax"/>
+	</xsd:complexType>
+
+	<xsd:element name="boundaryEvent" type="tBoundaryEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tBoundaryEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tCatchEvent">
+				<xsd:attribute name="cancelActivity" type="xsd:boolean" default="true"/>
+				<xsd:attribute name="attachedToRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>			
+
+	<xsd:element name="businessRuleTask" type="tBusinessRuleTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tBusinessRuleTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="callableElement" type="tCallableElement"/>
+	<xsd:complexType name="tCallableElement">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element name="supportedInterfaceRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="ioSpecification" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="ioBinding" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="callActivity" type="tCallActivity" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tCallActivity">
+		<xsd:complexContent>
+			<xsd:extension base="tActivity">
+				<xsd:attribute name="calledElement" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="callChoreographyActivity" type="tCallChoreographyActivity" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tCallChoreographyActivity">
+		<xsd:complexContent>
+			<xsd:extension base="tChoreographyActivity">
+				<xsd:sequence>
+					<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>			
+				<xsd:attribute name="calledElement" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="callConversation" type="tCallConversation" substitutionGroup="conversationNode"/>
+	<xsd:complexType name="tCallConversation">
+		<xsd:complexContent>
+			<xsd:extension base="tConversationNode">
+				<xsd:sequence>
+					<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="calledElementRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="cancelEventDefinition" type="tCancelEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tCancelEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="catchEvent" type="tCatchEvent"/>
+	<xsd:complexType name="tCatchEvent" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tEvent">
+				<xsd:sequence>
+					<xsd:element ref="dataOutput" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="dataOutputAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="outputSet" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="eventDefinition" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="eventDefinitionRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="parallelMultiple" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="category" type="tCategory" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tCategory">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="categoryValue" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="categoryValue" type="tCategoryValue"/>
+	<xsd:complexType name="tCategoryValue">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="value" type="xsd:string" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="choreography" type="tChoreography" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tChoreography">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="conversation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="conversationAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlowAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="choreographyActivity" type="tChoreographyActivity"/>
+	<xsd:complexType name="tChoreographyActivity" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowNode">
+				<xsd:sequence>
+					<xsd:element name="participantRef" type="xsd:QName" minOccurs="2" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="initiatingParticipantRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="choreographySubProcess" type="tChoreographySubProcess" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tChoreographySubProcess">
+		<xsd:complexContent>
+			<xsd:extension base="tChoreographyActivity">
+				<xsd:sequence>
+					<xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="choreographyTask" type="tChoreographyTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tChoreographyTask">
+		<xsd:complexContent>
+			<xsd:extension base="tChoreographyActivity">
+				<xsd:sequence>
+					<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+				</xsd:sequence>			
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="collaboration" type="tCollaboration" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tCollaboration">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="conversation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="conversationAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlowAssociation" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="choreographyRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="communication" type="tCommunication" substitutionGroup="conversationNode"/>
+	<xsd:complexType name="tCommunication">
+		<xsd:complexContent>
+			<xsd:extension base="tConversationNode">
+				<xsd:sequence>
+					<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="correlationKeyRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="compensateEventDefinition" type="tCompensateEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tCompensateEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:attribute name="waitForCompletion" type="xsd:boolean"/>
+				<xsd:attribute name="activityRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="complexBehaviorDefinition" type="tComplexBehaviorDefinition"/>
+	<xsd:complexType name="tComplexBehaviorDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="condition" type="tFormalExpression" minOccurs="1" maxOccurs="1"/>
+					<xsd:element name="event" type="tImplicitThrowEvent" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="complexGateway" type="tComplexGateway" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tComplexGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tGateway">
+				<xsd:sequence>
+					<xsd:element name="activationCondition"  type="tExpression" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="default" type="xsd:IDREF"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="conditionalEventDefinition" type="tConditionalEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tConditionalEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:sequence>
+					<xsd:element name="condition" type="tExpression"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="conversation" type="tConversation" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tConversation">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="conversationNode" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="correlationKey" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="conversationAssociation" type="tConversationAssociation"/>
+	<xsd:complexType name="tConversationAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="conversationRef" type="xsd:QName"/>
+				<xsd:attribute name="correlationKeyRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="conversationNode" type="tConversationNode"/>
+	<xsd:complexType name="tConversationNode" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="participantRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="correlationKey" type="tCorrelationKey"/>
+	<xsd:complexType name="tCorrelationKey">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="correlationPropertyRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="correlationProperty" type="tCorrelationProperty" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tCorrelationProperty">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="correlationPropertyRetrievalExpression" minOccurs="1" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="correlationPropertyBinding" type="tCorrelationPropertyBinding"/>
+	<xsd:complexType name="tCorrelationPropertyBinding">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="dataPath" type="tFormalExpression" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="correlationPropertyRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="correlationPropertyRetrievalExpression" type="tCorrelationPropertyRetrievalExpression"/>
+	<xsd:complexType name="tCorrelationPropertyRetrievalExpression">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="messagePath" type="tFormalExpression" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="messageRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="correlationSubscription" type="tCorrelationSubscription"/>
+	<xsd:complexType name="tCorrelationSubscription">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="correlationPropertyBinding" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="process" type="xsd:QName" use="required"/>
+				<xsd:attribute name="correlationKeyRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="dataAssociation" type="tDataAssociation" />
+	<xsd:complexType name="tDataAssociation" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="transformation" type="tFormalExpression" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="assignment" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="dataInput" type="tDataInput" />
+	<xsd:complexType name="tDataInput">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="optional"/>
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName" />
+				<xsd:attribute name="isCollection" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataInputAssociation" type="tDataInputAssociation" />
+	<xsd:complexType name="tDataInputAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tDataAssociation">
+				<xsd:sequence>
+					<xsd:element name="sourceRef" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+					<xsd:element name="targetRef" type="xsd:QName" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataObject" type="tDataObject" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tDataObject">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+				<xsd:attribute name="isCollection" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataOutput" type="tDataOutput" />
+	<xsd:complexType name="tDataOutput">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="optional" />
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+				<xsd:attribute name="isCollection" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataOutputAssociation" type="tDataOutputAssociation" />
+	<xsd:complexType name="tDataOutputAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tDataAssociation">
+				<xsd:sequence>
+					<xsd:element name="sourceRef" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+					<xsd:element name="targetRef" type="xsd:QName" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataState" type="tDataState" />
+	<xsd:complexType name="tDataState">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataStore" type="tDataStore" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tDataStore">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="capacity" type="xsd:integer"/>
+				<xsd:attribute name="isUnlimited" type="xsd:boolean" default="true"/>
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="dataStoreReference" type="tDataStoreReference" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tDataStoreReference">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+				<xsd:attribute name="dataStoreRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="documentation" type="tDocumentation"/>
+	<xsd:complexType name="tDocumentation" mixed="true">
+		<xsd:sequence>
+			<xsd:any namespace="##any" processContents="lax" minOccurs="0"/>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
+	</xsd:complexType>
+	
+	<xsd:element name="endEvent" type="tEndEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tEndEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tThrowEvent"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="endPoint" type="tEndPoint" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tEndPoint">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>		
+	
+	<xsd:element name="error" type="tError" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tError">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="structureRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="errorEventDefinition" type="tErrorEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tErrorEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:attribute name="errorCode" type="xsd:string"/>
+				<xsd:attribute name="errorRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="escalation" type="tEscalation" substitutionGroup="rootElement"/>	
+	<xsd:complexType name="tEscalation">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="structureRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="escalationEventDefinition" type="tEscalationEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tEscalationEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:attribute name="escalationCode" type="xsd:string"/>
+				<xsd:attribute name="escalationRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="event" type="tEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tEvent" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowNode"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="eventBasedGateway" type="tEventBasedGateway" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tEventBasedGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tGateway">
+				<xsd:attribute name="instantiate" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="eventGatewayType" type="tEventBasedGatewayType" default="Exclusive"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:simpleType name="tEventBasedGatewayType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Exclusive"/>
+			<xsd:enumeration value="Parallel"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+
+	<xsd:element name="eventDefinition" type="tEventDefinition" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tEventDefinition" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>			
+
+	<xsd:element name="exclusiveGateway" type="tExclusiveGateway" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tExclusiveGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tGateway">
+				<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="expression" type="tExpression"/>
+	<xsd:complexType name="tExpression">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElementWithMixedContent"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="extension" type="tExtension"/>
+	<xsd:complexType name="tExtension">
+		<xsd:sequence>
+			<xsd:element ref="documentation" minOccurs="0" maxOccurs="unbounded"/>
+		</xsd:sequence>
+		<xsd:attribute name="definition" type="xsd:QName"/>
+		<xsd:attribute name="mustUnderstand" type="xsd:boolean" use="optional" default="false"/>
+	</xsd:complexType>
+	
+	<xsd:element name="flowElement" type="tFlowElement"/>
+	<xsd:complexType name="tFlowElement" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="auditing" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="monitoring" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="categoryValueRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="flowNode" type="tFlowNode"/>
+	<xsd:complexType name="tFlowNode" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowElement">
+				<xsd:sequence>
+					<xsd:element name="incoming" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="outgoing" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="formalExpression" type="tFormalExpression" substitutionGroup="expression"/>
+	<xsd:complexType name="tFormalExpression" mixed="true">
+		<xsd:complexContent>
+			<xsd:extension base="tExpression">
+				<xsd:attribute name="language" type="xsd:anyURI" use="optional"/>
+				<xsd:attribute name="evaluatesToTypeRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="gateway" type="tGateway" abstract="true"/>
+	<xsd:complexType name="tGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowNode">
+				<xsd:attribute name="gatewayDirection" type="tGatewayDirection" default="unspecified"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:simpleType name="tGatewayDirection">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="unspecified"/>
+			<xsd:enumeration value="converging"/>
+			<xsd:enumeration value="diverging"/>
+			<xsd:enumeration value="mixed"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+	
+	<xsd:element name="globalBusinessRuleTask" type="tGlobalBusinessRuleTask" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalBusinessRuleTask">
+		<xsd:complexContent>
+			<xsd:extension base="tGlobalTask"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="globalChoreographyTask" type="tGlobalChoreographyTask" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalChoreographyTask">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="initiatingParticipantRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="globalCommunication" type="tGlobalCommunication" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalCommunication">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="correlationKey" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="globalManualTask" type="tGlobalManualTask" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalManualTask">
+		<xsd:complexContent>
+			<xsd:extension base="tGlobalTask"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="globalScriptTask" type="tGlobalScriptTask"  substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalScriptTask">
+		<xsd:complexContent>
+			<xsd:extension base="tGlobalTask">
+				<xsd:sequence>
+					<xsd:element ref="script" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="scriptLanguage" type="xsd:anyURI"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="globalTask" type="tGlobalTask" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalTask">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="performer" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="globalUserTask" type="tGlobalUserTask" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tGlobalUserTask">
+		<xsd:complexContent>
+			<xsd:extension base="tGlobalTask">
+				<xsd:sequence>
+					<xsd:element ref="rendering" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="implementation" type="tUserTaskImplementation" default="unspecified"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="group" type="tGroup" substitutionGroup="artifact"/>
+	<xsd:complexType name="tGroup">
+		<xsd:complexContent>
+			<xsd:extension base="tArtifact">
+				<xsd:attribute name="categoryRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="humanPerformer" type="tHumanPerformer" substitutionGroup="performer"/>
+	<xsd:complexType name="tHumanPerformer">
+		<xsd:complexContent>
+			<xsd:extension base="tPerformer"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="implicitThrowEvent" type="tImplicitThrowEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tImplicitThrowEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tThrowEvent"/>
+		</xsd:complexContent>
+	</xsd:complexType>				
+	
+	<xsd:element name="inclusiveGateway" type="tInclusiveGateway" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tInclusiveGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tGateway">
+				<xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="inputSet" type="tInputSet" />
+	<xsd:complexType name="tInputSet">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="dataInputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="optionalInputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="whileExecutingInputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="outputSetRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" />
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="interface" type="tInterface" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tInterface">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="operation" minOccurs="1" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="intermediateCatchEvent" type="tIntermediateCatchEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tIntermediateCatchEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tCatchEvent"/>
+		</xsd:complexContent>
+	</xsd:complexType>			
+
+	<xsd:element name="intermediateThrowEvent" type="tIntermediateThrowEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tIntermediateThrowEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tThrowEvent"/>
+		</xsd:complexContent>
+	</xsd:complexType>				
+
+	<xsd:element name="ioBinding" type="tInputOutputBinding" />
+	<xsd:complexType name="tInputOutputBinding">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="operationRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="inputDataRef" type="xsd:IDREF" use="required"/>
+				<xsd:attribute name="outputDataRef" type="xsd:IDREF" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="ioSpecification" type="tInputOutputSpecification" />
+	<xsd:complexType name="tInputOutputSpecification">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="dataInput" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="dataOutput" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="inputSet" minOccurs="1" maxOccurs="unbounded"/>
+					<xsd:element ref="outputSet" minOccurs="1" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="itemDefinition" type="tItemDefinition" substitutionGroup="rootElement"/>	
+	<xsd:complexType name="tItemDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="structureRef" type="xsd:QName"/>
+				<xsd:attribute name="isCollection" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="itemKind" type="tItemKind" default="Information"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>		
+	
+	<xsd:simpleType name="tItemKind">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="Information"/>
+			<xsd:enumeration value="Physical"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+
+	<xsd:element name="lane" type="tLane"/>
+	<xsd:complexType name="tLane">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="partitionElement" type="tBaseElement" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="flowElementRef" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="childLaneSet" type="tLaneSet" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="partitionElementRef" type="xsd:IDREF"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="laneSet" type="tLaneSet"/>
+	<xsd:complexType name="tLaneSet">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="lane" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="linkEventDefinition" type="tLinkEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tLinkEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:attribute name="name" type="xsd:string" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="loopCharacteristics" type="tLoopCharacteristics"/>
+	<xsd:complexType name="tLoopCharacteristics" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="manualTask" type="tManualTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tManualTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="message" type="tMessage" substitutionGroup="rootElement"/>	
+	<xsd:complexType name="tMessage">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="structureRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>		
+	
+	<xsd:element name="messageEventDefinition" type="tMessageEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tMessageEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:sequence>
+					<xsd:element name="operationRef" type="xsd:QName" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="messageRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="messageFlow" type="tMessageFlow"/>
+	<xsd:complexType name="tMessageFlow">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="name" type="xsd:string" use="optional"/>
+				<xsd:attribute name="sourceRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="targetRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="messageRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="messageFlowAssociation" type="tMessageFlowAssociation"/>
+	<xsd:complexType name="tMessageFlowAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="innerMessageFlowRef" type="xsd:QName" use="required"/>
+				<xsd:attribute name="outerMessageFlowRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="monitoring" type="tMonitoring"/>
+	<xsd:complexType name="tMonitoring">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="multiInstanceLoopCharacteristics" type="tMultiInstanceLoopCharacteristics"  substitutionGroup="loopCharacteristics"/>
+	<xsd:complexType name="tMultiInstanceLoopCharacteristics">
+		<xsd:complexContent>
+			<xsd:extension base="tLoopCharacteristics">
+				<xsd:sequence>
+					<xsd:element name="loopCardinality" type="tExpression" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="loopDataInput" type="tDataInput" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="loopDataOutput" type="tDataOutput" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="inputDataItem" type="tProperty" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="outputDataItem" type="tProperty" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="complexBehaviorDefinition" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="completionCondition" type="tExpression" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="isSequential" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="behavior" type="tMultiInstanceFlowCondition" default="all"/>
+				<xsd:attribute name="oneBehaviorEventRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="noneBehaviorEventRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:simpleType name="tMultiInstanceFlowCondition">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="none"/>
+			<xsd:enumeration value="one"/>
+			<xsd:enumeration value="all"/>
+			<xsd:enumeration value="complex"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+	
+	<xsd:element name="operation" type="tOperation"/>
+	<xsd:complexType name="tOperation">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="inMessageRef" type="xsd:QName" minOccurs="1" maxOccurs="1"/>
+					<xsd:element name="outMessageRef" type="xsd:QName" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="errorRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="outputSet" type="tOutputSet" />
+	<xsd:complexType name="tOutputSet">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="dataOutputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="optionalOutputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="whileExecutingOutputRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="inputSetRefs" type="xsd:IDREF" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="parallelGateway" type="tParallelGateway" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tParallelGateway">
+		<xsd:complexContent>
+			<xsd:extension base="tGateway"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="participant" type="tParticipant"/>
+	<xsd:complexType name="tParticipant">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="interfaceRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="endPointRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="participantMultiplicity" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="partnerRoleRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="partnerEntityRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="processRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="participantAssociation" type="tParticipantAssociation"/>
+	<xsd:complexType name="tParticipantAssociation">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="innerParticipantRef" type="xsd:QName" minOccurs="1" maxOccurs="1"/>
+					<xsd:element name="outerParticipantRef" type="xsd:QName" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="participantMultiplicity" type="tParticipantMultiplicity"/>
+	<xsd:complexType name="tParticipantMultiplicity">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="minimum" type="xsd:int"/>
+				<xsd:attribute name="maximum" type="xsd:int"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="partnerEntity" type="tPartnerEntity" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tPartnerEntity">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="partnerRole" type="tPartnerRole" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tPartnerRole">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="performer" type="tPerformer" substitutionGroup="activityResource"/>
+	<xsd:complexType name="tPerformer">
+		<xsd:complexContent>
+			<xsd:extension base="tActivityResource"/>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="potentialOwner" type="tPotentialOwner" substitutionGroup="performer"/>
+	<xsd:complexType name="tPotentialOwner">
+		<xsd:complexContent>
+			<xsd:extension base="tHumanPerformer"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="process" type="tProcess" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tProcess">
+		<xsd:complexContent>
+			<xsd:extension base="tCallableElement">
+				<xsd:sequence>
+					<xsd:element ref="auditing" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="monitoring" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="laneSet" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="supports" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="processType" type="tProcessType" default="none"/>
+				<xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="definitionalCollaborationRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:simpleType name="tProcessType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="none"/>
+			<xsd:enumeration value="executable"/>
+			<xsd:enumeration value="non-executable"/>
+			<xsd:enumeration value="public"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+
+	<xsd:element name="property" type="tProperty" />
+	<xsd:complexType name="tProperty">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="dataState" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="itemSubjectRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="receiveTask" type="tReceiveTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tReceiveTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask">
+				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<xsd:attribute name="instantiate" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="messageRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="operationRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:element name="relationship" type="tRelationship"/>
+	<xsd:complexType name="tRelationship">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element name="source" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+					<xsd:element name="target" type="xsd:QName" minOccurs="1" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="type" type="xsd:string" use="required"/>
+				<xsd:attribute name="direction" type="tRelationshipDirection"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:simpleType name="tRelationshipDirection">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="none"/>
+			<xsd:enumeration value="forward"/>
+			<xsd:enumeration value="backward"/>
+			<xsd:enumeration value="both"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	
+	<xsd:element name="rendering" type="tRendering"/>
+	<xsd:complexType name="tRendering">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="resource" type="tResource" substitutionGroup="rootElement"/>
+	<xsd:complexType name="tResource">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:sequence>
+					<xsd:element ref="resourceParameter" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="name" type="xsd:string" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="resourceAssignmentExpression" type="tResourceAssignmentExpression"/>
+	<xsd:complexType name="tResourceAssignmentExpression">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="expression" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="resourceParameter" type="tResourceParameter"/>
+	<xsd:complexType name="tResourceParameter">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="type" type="xsd:QName"/>
+				<xsd:attribute name="isRequired" type="xsd:boolean"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="resourceParameterBinding" type="tResourceParameterBinding"/>
+	<xsd:complexType name="tResourceParameterBinding">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement">
+				<xsd:sequence>
+					<xsd:element ref="expression" minOccurs="1" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="parameterRef" type="xsd:QName" use="required"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="rootElement" type="tRootElement"/>
+	<xsd:complexType name="tRootElement" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tBaseElement"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="scriptTask" type="tScriptTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tScriptTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask">
+				<xsd:sequence>
+					<xsd:element ref="script" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="scriptLanguage" type="xsd:anyURI"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>		
+	
+	<xsd:element name="script" type="tScript"/>
+	<xsd:complexType name="tScript" mixed="true">
+		<xsd:sequence>
+			<xsd:any namespace="##any" processContents="lax" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>	
+
+	<xsd:element name="sendTask" type="tSendTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tSendTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask">
+				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<xsd:attribute name="messageRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="operationRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="sequenceFlow" type="tSequenceFlow" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tSequenceFlow">
+		<xsd:complexContent>
+			<xsd:extension base="tFlowElement">
+				<xsd:sequence>
+					<xsd:element name="conditionExpression"  type="tExpression" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+				<xsd:attribute name="sourceRef" type="xsd:IDREF" use="required"/>
+				<xsd:attribute name="targetRef" type="xsd:IDREF" use="required"/>
+				<xsd:attribute name="isImmediate" type="xsd:boolean" default="true"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="serviceTask" type="tServiceTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tServiceTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask">
+				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<xsd:attribute name="operationRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+	
+	<xsd:simpleType name="tServiceImplementation">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="WebService"/>
+			<xsd:enumeration value="Other"/>
+			<xsd:enumeration value="Unspecified"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+	
+	<xsd:element name="signal" type="tSignal" substitutionGroup="rootElement"/>	
+	<xsd:complexType name="tSignal">
+		<xsd:complexContent>
+			<xsd:extension base="tRootElement">
+				<xsd:attribute name="name" type="xsd:string"/>
+				<xsd:attribute name="structureRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="signalEventDefinition" type="tSignalEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tSignalEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:attribute name="signalRef" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="standardLoopCharacteristics" type="tStandardLoopCharacteristics"  substitutionGroup="loopCharacteristics"/>
+	<xsd:complexType name="tStandardLoopCharacteristics">
+		<xsd:complexContent>
+			<xsd:extension base="tLoopCharacteristics">
+				<xsd:sequence>
+					<xsd:element name="loopCondition" type="tExpression" minOccurs="0"/>
+				</xsd:sequence>
+				<xsd:attribute name="testBefore" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="loopMaximum" type="xsd:integer" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>	
+
+	<xsd:element name="startEvent" type="tStartEvent" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tStartEvent">
+		<xsd:complexContent>
+			<xsd:extension base="tCatchEvent">
+				<xsd:attribute name="isInterrupting" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>			
+	
+	<xsd:element name="subConversation" type="tSubConversation" substitutionGroup="conversationNode"/>
+	<xsd:complexType name="tSubConversation">
+		<xsd:complexContent>
+			<xsd:extension base="tConversationNode">
+				<xsd:sequence>
+					<xsd:element ref="conversationNode" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="correlationKeyRef" type="xsd:QName" use="optional"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="subProcess" type="tSubProcess" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tSubProcess">
+		<xsd:complexContent>
+			<xsd:extension base="tActivity">
+				<xsd:sequence>
+					<xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="triggeredByEvent" type="xsd:boolean" default="false"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="task" type="tTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tTask">
+		<xsd:complexContent>
+			<xsd:extension base="tActivity"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:element name="terminateEventDefinition" type="tTerminateEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tTerminateEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition"/>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="textAnnotation" type="tTextAnnotation" substitutionGroup="artifact"/>
+	<xsd:complexType name="tTextAnnotation">
+		<xsd:complexContent>
+			<xsd:extension base="tArtifact">
+				<xsd:sequence>
+					<xsd:element ref="text" minOccurs="0" maxOccurs="1"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="text" type="tText"/>
+	<xsd:complexType name="tText" mixed="true">
+		<xsd:sequence>
+			<xsd:any namespace="##any" processContents="lax" minOccurs="0"/>
+		</xsd:sequence>
+	</xsd:complexType>
+
+	<xsd:element name="throwEvent" type="tThrowEvent"/>
+	<xsd:complexType name="tThrowEvent" abstract="true">
+		<xsd:complexContent>
+			<xsd:extension base="tEvent">
+				<xsd:sequence>
+					<xsd:element ref="dataInput" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="dataInputAssociation" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="inputSet" minOccurs="0" maxOccurs="1"/>
+					<xsd:element ref="eventDefinition" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element name="eventDefinitionRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>			
+	
+	<xsd:element name="timerEventDefinition" type="tTimerEventDefinition" substitutionGroup="eventDefinition"/>
+	<xsd:complexType name="tTimerEventDefinition">
+		<xsd:complexContent>
+			<xsd:extension base="tEventDefinition">
+				<xsd:choice>
+					<xsd:element name="timeDate" type="tExpression" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="timeCycle" type="tExpression" minOccurs="0" maxOccurs="1"/>
+				</xsd:choice>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:element name="transaction" type="tTransaction" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tTransaction">
+		<xsd:complexContent>
+			<xsd:extension base="tActivity">
+				<xsd:attribute name="method" type="tTransactionMethod" default="compensate"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:simpleType name="tTransactionMethod">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="compensate"/>
+			<xsd:enumeration value="image"/>
+			<xsd:enumeration value="store"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+	
+	<xsd:element name="userTask" type="tUserTask" substitutionGroup="flowElement"/>
+	<xsd:complexType name="tUserTask">
+		<xsd:complexContent>
+			<xsd:extension base="tTask">
+				<xsd:sequence>
+					<xsd:element ref="rendering" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+				<xsd:attribute name="implementation" type="tUserTaskImplementation" default="unspecified"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+
+	<xsd:simpleType name="tUserTaskImplementation">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="unspecified"/>
+			<xsd:enumeration value="other"/>
+			<xsd:enumeration value="webService"/>
+			<xsd:enumeration value="humanTaskWebService"/>
+		</xsd:restriction>
+	</xsd:simpleType>	
+
+</xsd:schema>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/BPMN/Semantic.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.0.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.0.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.0.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,866 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v2004 rel. 4 U (http://www.xmlspy.com) by Jim Rigsbee (private) -->
+<xs:schema targetNamespace="http://jbpm.org/3/jpdl" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0" xmlns="http://jbpm.org/3/jpdl" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+	<xs:element name="process-definition" type="process-definition-v3.0">
+		<xs:annotation>
+			<xs:documentation>jBPM Process Definition Language (JPDL) version 3.0 </xs:documentation>
+		</xs:annotation>
+	</xs:element>
+	<xs:simpleType name="configType">
+		<xs:annotation>
+			<xs:documentation>Indicates how to use the metadata within a handler</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="field"/>
+			<xs:enumeration value="bean"/>
+			<xs:enumeration value="constructor"/>
+			<xs:enumeration value="configuration-property"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="duedateType">
+		<xs:annotation>
+			<xs:documentation>Expression that indicates when a timer is due to fire</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:pattern value="\p{N}+([ ]+business)?[ ]+((second)|(seconds)|(minute)|(minutes)|(hour)|(hours)|(day)|(days)|(week)|(weeks)|(month)|(months)|(year)|(years))([ ]+(and)[ ]+\p{N}+([ ]+business)?[ ]+((second)|(seconds)|(minute)|(minutes)|(hour)|(hours)|(day)|(days)|(week)|(weeks)|(month)|(months)|(year)|(years)))*"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="booleanType">
+		<xs:annotation>
+			<xs:documentation>Yes, no, true, false, on, and off</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="yes"/>
+			<xs:enumeration value="no"/>
+			<xs:enumeration value="true"/>
+			<xs:enumeration value="false"/>
+			<xs:enumeration value="on"/>
+			<xs:enumeration value="off"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="accessType">
+		<xs:annotation>
+			<xs:documentation>Defines how a variable may be accessed</xs:documentation>
+		</xs:annotation>
+		<xs:restriction base="xs:string">
+			<xs:enumeration value="read"/>
+			<xs:enumeration value="read,required"/>
+			<xs:enumeration value="read,write"/>
+			<xs:enumeration value="read,write,required"/>
+			<xs:enumeration value="write"/>
+		</xs:restriction>
+	</xs:simpleType>
+	<xs:simpleType name="repeatType">
+		<xs:annotation>
+			<xs:documentation>Defines if and when to repeat a timer</xs:documentation>
+		</xs:annotation>
+		<xs:union memberTypes="duedateType booleanType"/>
+	</xs:simpleType>
+	<xs:element name="action">
+		<xs:annotation>
+			<xs:documentation>Defines custom behavior</xs:documentation>
+		</xs:annotation>
+		<xs:complexType mixed="true">
+			<xs:sequence>
+				<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>The name of the action.  When actions are given names, they can be looked up from the process definition.  This can be useful for runtime actions and declaring actions only once.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="class" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>Either a class or ref-name must be specified.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="ref-name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>Either a class or ref-name must be specified.  The content of this action is not processed if a referenced action is specified.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="accept-propagated-events" type="booleanType" use="optional" default="true">
+				<xs:annotation>
+					<xs:documentation>If set to false, the action will only be executed on events that were fired on this action's element.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="config-type" type="configType" use="optional">
+				<xs:annotation>
+					<xs:documentation>Specifies how the action object should be constructed and how the content of this element should be used as configuration information for the action object.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="assignment">
+		<xs:annotation>
+			<xs:documentation>Controls the behavior of assigning a task to an identity.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>The content of the assignment element can be used as configuration information for your custom assignment handler implementations.  This allows the creation of reusable delegation classes.</xs:documentation>
+					</xs:annotation>
+				</xs:any>
+			</xs:sequence>
+			<xs:attribute name="class" type="xs:string" use="required">
+				<xs:annotation>
+					<xs:documentation>The fully qualified class name of an implementation of org.jbpm.taskmgmt.def.AssignmentHandler.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="config-type" type="configType" use="optional">
+				<xs:annotation>
+					<xs:documentation>Specifies how the assignment handler object should be constructed and how the content of this element should be used as configuration information for that object.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="expression" type="xs:string" use="optional"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="cancel-timer">
+		<xs:annotation>
+			<xs:documentation>Cancels a timer previously set with create-timer</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string" use="required">
+				<xs:annotation>
+					<xs:documentation>The name of the timer to be cancelled.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="create-timer">
+		<xs:annotation>
+			<xs:documentation>See documentation for the timer element.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="action"/>
+				<xs:element ref="script"/>
+			</xs:choice>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>The name of the timer.  This name can be used later in a cancel-timer element.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="duedate" type="duedateType" use="required">
+				<xs:annotation>
+					<xs:documentation>The duration that specifies the time period between the creation of the timer and the execution of the timer.  This can be expressed in business hours, minutes, etc.  See the documentation for syntax for this attribute.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="repeat" type="repeatType" use="optional">
+				<xs:annotation>
+					<xs:documentation>yes, true, or duration.  After a timer has been executed on the duedate, this repeat attribute specifies the duration between repeating timer executions until the node is left.  If yes or true are specified then the value of duedate is used.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="transition" type="xs:string" use="optional"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="decision">
+		<xs:annotation>
+			<xs:documentation>Defines a decision to be made in the processing path</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:annotation>
+					<xs:documentation>Either a handler or transitions with conditions should be specified.   The decision will look for the first transition for which the condition evaluates to true.  A transition without a condition is considered to evaluate to true (to model the 'otherwise' branch.  See the condition element.</xs:documentation>
+				</xs:annotation>
+				<xs:element name="handler" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded">
+								<xs:annotation>
+									<xs:documentation>The content of the handler element can be used as configuration information for your custom decision handler implementations.  This allows the creation of reusable delegation classes.</xs:documentation>
+								</xs:annotation>
+							</xs:any>
+						</xs:sequence>
+						<xs:attribute name="class" type="xs:string" use="required">
+							<xs:annotation>
+								<xs:documentation>The fully qualified class name of an implementation of org.jbpm.graph.node.DecisionHandler.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="config-type" type="configType" use="optional">
+							<xs:annotation>
+								<xs:documentation>Specifies how the decision handler object should be constructed and how the content of this element should be used as configuration information for that object.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="transition" minOccurs="0" maxOccurs="unbounded">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="condition" minOccurs="0">
+								<xs:annotation>
+									<xs:documentation>A beanshell script that evaluates to true or false.</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:choice minOccurs="0" maxOccurs="unbounded">
+								<xs:element ref="action" minOccurs="0" maxOccurs="unbounded"/>
+								<xs:element ref="script" minOccurs="0" maxOccurs="unbounded"/>
+								<xs:element ref="create-timer" minOccurs="0" maxOccurs="unbounded"/>
+								<xs:element ref="cancel-timer" minOccurs="0" maxOccurs="unbounded"/>
+							</xs:choice>
+							<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+						</xs:sequence>
+						<xs:attribute name="name" type="xs:string" use="required">
+							<xs:annotation>
+								<xs:documentation>The name of the transition.  Note that each transition leaving a node must have a distinct name.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="to" type="xs:string" use="required">
+							<xs:annotation>
+								<xs:documentation>The hierarchical name of the destination node.  See documentation for an description of hierarchical names.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="end-state">
+		<xs:annotation>
+			<xs:documentation>Marks the end of a processing path.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>Event types supported:  node-enter, before-signal</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:choice minOccurs="0" maxOccurs="unbounded">
+							<xs:element ref="action"/>
+							<xs:element ref="script"/>
+							<xs:element ref="create-timer"/>
+							<xs:element ref="cancel-timer"/>
+						</xs:choice>
+						<xs:attribute name="type" use="required">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="node-enter"/>
+									<xs:enumeration value="before-signal"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="event">
+		<xs:annotation>
+			<xs:documentation>Supported event types: node-enter, node-leave, before-signal, after-signal.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="action"/>
+				<xs:element ref="script"/>
+				<xs:element ref="create-timer"/>
+				<xs:element ref="cancel-timer"/>
+			</xs:choice>
+			<xs:attribute name="type" use="required">
+				<xs:simpleType>
+					<xs:restriction base="xs:string">
+						<xs:enumeration value="node-enter"/>
+						<xs:enumeration value="node-leave"/>
+						<xs:enumeration value="before-signal"/>
+						<xs:enumeration value="after-signal"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="exception-handler">
+		<xs:annotation>
+			<xs:documentation>A list of exception handlers that applies to all exceptions thrown by delegation classes within this node.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:choice maxOccurs="unbounded">
+				<xs:element ref="action"/>
+				<xs:element ref="script"/>
+			</xs:choice>
+			<xs:attribute name="exception-class" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>Specifies the fully qualified class name of the java throwable class that should match this exception handler.  If this attribute is not specified it matches all exceptions derived from java.lang.Throwable.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="fork">
+		<xs:annotation>
+			<xs:documentation>Defines a point in the processing path where multiple execution paths will run in parallel.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="script" minOccurs="0"/>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="join">
+		<xs:annotation>
+			<xs:documentation>Defines a point in the processing path where multiple execution paths merge into one path.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="node">
+		<xs:annotation>
+			<xs:documentation>A generic node allowing custom behavior.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:choice minOccurs="0" maxOccurs="1">
+					<xs:annotation>
+						<xs:documentation>A custom action that represents the behaviour for this node</xs:documentation>
+					</xs:annotation>
+					<xs:element ref="action"/>
+					<xs:element ref="script"/>
+					<xs:element ref="create-timer"/>
+					<xs:element ref="cancel-timer"/>
+				</xs:choice>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="process-state">
+		<xs:annotation>
+			<xs:documentation>A node that allows execution of another subordinate process.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="sub-process">
+					<xs:complexType>
+						<xs:attribute name="name" type="xs:string" use="required">
+							<xs:annotation>
+								<xs:documentation>The name of the subordinate process definition to be executed within the enclosing process.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="version" type="xs:integer" use="optional">
+							<xs:annotation>
+								<xs:documentation>The version of the deployed process-definition that is to be executed.  If none is specified the latest version of the identified process will be used.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>Supported event types: node-enter, node-leave, before-signal, after-signal, subprocess-created, subprocess-end.</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:choice minOccurs="0" maxOccurs="unbounded">
+							<xs:element ref="action"/>
+							<xs:element ref="script"/>
+							<xs:element ref="create-timer"/>
+							<xs:element ref="cancel-timer"/>
+						</xs:choice>
+						<xs:attribute name="type" use="required">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="node-enter"/>
+									<xs:enumeration value="node-leave"/>
+									<xs:enumeration value="before-signal"/>
+									<xs:enumeration value="after-signal"/>
+									<xs:enumeration value="subprocess-created"/>
+									<xs:enumeration value="subprocess-end"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="script">
+		<xs:annotation>
+			<xs:documentation>A beanshell script to execute.  The script can be the content of this tag or you can specify one or more variables and a beanshell script in the expression tag.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence minOccurs="0">
+				<xs:element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element name="expression">
+					<xs:annotation>
+						<xs:documentation>The beanshell script.</xs:documentation>
+					</xs:annotation>
+				</xs:element>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>The name of the script action.  When actions are given names, they can be looked up from the process definition.  This can be useful for runtime actions and declaring actions only once.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="accept-propagated-events" type="booleanType" use="optional" default="true">
+				<xs:annotation>
+					<xs:documentation>If set to false the action will only be executed on events that were fired in this action's element.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="state">
+		<xs:annotation>
+			<xs:documentation>Represents a wait state in a process.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:choice minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>A custom action that represents the behaviour for this node</xs:documentation>
+					</xs:annotation>
+					<xs:element ref="action"/>
+					<xs:element ref="script"/>
+					<xs:element ref="create-timer"/>
+					<xs:element ref="cancel-timer"/>
+				</xs:choice>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="super-state">
+		<xs:annotation>
+			<xs:documentation>Grouping mechanism for a named set of nodes.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:choice minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>The nodes of the process definition.  Note that a process without nodes is valid, but cannot be executed.</xs:documentation>
+					</xs:annotation>
+					<xs:element ref="state"/>
+					<xs:element ref="task-node"/>
+					<xs:element ref="super-state"/>
+					<xs:element ref="process-state"/>
+					<xs:element ref="node"/>
+					<xs:element ref="fork"/>
+					<xs:element ref="join"/>
+					<xs:element ref="decision"/>
+					<xs:element ref="end-state"/>
+				</xs:choice>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>Supports all event types except the process-start and end events.</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:choice minOccurs="0" maxOccurs="unbounded">
+							<xs:element ref="action"/>
+							<xs:element ref="script"/>
+							<xs:element ref="create-timer"/>
+							<xs:element ref="cancel-timer"/>
+						</xs:choice>
+						<xs:attribute name="type" use="required">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="node-enter"/>
+									<xs:enumeration value="node-leave"/>
+									<xs:enumeration value="before-signal"/>
+									<xs:enumeration value="after-signal"/>
+									<xs:enumeration value="superstate-enter"/>
+									<xs:enumeration value="superstate-leave"/>
+									<xs:enumeration value="task-create"/>
+									<xs:enumeration value="task-assign"/>
+									<xs:enumeration value="task-start"/>
+									<xs:enumeration value="task-end"/>
+									<xs:enumeration value="transition"/>
+									<xs:enumeration value="timer"/>
+									<xs:enumeration value="subprocess-created"/>
+									<xs:enumeration value="subprocess-end"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="swimlane">
+		<xs:annotation>
+			<xs:documentation>Groups tasks assigned to the same resource.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="assignment" minOccurs="0"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="task">
+		<xs:annotation>
+			<xs:documentation>The tasks that should be created when execution arrives in this task node.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="assignment" minOccurs="0"/>
+				<xs:element name="controller" minOccurs="0">
+					<xs:annotation>
+						<xs:documentation>Controller supports the inclusion of one or more "variable" tags as children.  It also supports custom XML for use with a custom controller class as indicated by config-type.</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:sequence>
+							<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded">
+								<xs:annotation>
+									<xs:documentation>This section can include "variable" elements to identify input and output variables involved in this task.</xs:documentation>
+								</xs:annotation>
+							</xs:any>
+						</xs:sequence>
+						<xs:attribute name="class" type="xs:string" use="optional"/>
+						<xs:attribute name="config-type" type="configType" use="optional">
+							<xs:annotation>
+								<xs:documentation>Specifies how the assignment handler object should be constructed and how the content of this element should be used as configuration information for that object.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>Supports events:  task-create, task-assign, task-start, task-end.</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:choice minOccurs="0" maxOccurs="unbounded">
+							<xs:element ref="action"/>
+							<xs:element ref="script"/>
+							<xs:element ref="create-timer"/>
+							<xs:element ref="cancel-timer"/>
+						</xs:choice>
+						<xs:attribute name="type" use="required">
+							<xs:simpleType>
+								<xs:restriction base="xs:string">
+									<xs:enumeration value="task-create"/>
+									<xs:enumeration value="task-start"/>
+									<xs:enumeration value="task-assign"/>
+									<xs:enumeration value="task-end"/>
+								</xs:restriction>
+							</xs:simpleType>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="timer" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>Specifies a timer that monitors the duration of an execution in this task.</xs:documentation>
+					</xs:annotation>
+					<xs:complexType>
+						<xs:choice>
+							<xs:element ref="action"/>
+							<xs:element ref="script"/>
+						</xs:choice>
+						<xs:attribute name="name" type="xs:string" use="optional">
+							<xs:annotation>
+								<xs:documentation>The name for this timer. Every timer should have a unique name.  If a name is not specified then the name of the enclosing node is taken.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="duedate" type="duedateType" use="required">
+							<xs:annotation>
+								<xs:documentation>The duration that specifies the time period between the creation of the timer and the execution of the timer.  This can be expressed in business hours, minutes, etc.  See the documentation for syntax for this attribute.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="repeat" type="repeatType" use="optional">
+							<xs:annotation>
+								<xs:documentation>yes, true, or duration.  After a timer has been executed on the duedate, this repeat attribute specifies the duration between repeating timer executions until the node is left.  If yes or true are specified then the value of duedate is used.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="transition" type="xs:string" use="optional">
+							<xs:annotation>
+								<xs:documentation>A transition name to be taken after the timer executes, the timer event is fired and execution of any specified actions has completed.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+						<xs:attribute name="cancel-event" type="xs:string" use="optional" default="task-end">
+							<xs:annotation>
+								<xs:documentation>task-assign, task-start, task-end, or any combination of these specified as a comma separated list.</xs:documentation>
+							</xs:annotation>
+						</xs:attribute>
+					</xs:complexType>
+				</xs:element>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>Named tasks can be referenced and looked up via the TaskMgmtDefinition.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="blocking"   type="booleanType" use="optional" default="false"/>
+			<xs:attribute name="signalling" type="booleanType" use="optional" default="true"/>
+			<xs:attribute name="description" type="xs:string" use="optional"/>
+			<xs:attribute name="duedate" type="duedateType" use="optional">
+				<xs:annotation>
+					<xs:documentation>The duration that specifies the time period between the creation of the timer and the execution of the timer.  This can be expressed in business hours, minutes, etc.  See the documentation for syntax for this attribute.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="swimlane" type="xs:string" use="optional"/>
+			<xs:attribute name="priority" use="optional" default="normal">
+				<xs:annotation>
+					<xs:documentation>This value can also be any integer where the lower the number the higher the priority.</xs:documentation>
+				</xs:annotation>
+				<xs:simpleType>
+					<xs:union>
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="highest"/>
+								<xs:enumeration value="high"/>
+								<xs:enumeration value="normal"/>
+								<xs:enumeration value="low"/>
+								<xs:enumeration value="lowest"/>
+							</xs:restriction>
+						</xs:simpleType>
+						<xs:simpleType>
+							<xs:restriction base="xs:int"/>
+						</xs:simpleType>
+					</xs:union>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="task-node">
+		<xs:annotation>
+			<xs:documentation>A node which accepts a list of tasks to be executed.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="task" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="timer" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="signal" use="optional" default="last">
+				<xs:annotation>
+					<xs:documentation>Signal specifies the effect of task completion on the process execution continuation.</xs:documentation>
+				</xs:annotation>
+				<xs:simpleType>
+					<xs:restriction base="xs:string">
+						<xs:enumeration value="unsynchronized"/>
+						<xs:enumeration value="never"/>
+						<xs:enumeration value="first"/>
+						<xs:enumeration value="first-wait"/>
+						<xs:enumeration value="last"/>
+						<xs:enumeration value="last-wait"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="create-tasks" type="booleanType" use="optional" default="true">
+				<xs:annotation>
+					<xs:documentation>Can be set to false when a runtime calculation has to determine which of the tasks have to be created.  In that case, add an action on node-enter, create the tasks in the action, and set create-tasks to false.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="end-tasks" type="booleanType" use="optional" default="false">
+				<xs:annotation>
+					<xs:documentation>Can be set to true, in which all the tasks that are still open are ended on the node-leave event.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="timer">
+		<xs:annotation>
+			<xs:documentation>Specifies a timer that monitors the duration of an execution in this node.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:choice>
+				<xs:element ref="action"/>
+				<xs:element ref="script"/>
+			</xs:choice>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>The name for this timer. Every timer should have a unique name.  If a name is not specified then the name of the enclosing node is taken.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="duedate" type="duedateType" use="required">
+				<xs:annotation>
+					<xs:documentation>The duration that specifies the time period between the creation of the timer and the execution of the timer.  This can be expressed in business hours, minutes, etc.  See the documentation for syntax for this attribute.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="repeat" type="repeatType" use="optional">
+				<xs:annotation>
+					<xs:documentation>yes, true, or duration.  After a timer has been executed on the duedate, this repeat attribute specifies the duration between repeating timer executions until the node is left.  If yes or true are specified then the value of duedate is used.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="transition" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>A transition name to be taken after the timer executes, the timer event is fired and execution of any specified actions has completed.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="transition">
+		<xs:annotation>
+			<xs:documentation>The leaving transitions.  Each transition leaving a node must have a distinct name.  At most one transition can have no name.  The first transition specified is the default transition:  the path taken when the node is left without specifying a transition.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:choice minOccurs="0" maxOccurs="unbounded">
+					<xs:element ref="action"/>
+					<xs:element ref="script"/>
+					<xs:element ref="create-timer"/>
+					<xs:element ref="cancel-timer"/>
+				</xs:choice>
+				<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>The name of the transition.  Note that each transition leaving a node must have a distinct name.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+			<xs:attribute name="to" type="xs:string" use="required">
+				<xs:annotation>
+					<xs:documentation>The hierarchical name of the destination node.  See documentation for an description of hierarchical names.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="variable">
+		<xs:annotation>
+			<xs:documentation>Input and Output variables for the node.  Input variables are specified by access "read". If you have assigned variables during the script evaluation, the variables with "write" access allows you to store the values in the process instance.  It does not matter whether the variables existed prior to this action.</xs:documentation>
+		</xs:annotation>
+		<xs:complexType>
+			<xs:sequence>
+				<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded">
+					<xs:annotation>
+						<xs:documentation>User defined metadata.</xs:documentation>
+					</xs:annotation>
+				</xs:any>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="access" type="accessType" use="optional" default="read,write"/>
+			<xs:attribute name="mapped-name" type="xs:string" use="optional">
+				<xs:annotation>
+					<xs:documentation>Defaults to the process variable name as given by the name attribute.</xs:documentation>
+				</xs:annotation>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="process-definition-v3.0">
+		<xs:annotation>
+			<xs:documentation>Version 3.0 of the PDL schema</xs:documentation>
+		</xs:annotation>
+		<xs:sequence>
+			<xs:element ref="swimlane" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="start-state" minOccurs="0">
+				<xs:annotation>
+					<xs:documentation>The start state of the process.  Note that a process without a start-state is valid, but cannot be executed.</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element ref="task" minOccurs="0"/>
+						<xs:element ref="transition" minOccurs="0" maxOccurs="unbounded"/>
+						<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:choice minOccurs="0" maxOccurs="unbounded">
+									<xs:element ref="action"/>
+									<xs:element ref="script"/>
+									<xs:element ref="create-timer"/>
+									<xs:element ref="cancel-timer"/>
+								</xs:choice>
+								<xs:attribute name="type" use="required">
+									<xs:simpleType>
+										<xs:restriction base="xs:string">
+											<xs:enumeration value="node-leave"/>
+											<xs:enumeration value="after-signal"/>
+										</xs:restriction>
+									</xs:simpleType>
+								</xs:attribute>
+							</xs:complexType>
+						</xs:element>
+						<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+					</xs:sequence>
+					<xs:attribute name="name" type="xs:string" use="optional"/>
+					<xs:attribute name="swimlane" type="xs:string" use="optional"/>
+				</xs:complexType>
+			</xs:element>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>The nodes of the process definition.  Note that a process without nodes is valid, but cannot be executed.</xs:documentation>
+				</xs:annotation>
+				<xs:element ref="state"/>
+				<xs:element ref="task-node"/>
+				<xs:element ref="super-state"/>
+				<xs:element ref="process-state"/>
+				<xs:element ref="node"/>
+				<xs:element ref="fork"/>
+				<xs:element ref="join"/>
+				<xs:element ref="decision"/>
+				<xs:element ref="end-state"/>
+			</xs:choice>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Globally defined actions that can be referenced from events and transitions.  </xs:documentation>
+				</xs:annotation>
+				<xs:element ref="action"/>
+				<xs:element ref="script"/>
+				<xs:element ref="create-timer"/>
+				<xs:element ref="cancel-timer"/>
+			</xs:choice>
+			<xs:element ref="task" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="event" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Supports all event types.  Uniquely supports process-start and process-end.</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:choice minOccurs="0" maxOccurs="unbounded">
+						<xs:element ref="action"/>
+						<xs:element ref="script"/>
+						<xs:element ref="create-timer"/>
+						<xs:element ref="cancel-timer"/>
+					</xs:choice>
+					<xs:attribute name="type" use="required">
+						<xs:simpleType>
+							<xs:restriction base="xs:string">
+								<xs:enumeration value="node-enter"/>
+								<xs:enumeration value="node-leave"/>
+								<xs:enumeration value="before-signal"/>
+								<xs:enumeration value="after-signal"/>
+								<xs:enumeration value="superstate-enter"/>
+								<xs:enumeration value="superstate-leave"/>
+								<xs:enumeration value="task-create"/>
+								<xs:enumeration value="task-assign"/>
+								<xs:enumeration value="task-start"/>
+								<xs:enumeration value="task-end"/>
+								<xs:enumeration value="transition"/>
+								<xs:enumeration value="timer"/>
+								<xs:enumeration value="subprocess-created"/>
+								<xs:enumeration value="subprocess-end"/>
+								<xs:enumeration value="process-start"/>
+								<xs:enumeration value="process-end"/>
+							</xs:restriction>
+						</xs:simpleType>
+					</xs:attribute>
+				</xs:complexType>
+			</xs:element>
+			<xs:element ref="exception-handler" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="name" type="xs:string" use="optional">
+			<xs:annotation>
+				<xs:documentation>the name of the process</xs:documentation>
+			</xs:annotation>
+		</xs:attribute>
+	</xs:complexType>
+</xs:schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.0.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.1.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.1.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.1.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns=          "urn:jbpm.org:jpdl-3.1" 
+           targetNamespace="urn:jbpm.org:jpdl-3.1" 
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified">
+
+  <!--  PROCESS-DEFINITION -->
+  <!--  ################## -->
+  <xs:element name="process-definition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="swimlane" />
+        <xs:element ref="start-state" />
+        <xs:group   ref="node-elements"/>
+        <xs:group   ref="action-elements" />
+        <xs:element ref="event" />
+        <xs:element ref="exception-handler" />
+        <xs:element ref="task" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  SWIMLANE -->
+  <!--  ######## -->
+  <xs:element name="swimlane">
+    <xs:complexType>
+      <xs:sequence minOccurs="0" maxOccurs="1">
+        <xs:element ref="assignment"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  NODES -->
+  <!--  ##### -->
+  <xs:element name="start-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="task"/>
+        <xs:element ref="transition"/>
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="end-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="decision">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="handler" type="delegation" />
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+        <xs:element name="transition">
+          <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+              <xs:element name="condition">
+                <xs:complexType mixed="true">
+                  <xs:sequence minOccurs="0" maxOccurs="unbounded">
+                    <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+                  </xs:sequence>
+                  <xs:attribute name="expression" type="xs:string" />
+                </xs:complexType>
+              </xs:element>
+              <xs:group ref="action-elements"/>
+              <xs:element ref="exception-handler"/>
+            </xs:choice>
+            <xs:attribute name="to" type="xs:string" use="required" />
+            <xs:attribute name="name" type="xs:string" />
+          </xs:complexType>
+        </xs:element>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="fork">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="script" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="join">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="node">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0">
+          <xs:group ref="action-elements" />
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:group ref="node-content-elements" />
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="process-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element name="sub-process">
+          <xs:complexType>
+            <xs:attribute name="name" type="xs:string" use="required" />
+            <xs:attribute name="version" type="xs:integer" />
+          </xs:complexType>
+        </xs:element>
+        <xs:element ref="variable" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="super-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-elements"/>
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="task-node">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="task" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="create-tasks" type="booleanType" default="true" />
+      <xs:attribute name="end-tasks" type="booleanType" default="false" />
+      <xs:attribute name="signal" default="last">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="unsynchronized"/>
+            <xs:enumeration value="never"/>
+            <xs:enumeration value="first"/>
+            <xs:enumeration value="first-wait"/>
+            <xs:enumeration value="last"/>
+            <xs:enumeration value="last-wait"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TRANSITION -->
+  <!--  ########## -->
+  <xs:element name="transition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="action-elements"/>
+        <xs:element ref="exception-handler" />
+      </xs:choice>
+      <xs:attribute name="to" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <!-- ACTIONS -->
+  <!-- ####### -->
+  <xs:element name="action">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="class" type="xs:string" />
+      <xs:attribute name="config-type" default="field">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="field"/>
+            <xs:enumeration value="bean"/>
+            <xs:enumeration value="constructor"/>
+            <xs:enumeration value="configuration-property"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="ref-name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="cancel-timer">
+    <xs:complexType>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="create-timer">
+    <xs:complexType>
+      <xs:choice>
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="script">
+    <xs:complexType  mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EVENT -->
+  <!--  ##### -->
+  <xs:element name="event">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="action-elements"/>
+      </xs:choice>
+      <xs:attribute name="type" use="required">
+        <xs:simpleType>
+          <xs:union>
+            <xs:simpleType>
+              <xs:restriction base="xs:string"/>
+            </xs:simpleType>
+            <xs:simpleType>
+              <xs:restriction base="xs:string">
+                <xs:enumeration value="node-enter"/>
+                <xs:enumeration value="node-leave"/>
+                <xs:enumeration value="process-start"/>
+                <xs:enumeration value="process-end"/>
+                <xs:enumeration value="task-create"/>
+                <xs:enumeration value="task-assign"/>
+                <xs:enumeration value="task-start"/>
+                <xs:enumeration value="task-end"/>
+                <xs:enumeration value="before-signal"/>
+                <xs:enumeration value="after-signal"/>
+                <xs:enumeration value="superstate-enter"/>
+                <xs:enumeration value="superstate-leave"/>
+                <xs:enumeration value="timer-create"/>
+                <xs:enumeration value="subprocess-created"/>
+                <xs:enumeration value="subprocess-end"/>
+              </xs:restriction>
+            </xs:simpleType>
+          </xs:union>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EXCEPTION-HANDLER -->
+  <!--  ################# -->
+  <xs:element name="exception-handler">
+    <xs:complexType>
+      <xs:choice minOccurs="1" maxOccurs="unbounded">
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="exception-class" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TASK -->
+  <!--  #### -->
+  <xs:element name="task">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="assignment"/>
+        <xs:element ref="controller"/>
+        <xs:element ref="event"/>
+        <xs:element ref="timer"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="blocking" type="booleanType" default="false"/>
+      <xs:attribute name="signalling" type="booleanType" default="true"/>
+      <xs:attribute name="description" type="xs:string" />
+      <xs:attribute name="duedate" type="xs:string" />
+      <xs:attribute name="swimlane" type="xs:string" />
+      <xs:attribute name="priority" type="priorityType" default="normal" />
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="controller" type="delegation" />
+
+  <xs:element name="assignment">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="delegation">
+          <xs:attribute name="expression" type="xs:string" />
+          <xs:attribute name="actor-id" type="xs:string" />
+          <xs:attribute name="pooled-actors" type="xs:string" />
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TIMER -->
+  <!--  ##### -->
+  <xs:element name="timer">
+    <xs:complexType>
+      <xs:choice>
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="variable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="access" type="xs:string" default="read,write"/>
+      <xs:attribute name="mapped-name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+  
+  <!-- TYPES AND GROUPS -->
+  <!-- ################ -->
+  <xs:complexType name="delegation" mixed="true">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+    <xs:attribute name="class" type="xs:string" />
+    <xs:attribute name="config-type" default="field">
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="field"/>
+          <xs:enumeration value="bean"/>
+          <xs:enumeration value="constructor"/>
+          <xs:enumeration value="configuration-property"/>
+        </xs:restriction>
+      </xs:simpleType>
+    </xs:attribute>
+  </xs:complexType>
+
+  <xs:simpleType name="configType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="field"/>
+      <xs:enumeration value="bean"/>
+      <xs:enumeration value="constructor"/>
+      <xs:enumeration value="configuration-property"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="booleanType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="no"/>
+      <xs:enumeration value="true"/>
+      <xs:enumeration value="false"/>
+      <xs:enumeration value="on"/>
+      <xs:enumeration value="off"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="priorityType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="highest"/>
+          <xs:enumeration value="high"/>
+          <xs:enumeration value="normal"/>
+          <xs:enumeration value="low"/>
+          <xs:enumeration value="lowest"/>
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="xs:int"/>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
+  <xs:group name="node-elements">
+    <xs:choice>
+      <xs:element ref="node"/>
+      <xs:element ref="state"/>
+      <xs:element ref="task-node"/>
+      <xs:element ref="super-state"/>
+      <xs:element ref="process-state"/>
+      <xs:element ref="fork"/>
+      <xs:element ref="join"/>
+      <xs:element ref="decision"/>
+      <xs:element ref="end-state"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="action-elements">
+    <xs:choice>
+      <xs:element ref="action"/>
+      <xs:element ref="script"/>
+      <xs:element ref="create-timer"/>
+      <xs:element ref="cancel-timer"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="node-content-elements">
+    <xs:choice>
+      <xs:element ref="event"/>
+      <xs:element ref="exception-handler"/>
+      <xs:element ref="timer"/>
+      <xs:element ref="transition"/>
+    </xs:choice>
+  </xs:group>
+
+</xs:schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.1.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.2.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.2.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.2.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,499 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns=          "urn:jbpm.org:jpdl-3.2" 
+           targetNamespace="urn:jbpm.org:jpdl-3.2" 
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           elementFormDefault="qualified">
+
+  <!--  PROCESS-DEFINITION -->
+  <!--  ################## -->
+  <xs:element name="process-definition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="swimlane" />
+        <xs:element ref="start-state" />
+        <xs:group   ref="node-elements"/>
+        <xs:group   ref="action-elements" />
+        <xs:element ref="event" />
+        <xs:element ref="exception-handler" />
+        <xs:element ref="task" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  SWIMLANE -->
+  <!--  ######## -->
+  <xs:element name="swimlane">
+    <xs:complexType>
+      <xs:sequence minOccurs="0" maxOccurs="1">
+        <xs:element ref="assignment"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  NODES -->
+  <!--  ##### -->
+  <xs:element name="start-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="task"/>
+        <xs:element ref="transition"/>
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="end-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="end-complete-process" type="booleanType" use="optional" default="false"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="decision">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element name="handler" type="delegation" />
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+        <xs:element ref="transition"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="fork">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="script" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="join">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="node">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0" maxOccurs="1">
+          <xs:group ref="action-elements" />
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:group ref="node-content-elements" />
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="process-state">
+    <xs:complexType>
+    	<xs:choice minOccurs="0" maxOccurs="unbounded">
+    		<xs:element name="sub-process">
+    			<xs:complexType>
+    				<xs:attribute name="name" type="xs:string"
+    					use="required" />
+    				<xs:attribute name="version" type="xs:integer" />
+    				<xs:attribute name="binding" type="xs:string" />
+    			</xs:complexType>
+    		</xs:element>
+    		<xs:element ref="variable" />
+    		<xs:group ref="node-content-elements" />
+    	</xs:choice>
+    	<xs:attribute name="name" type="xs:string" use="required" />
+    	<xs:attribute name="async" type="xs:string" default="false" />
+    	<xs:attribute name="binding" type="bindingType"></xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="super-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-elements"/>
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="task-node">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="task" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="create-tasks" type="booleanType" default="true" />
+      <xs:attribute name="end-tasks" type="booleanType" default="false" />
+      <xs:attribute name="signal" default="last">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="unsynchronized"/>
+            <xs:enumeration value="never"/>
+            <xs:enumeration value="first"/>
+            <xs:enumeration value="first-wait"/>
+            <xs:enumeration value="last"/>
+            <xs:enumeration value="last-wait"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mail-node">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="subject" />
+        <xs:element ref="text" />
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+      <xs:attribute name="template" type="xs:string"/>
+      <xs:attribute name="actors" type="xs:string"/>
+      <xs:attribute name="to" type="xs:string"/>
+      <xs:attribute name="subject" type="xs:string"/>
+      <xs:attribute name="text" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+
+  <!--  TRANSITION -->
+  <!--  ########## -->
+  <xs:element name="transition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+         <xs:element ref="description" />
+         <xs:element name="condition">
+           <xs:complexType mixed="true">
+             <xs:sequence minOccurs="0" maxOccurs="unbounded">
+               <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+             </xs:sequence>
+             <xs:attribute name="expression" type="xs:string" />
+           </xs:complexType>
+         </xs:element>
+        <xs:group ref="action-elements"/>
+        <xs:element ref="exception-handler" />
+      </xs:choice>
+      <xs:attribute name="to" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <!-- ACTIONS -->
+  <!-- ####### -->
+  <xs:element name="action">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="class" type="xs:string" />
+      <xs:attribute name="config-type" default="field" type="xs:string" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="ref-name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="cancel-timer">
+    <xs:complexType>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="create-timer">
+    <xs:complexType>
+      <xs:choice  minOccurs="0">
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="script">
+    <xs:complexType  mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mail">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="subject" />
+        <xs:element ref="text" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+      <xs:attribute name="template" type="xs:string"/>
+      <xs:attribute name="actors" type="xs:string"/>
+      <xs:attribute name="to" type="xs:string"/>
+      <xs:attribute name="subject" type="xs:string"/>
+      <xs:attribute name="text" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EVENT -->
+  <!--  ##### -->
+  <xs:element name="event">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="action-elements"/>
+      </xs:choice>
+      <xs:attribute name="type" use="required">
+        <xs:simpleType>
+          <xs:union>
+            <xs:simpleType>
+              <xs:restriction base="xs:string"/>
+            </xs:simpleType>
+            <xs:simpleType>
+              <xs:restriction base="xs:string">
+                <xs:enumeration value="node-enter"/>
+                <xs:enumeration value="node-leave"/>
+                <xs:enumeration value="process-start"/>
+                <xs:enumeration value="process-end"/>
+                <xs:enumeration value="task-create"/>
+                <xs:enumeration value="task-assign"/>
+                <xs:enumeration value="task-start"/>
+                <xs:enumeration value="task-end"/>
+                <xs:enumeration value="before-signal"/>
+                <xs:enumeration value="after-signal"/>
+                <xs:enumeration value="superstate-enter"/>
+                <xs:enumeration value="superstate-leave"/>
+                <xs:enumeration value="timer-create"/>
+                <xs:enumeration value="subprocess-created"/>
+                <xs:enumeration value="subprocess-end"/>
+              </xs:restriction>
+            </xs:simpleType>
+          </xs:union>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EXCEPTION-HANDLER -->
+  <!--  ################# -->
+  <xs:element name="exception-handler">
+    <xs:complexType>
+      <xs:choice minOccurs="1" maxOccurs="unbounded">
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="exception-class" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TASK -->
+  <!--  #### -->
+  <xs:element name="task">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="assignment"/>
+        <xs:element ref="controller"/>
+        <xs:element ref="event"/>
+        <xs:element ref="timer"/>
+        <xs:element name="reminder">
+          <xs:complexType>
+            <xs:attribute name="duedate" type="xs:string" use="required" />
+            <xs:attribute name="repeat" type="xs:string" />
+          </xs:complexType>
+        </xs:element>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="blocking" type="booleanType" default="false"/>
+      <xs:attribute name="signalling" type="booleanType" default="true"/>
+      <xs:attribute name="description" type="xs:string" />
+      <xs:attribute name="duedate" type="xs:string" />
+      <xs:attribute name="swimlane" type="xs:string" />
+      <xs:attribute name="priority" type="priorityType" default="normal" />
+      <xs:attribute name="notify" type="booleanType" default="false"/>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="controller" type="delegation" />
+
+  <xs:element name="assignment">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="delegation">
+          <xs:attribute name="expression" type="xs:string" />
+          <xs:attribute name="actor-id" type="xs:string" />
+          <xs:attribute name="pooled-actors" type="xs:string" />
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TIMER -->
+  <!--  ##### -->
+  <xs:element name="timer">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="1">
+        <xs:group ref="action-elements" />
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="variable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="access" type="xs:string" default="read,write"/>
+      <xs:attribute name="mapped-name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  MAIL  -->
+  <!--  #### -->
+  <xs:element name="to" type="xs:string"/>
+  <xs:element name="recipients" type="xs:string"/>
+  <xs:element name="subject" type="xs:string"/>
+  <xs:element name="text" type="xs:string"/>
+  <xs:element name="template" type="xs:string"/>
+
+  <!-- TYPES AND GROUPS -->
+  <!-- ################ -->
+
+  <xs:element name="description" type="xs:string" />
+
+  <xs:complexType name="delegation" mixed="true">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+    <xs:attribute name="class" type="xs:string" />
+    <xs:attribute name="config-type" default="field" type="xs:string" />
+  </xs:complexType>
+
+  <xs:simpleType name="configType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="field"/>
+      <xs:enumeration value="bean"/>
+      <xs:enumeration value="constructor"/>
+      <xs:enumeration value="configuration-property"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="booleanType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="no"/>
+      <xs:enumeration value="true"/>
+      <xs:enumeration value="false"/>
+      <xs:enumeration value="on"/>
+      <xs:enumeration value="off"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="priorityType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="highest"/>
+          <xs:enumeration value="high"/>
+          <xs:enumeration value="normal"/>
+          <xs:enumeration value="low"/>
+          <xs:enumeration value="lowest"/>
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="xs:int"/>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
+  <xs:group name="node-elements">
+    <xs:choice>
+      <xs:element ref="node"/>
+      <xs:element ref="state"/>
+      <xs:element ref="task-node"/>
+      <xs:element ref="super-state"/>
+      <xs:element ref="process-state"/>
+      <xs:element ref="fork"/>
+      <xs:element ref="join"/>
+      <xs:element ref="decision"/>
+      <xs:element ref="end-state"/>
+      <xs:element ref="mail-node"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="action-elements">
+    <xs:choice>
+      <xs:element ref="action"/>
+      <xs:element ref="script"/>
+      <xs:element ref="create-timer"/>
+      <xs:element ref="cancel-timer"/>
+      <xs:element ref="mail"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="node-content-elements">
+    <xs:choice>
+      <xs:element ref="description" />
+      <xs:element ref="event"/>
+      <xs:element ref="exception-handler"/>
+      <xs:element ref="timer"/>
+      <xs:element ref="transition"/>
+    </xs:choice>
+  </xs:group>
+
+  <xs:simpleType name="bindingType">
+  	<xs:restriction base="xs:string">
+  		<xs:enumeration value="late"></xs:enumeration>
+  		<xs:enumeration value="early"></xs:enumeration>
+  	</xs:restriction>
+  </xs:simpleType>
+</xs:schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.2.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.3.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.3.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.3.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,511 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema targetNamespace="urn:jbpm.org:jpdl-3.3"
+           elementFormDefault="qualified"
+           xmlns="urn:jbpm.org:jpdl-3.3"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+  <!--  PROCESS-DEFINITION -->
+  <!--  ################## -->
+  <xs:element name="process-definition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="swimlane" />
+        <xs:element ref="start-state" />
+        <xs:group   ref="node-elements"/>
+        <xs:group   ref="action-elements" />
+        <xs:element ref="event" />
+        <xs:element ref="exception-handler" />
+        <xs:element ref="task" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  SWIMLANE -->
+  <!--  ######## -->
+  <xs:element name="swimlane">
+    <xs:complexType>
+      <xs:sequence minOccurs="0" maxOccurs="1">
+        <xs:element ref="assignment"/>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  NODES -->
+  <!--  ##### -->
+  <xs:element name="start-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="task"/>
+        <xs:element ref="transition"/>
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="end-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="end-complete-process" type="booleanType" use="optional" default="false"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="decision">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element name="handler" type="delegation" />
+        <xs:element ref="event"/>
+        <xs:element ref="exception-handler"/>
+        <xs:element ref="transition"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="fork">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="script" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="join">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+      <xs:attribute name="lock" type="lockMode"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="node">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:choice minOccurs="0" maxOccurs="1">
+          <xs:group ref="action-elements" />
+        </xs:choice>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:group ref="node-content-elements" />
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="process-state">
+    <xs:complexType>
+    	<xs:choice minOccurs="0" maxOccurs="unbounded">
+    		<xs:element name="sub-process">
+    			<xs:complexType>
+    				<xs:attribute name="name" type="xs:string"
+    					use="required" />
+    				<xs:attribute name="version" type="xs:integer" />
+    				<xs:attribute name="binding" type="xs:string" />
+    			</xs:complexType>
+    		</xs:element>
+    		<xs:element ref="variable" />
+    		<xs:group ref="node-content-elements" />
+    	</xs:choice>
+    	<xs:attribute name="name" type="xs:string" use="required" />
+    	<xs:attribute name="async" type="xs:string" default="false" />
+    	<xs:attribute name="binding" type="bindingType"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="super-state">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="node-elements"/>
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="task-node">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="task" />
+        <xs:group ref="node-content-elements" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="create-tasks" type="booleanType" default="true" />
+      <xs:attribute name="end-tasks" type="booleanType" default="false" />
+      <xs:attribute name="signal" default="last">
+        <xs:simpleType>
+          <xs:restriction base="xs:string">
+            <xs:enumeration value="unsynchronized"/>
+            <xs:enumeration value="never"/>
+            <xs:enumeration value="first"/>
+            <xs:enumeration value="first-wait"/>
+            <xs:enumeration value="last"/>
+            <xs:enumeration value="last-wait"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
+      <xs:attribute name="async" type="xs:string" default="false" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mail-node">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="subject" />
+        <xs:element ref="text" />
+        <xs:group ref="node-content-elements"/>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+      <xs:attribute name="template" type="xs:string"/>
+      <xs:attribute name="actors" type="xs:string"/>
+      <xs:attribute name="to" type="xs:string"/>
+      <xs:attribute name="subject" type="xs:string"/>
+      <xs:attribute name="text" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+
+  <!--  TRANSITION -->
+  <!--  ########## -->
+  <xs:element name="transition">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+         <xs:element ref="description" />
+         <xs:element name="condition">
+           <xs:complexType mixed="true">
+             <xs:sequence minOccurs="0" maxOccurs="unbounded">
+               <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+             </xs:sequence>
+             <xs:attribute name="expression" type="xs:string" />
+           </xs:complexType>
+         </xs:element>
+        <xs:group ref="action-elements"/>
+        <xs:element ref="exception-handler" />
+      </xs:choice>
+      <xs:attribute name="to" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <!-- ACTIONS -->
+  <!-- ####### -->
+  <xs:element name="action">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="class" type="xs:string" />
+      <xs:attribute name="config-type" default="field" type="xs:string" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="ref-name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+      <xs:attribute name="expression" type="xs:string" />
+      <xs:attribute name="async" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="cancel-timer">
+    <xs:complexType>
+      <xs:attribute name="name" type="xs:string" use="required" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="create-timer">
+    <xs:complexType>
+      <xs:choice  minOccurs="0">
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="script">
+    <xs:complexType  mixed="true">
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mail">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="subject" />
+        <xs:element ref="text" />
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="async" type="xs:string" default="false" />
+      <xs:attribute name="template" type="xs:string"/>
+      <xs:attribute name="actors" type="xs:string"/>
+      <xs:attribute name="to" type="xs:string"/>
+      <xs:attribute name="subject" type="xs:string"/>
+      <xs:attribute name="text" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EVENT -->
+  <!--  ##### -->
+  <xs:element name="event">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:group ref="action-elements"/>
+      </xs:choice>
+      <xs:attribute name="type" use="required">
+        <xs:simpleType>
+          <xs:union>
+            <xs:simpleType>
+              <xs:restriction base="xs:string"/>
+            </xs:simpleType>
+            <xs:simpleType>
+              <xs:restriction base="xs:string">
+                <xs:enumeration value="node-enter"/>
+                <xs:enumeration value="node-leave"/>
+                <xs:enumeration value="process-start"/>
+                <xs:enumeration value="process-end"/>
+                <xs:enumeration value="task-create"/>
+                <xs:enumeration value="task-assign"/>
+                <xs:enumeration value="task-start"/>
+                <xs:enumeration value="task-end"/>
+                <xs:enumeration value="before-signal"/>
+                <xs:enumeration value="after-signal"/>
+                <xs:enumeration value="superstate-enter"/>
+                <xs:enumeration value="superstate-leave"/>
+                <xs:enumeration value="timer-create"/>
+                <xs:enumeration value="subprocess-created"/>
+                <xs:enumeration value="subprocess-end"/>
+              </xs:restriction>
+            </xs:simpleType>
+          </xs:union>
+        </xs:simpleType>
+      </xs:attribute>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  EXCEPTION-HANDLER -->
+  <!--  ################# -->
+  <xs:element name="exception-handler">
+    <xs:complexType>
+      <xs:choice minOccurs="1" maxOccurs="unbounded">
+        <xs:element ref="action"/>
+        <xs:element ref="script"/>
+      </xs:choice>
+      <xs:attribute name="exception-class" type="xs:string"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TASK -->
+  <!--  #### -->
+  <xs:element name="task">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="description" />
+        <xs:element ref="assignment"/>
+        <xs:element ref="controller"/>
+        <xs:element ref="event"/>
+        <xs:element ref="timer"/>
+        <xs:element name="reminder">
+          <xs:complexType>
+            <xs:attribute name="duedate" type="xs:string" use="required" />
+            <xs:attribute name="repeat" type="xs:string" />
+          </xs:complexType>
+        </xs:element>
+      </xs:choice>
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="blocking" type="booleanType" default="false"/>
+      <xs:attribute name="signalling" type="booleanType" default="true"/>
+      <xs:attribute name="description" type="xs:string" />
+      <xs:attribute name="duedate" type="xs:string" />
+      <xs:attribute name="swimlane" type="xs:string" />
+      <xs:attribute name="priority" type="priorityType" default="normal" />
+      <xs:attribute name="notify" type="booleanType" default="false"/>
+    </xs:complexType>
+  </xs:element>
+  
+  <xs:element name="controller" type="delegation" />
+
+  <xs:element name="assignment">
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:extension base="delegation">
+          <xs:attribute name="expression" type="xs:string" />
+          <xs:attribute name="actor-id" type="xs:string" />
+          <xs:attribute name="pooled-actors" type="xs:string" />
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <!--  TIMER -->
+  <!--  ##### -->
+  <xs:element name="timer">
+    <xs:complexType>
+      <xs:choice minOccurs="0" maxOccurs="1">
+        <xs:group ref="action-elements" />
+      </xs:choice>
+      <xs:attribute name="duedate" type="xs:string" use="required" />
+      <xs:attribute name="name" type="xs:string" />
+      <xs:attribute name="repeat" type="xs:string" />
+      <xs:attribute name="transition" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="variable">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+      <xs:attribute name="name" type="xs:string" use="required"/>
+      <xs:attribute name="access" type="xs:string" default="read,write"/>
+      <xs:attribute name="mapped-name" type="xs:string" />
+    </xs:complexType>
+  </xs:element>
+
+  <!--  MAIL  -->
+  <!--  #### -->
+  <xs:element name="to" type="xs:string"/>
+  <xs:element name="recipients" type="xs:string"/>
+  <xs:element name="subject" type="xs:string"/>
+  <xs:element name="text" type="xs:string"/>
+  <xs:element name="template" type="xs:string"/>
+
+  <!-- TYPES AND GROUPS -->
+  <!-- ################ -->
+
+  <xs:element name="description" type="xs:string" />
+
+  <xs:complexType name="delegation" mixed="true">
+    <xs:sequence>
+      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+    <xs:attribute name="class" type="xs:string" />
+    <xs:attribute name="config-type" default="field" type="xs:string" />
+  </xs:complexType>
+
+  <xs:simpleType name="configType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="field"/>
+      <xs:enumeration value="bean"/>
+      <xs:enumeration value="constructor"/>
+      <xs:enumeration value="configuration-property"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="booleanType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="no"/>
+      <xs:enumeration value="true"/>
+      <xs:enumeration value="false"/>
+      <xs:enumeration value="on"/>
+      <xs:enumeration value="off"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <xs:simpleType name="priorityType">
+    <xs:union>
+      <xs:simpleType>
+        <xs:restriction base="xs:string">
+          <xs:enumeration value="highest"/>
+          <xs:enumeration value="high"/>
+          <xs:enumeration value="normal"/>
+          <xs:enumeration value="low"/>
+          <xs:enumeration value="lowest"/>
+        </xs:restriction>
+      </xs:simpleType>
+      <xs:simpleType>
+        <xs:restriction base="xs:int"/>
+      </xs:simpleType>
+    </xs:union>
+  </xs:simpleType>
+
+  <xs:group name="node-elements">
+    <xs:choice>
+      <xs:element ref="node"/>
+      <xs:element ref="state"/>
+      <xs:element ref="task-node"/>
+      <xs:element ref="super-state"/>
+      <xs:element ref="process-state"/>
+      <xs:element ref="fork"/>
+      <xs:element ref="join"/>
+      <xs:element ref="decision"/>
+      <xs:element ref="end-state"/>
+      <xs:element ref="mail-node"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="action-elements">
+    <xs:choice>
+      <xs:element ref="action"/>
+      <xs:element ref="script"/>
+      <xs:element ref="create-timer"/>
+      <xs:element ref="cancel-timer"/>
+      <xs:element ref="mail"/>
+    </xs:choice>
+  </xs:group>
+  
+  <xs:group name="node-content-elements">
+    <xs:choice>
+      <xs:element ref="description" />
+      <xs:element ref="event"/>
+      <xs:element ref="exception-handler"/>
+      <xs:element ref="timer"/>
+      <xs:element ref="transition"/>
+    </xs:choice>
+  </xs:group>
+
+  <xs:simpleType name="bindingType">
+    <xs:restriction base="xs:string">
+  	  <xs:enumeration value="late"/>
+  	  <xs:enumeration value="early"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="lockMode">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="NONE"/>
+      <xs:enumeration value="READ"/>
+      <xs:enumeration value="UPGRADE"/>
+      <xs:enumeration value="UPGRADE_NOWAIT"/>
+      <xs:enumeration value="FORCE"/>
+      <xs:enumeration value="pessimistic"/>
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-3.3.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.0.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.0.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.0.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,1196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        targetNamespace="http://jbpm.org/4.0/jpdl"
+        xmlns:tns="http://jbpm.org/4.0/jpdl"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified">
+        
+  <annotation>
+    <documentation>Schema for jPDL 4 process descriptions; 
+    element process is the top level element.
+      
+      TODO: Add activity pluggability.  (add the proper any's and 
+            anyAttributes)
+    
+      TODO: Pull up expression.  The expression element in the 
+            delegation group can be pulled up as an expression 
+            attribute in each use case of the delegationGroup
+    
+      TODO: Investigate if object-refs to centrally defined objects would 
+            add value over inline defined objects.
+    </documentation>
+  </annotation>
+
+  <!-- ### PROCESS DEFINITION ############################################# -->
+
+  <element name="process">
+    <annotation><documentation>A jPDL process definition description; This 
+    is the top level element in a jPDL process file.</documentation></annotation>
+    <complexType>
+      <sequence minOccurs="0" maxOccurs="unbounded">
+        <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+        <element ref="tns:swimlane" minOccurs="0" maxOccurs="unbounded" />
+        <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+        <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+        <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+      </sequence>
+      <attribute name="name" use="required" type="string">
+        <annotation>
+          <documentation>
+            The process name. Multiple processes can be deployed with the same name, as long as they have a different
+            version.
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="key" type="string">
+        <annotation>
+          <documentation>
+            The key can be used to provide a short acronym that will replace the name as the basis for the generated
+            process definition id
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="version" type="int">
+        <annotation>
+          <documentation>
+            Indicates the sequence number of this version for all processes with the same name. By specifying a version
+            automatic deployment can figure out if this process is already deployed or not.
+          </documentation>
+        </annotation>
+      </attribute>
+      <anyAttribute processContents="skip">
+        <annotation><documentation>for extensibility
+        </documentation></annotation>
+      </anyAttribute>
+    </complexType>
+  </element>
+  
+  <!-- ### ACTIVITIES ##################################################### -->
+  
+  <group name="activityGroup">
+    <choice>
+      <!-- ~~~ START ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="start">
+        <annotation><documentation>Start event
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="end">
+        <annotation><documentation>End event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="state" default="ended" type="string">
+            <annotation><documentation>sets the state of the execution explicitely</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-cancel">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-error">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <!-- ~~~ STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="state">
+        <annotation><documentation>A wait state.  When an execution arrives in this 
+        activity, the execution will wait until an external trigger is received 
+        with execution.signal() or execution.getActivityInstance().signal()
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="decision">
+        <annotation><documentation>Decision gateway: selects one path out of many alternatives.  
+        When an execution comes in, exactly one outgoing transition is taken.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                        <complexType>
+                          <attribute name="expr" type="string">
+                            <annotation><documentation>The script text that will be evaluated.  
+                            </documentation></annotation>
+                          </attribute>
+                          <attribute name="lang" type="string">
+                            <annotation><documentation>Identification of the scripting language 
+                            to use.</documentation></annotation>
+                          </attribute>
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+              <!-- TODO add conditions -->
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="expr" type="string">
+            <annotation><documentation>The script that will be evaluated and resolve to 
+            the name of the outgoing transition.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="lang" type="string">
+            <annotation><documentation>Identification of the scripting language 
+            to use for the expr attribute.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ FORK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="fork">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    
+      <!-- ~~~ JOIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="join">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="multiplicity" type="int" />
+          <attribute name="lockmode" default="upgrade">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="none"/>
+                <enumeration value="read"/>
+                <enumeration value="upgrade"/>
+                <enumeration value="upgrade_nowait"/>
+                <enumeration value="write"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SCRIPT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="script">
+        <annotation><documentation>Evaluates a piece of text as a script
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ HQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="hql">
+        <annotation><documentation>Performs a hibernate query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sql">
+        <annotation><documentation>Performs a hibernate SQL query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ MAIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="mail">
+        <annotation><documentation>Sends an email
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JAVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="java">
+        <annotation><documentation>Invokes a method on a java object.  
+        Either the java class is instantiated with reflection, or the 
+        java object is fetched from the environment.  Then values from the 
+        environment are injected into the fields and a method is executed.
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ CUSTOM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="custom">
+        <annotation><documentation>Uses a user defined, custom implementation of 
+        ActivityBehaviour
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ TASK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="task">
+        <annotation><documentation>Creates a task in the task component.  
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="assignment-handler" minOccurs="0"  type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="notification" minOccurs="0">
+              <complexType>
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional" />
+              </complexType>
+            </element>
+            <element name="reminder" minOccurs="0">
+              <complexType>
+                <attribute name="duedate" type="string" />
+                <attribute name="repeat" type="string" />
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional"/>
+              </complexType>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attributeGroup ref="tns:assignmentAttributes"/>
+          <attribute name="swimlane" type="string" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+			    <attribute name="duedate" type="string" />
+          <attribute name="on-transition" default="cancel">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="keep"/>
+                <enumeration value="cancel"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="completion" type="string" default="complete" />
+        </complexType>
+      </element>
+      
+      <!-- ~~~ SUB-PROCESS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sub-process">
+        <annotation><documentation>Waits while a sub process instance is 
+        being executed and continues when the sub process instance ends.
+        </documentation></annotation>
+        <complexType>
+          <sequence minOccurs="0" maxOccurs="unbounded">
+            <element name="parameter-in" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element name="parameter-out" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element name="swimlane-mapping" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <attribute name="swimlane" type="string" use="required" />
+                <attribute name="sub-swimlane" type="string" use="required" />
+              </complexType>
+            </element>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence minOccurs="0" maxOccurs="unbounded">
+                      <element name="outcome-value">
+                        <complexType>
+                          <group ref="tns:wireObjectGroup" />
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attribute name="sub-process-id" type="string">
+            <annotation><documentation>Identifies the sub process by the id.  This means that a specific 
+              version of a process definition is referenced
+            </documentation></annotation>
+          </attribute>
+          <attribute name="sub-process-key" type="string">
+            <annotation><documentation>Identifies the sub process by the key.  This means that the latest 
+              version of the process definition with the given key is referenced.  The latest version 
+              of the process is looked up each time the activity executes.  
+            </documentation></annotation>
+          </attribute>
+          <attribute name="outcome" type="string">
+            <annotation><documentation>Expression that is evaluated when the sub process 
+            instance ends.  The value is then used for outcome transition mapping. 
+            </documentation></annotation>
+          </attribute>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ group ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="group">
+        <annotation><documentation>Scope enclosing a number of activities.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    </choice>
+  </group>
+  
+  <group name="wireObjectGroup">
+    <choice>
+      <!-- SPECIAL OBJECTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+      <element name="null">
+        <annotation><documentation>the null value 
+        </documentation></annotation>
+      </element>
+      <element name="ref">
+        <annotation><documentation>A reference to an object in the current environment</documentation></annotation>
+        <complexType>
+          <attribute name="object" type="string" use="required">
+            <annotation><documentation>The name of the referred object</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="env-ref">
+        <annotation><documentation>The current environment.    
+        </documentation></annotation>
+      </element>
+      <element name="jndi">
+        <annotation><documentation>A lookup from JNDI through the InitialContext
+        </documentation></annotation>
+        <complexType>
+          <attribute name="jndi-name" type="string" use="required" />
+        </complexType>
+      </element>
+      
+      <!-- COLLECTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+      <element name="list">
+        <annotation><documentation>A java.util.List</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="class" type="string" default="java.util.ArrayList">
+            <annotation><documentation>Implementation class for this list.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedList(List)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="map">
+        <annotation><documentation>A java.util.Map</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="entry">
+              <complexType>
+                <choice minOccurs="0">
+                  <element name="key" minOccurs="0">
+                    <complexType>
+                      <group ref="tns:wireObjectGroup" />
+                    </complexType>
+                  </element>
+                  <element name="value" minOccurs="0">
+                    <complexType>
+                      <group ref="tns:wireObjectGroup" />
+                    </complexType>
+                  </element>
+                </choice>
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="class" type="string" default="java.util.HashMap">
+            <annotation><documentation>Implementation class for this map.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedList(List)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="set">
+        <annotation><documentation>A java.util.Set 
+        </documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="class" type="string" default="java.util.HashList">
+            <annotation><documentation>Implementation class for this set.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedSet(Set)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="properties">
+        <annotation><documentation>A java.util.Properties</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="property">
+              <complexType>
+                <attribute name="name" type="string" use="required" />
+                <attribute name="value" type="string" use="required" />
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="file" type="string">
+            <annotation><documentation>A file on the file system</documentation></annotation>
+          </attribute>
+          <attribute name="resource" type="string">
+            <annotation><documentation>A file as a resource in the classpath</documentation></annotation>
+          </attribute>
+          <attribute name="url" type="string">
+            <annotation><documentation>the contents is fetched by loading a url</documentation></annotation>
+          </attribute>
+          <attribute name="is-xml" type="tns:booleanValueType">
+            <annotation><documentation>optionally indicates if the content of referenced file in attributes
+            'file', 'resource' or 'url' is XML.  The default is the 
+            plain properties format with a space or the equals character (=) separating key and value on 
+            each line.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    
+      <!-- OBJECT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+      <element name="object" type="tns:wireObjectType" />
+      
+      <!-- BASIC TYPES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+      <element name="string">
+        <complexType>
+          <attribute name="name">
+            <annotation><documentation>the name of the string object</documentation></annotation>
+          </attribute>
+          <attribute name="value">
+            <annotation><documentation>the actual string value</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="byte">
+        <annotation><documentation>A java.lang.Byte</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="byte" use="required" />
+        </complexType>
+      </element>
+      <element name="char">
+        <annotation><documentation>A java.lang.Character</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" use="required">
+            <simpleType>
+              <restriction base="string">
+                <maxLength value="1" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="double">
+        <annotation><documentation>A java.lang.Double</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="double" use="required" />
+        </complexType>
+      </element>
+      <element name="false">
+        <annotation><documentation>java.lang.Boolean.FALSE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="float">
+        <annotation><documentation>A java.lang.Float
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="float" use="required" />
+        </complexType>
+      </element>
+      <element name="int">
+        <annotation><documentation>A java.lang.Integer
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="int" use="required"/>
+        </complexType>
+      </element>
+      <element name="long">
+        <annotation><documentation>A java.lang.Long</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="long" use="required"/>
+        </complexType>
+      </element>
+      <element name="short">
+        <annotation><documentation>a java.lang.Short
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="short" use="required"/>
+        </complexType>
+      </element>
+      <element name="true">
+        <annotation><documentation>java.lang.Boolean.TRUE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+
+    </choice>
+  </group>
+  
+  <complexType name="wireObjectType">
+    <annotation><documentation>Any java object that will be created by reflection.                                                                        .
+    <p>There are three main ways to create an object: by constructor or by a factory 
+    object or a static factory method.</p>
+    <p><b>Using the constructor</b>: Then the <code>class</code> attribute must provide the 
+    fully qualified class name.  In case another constructor then the default is 
+    targetted, a <code>constructor</code> child element can be provided.
+    The <code>factory</code> attribute should not be provided for using a constructor. 
+    </p>
+    <p><b>Using a factory</b>: Then the <code>factory</code> attribute or one 
+    <code>factory</code> element must be provided along with the attribute 
+    <code>method</code>. 
+    </p>
+    <p><b>Using a static factory method</b>: Then the <code>class</code> and 
+    <code>method</code> attributes should be specified.  There should be no 
+    reference to a <code>factory</code> attribute of element. 
+    </p>
+    <p><b>Construction and initialization</b>: all objects (constructor and factory)
+    are build in two phases: construction and initialisation phase.  During construction
+    all is done until a pointer is obtained to the object.  In initialisation, operations 
+    are applied to the object until it is ready to be used.  The separation between 
+    construction and initialisation is made to allow for bidirectional references.  In 
+    that case, at least one of both ends can not be fully initialised before it is injected 
+    into the other end.
+    </p>
+    <p><b>Operations</b>: after construction, various operations can be applied to objects 
+    like e.g. direct field injection, injection through setters, method invocation, 
+    enlist with the standard transaction, subscribe the object as a listener to an observable  
+    </p>
+    <p><b>Arguments</b>: There are two different places for arguments.  The <code>arg</code> 
+    elements for the factory method invocation should be placed as child elements under the 
+    <code>object</code> element.  The <code>arg</code> elements for the constructor should be 
+    placed as child elements under the <code>constructor</code> element.    
+    </p>
+    </documentation></annotation>
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <element name="factory">
+        <annotation><documentation>Contains one element that describes the factory object.</documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+        </complexType>
+      </element>
+      <element name="constructor">
+        <annotation><documentation>Specifies the arguments to use for a non-default constructor.</documentation></annotation>
+        <complexType>
+          <choice maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+        </complexType>
+      </element>
+      <element name="arg" type="tns:argType">
+        <annotation><documentation>The factory method arguments.</documentation></annotation>
+      </element>
+      <element name="field">
+        <annotation><documentation>Injects a value into a member field of this object.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The member field name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="property">
+        <annotation><documentation>Injects a value through a setter method.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The name of the property (without the 'set' prefix)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="invoke">
+        <annotation><documentation>Invokes a method</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+          <attribute name="method" type="string" use="required">
+            <annotation><documentation>the method name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    </choice>
+    <attribute name="class" type="string">
+      <annotation><documentation>The fully qualified class name</documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="factory" type="string">
+      <annotation><documentation>The name of the factory object</documentation></annotation>
+    </attribute>
+    <attribute name="method" type="string">
+      <annotation><documentation>The factory method name</documentation></annotation>
+    </attribute>
+    <attribute name="auto-wire" type="string">
+      <annotation><documentation>Indicates if the member fields and setter properties 
+      should be automatically wired based on matching the property names and types with the 
+      object names and types</documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="argType">
+    <annotation><documentation>The method arguments.
+    Each 'arg' element should have exactly one child element 
+    that represents the value of the argument.
+    </documentation></annotation>
+    <attribute name="type" type="string">
+      <annotation><documentation>The java class name representing 
+      the type of the method.  This is optional and can be used to 
+      indicate the appropriate method in case of method overloading. 
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="javaType">
+    <sequence>
+      <element name="field" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Field injections from the environment 
+        invocation.</documentation></annotation>
+      </element>
+      <element name="arg" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Method arguments.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="object" type="string">
+      <annotation><documentation>Name of the object in the environment 
+      </documentation></annotation>
+    </attribute>
+    <attribute name="method" type="string" use="required">
+      <annotation><documentation>The name of the method to invoke.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="class" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>Expression that resolves to the target object
+      on which the method should be invoked.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The language in which attribute 'expr' is to be 
+      resolved.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>The variable name to store the return value
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="scriptType">
+    <sequence>
+      <element name="text" type="string" minOccurs="0">
+        <annotation><documentation>The content of this expression element 
+        is the script text that will be evaluated.  This is mutually 
+        exclusive with the expression attribute.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The script text that will be evaluated.  This 
+      is mutually exclusive with the expression element.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Identification of the scripting language 
+      to use.</documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <complexType name="qlType">
+    <sequence>
+      <element name="query" type="string">
+        <annotation><documentation>The query text.</documentation></annotation>
+      </element>
+      <element name="parameters" minOccurs="0">
+        <annotation><documentation>Query parameters.</documentation></annotation>
+        <complexType>
+          <sequence>
+            <group ref="tns:wireObjectGroup" maxOccurs="unbounded" />
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+    <attribute name="unique" type="string">
+      <annotation><documentation>Does this query return a unique result or a list
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <attributeGroup name="activityAttributes">
+    <attribute name="name" type="string">
+      <annotation><documentation>The id of this activity.  The name should be unique
+      in the complete scope of the process.</documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="continue" default="sync" type="tns:continueType">
+      <annotation><documentation>To specify async continuations.
+      sync is the default.
+      </documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <simpleType name="continueType">
+    <restriction base="string">
+      <enumeration value="async" />
+      <enumeration value="sync" />
+      <enumeration value="exclusive" />
+    </restriction>
+  </simpleType>
+  
+  
+  <attributeGroup name="assignmentAttributes">
+    <annotation><documentation>the assignment attributes will be used in 
+      tasks and swimlanes to specify to whom these respectively are assigned.
+    </documentation></annotation>
+    <attribute name="assignee" type="string">
+      <annotation><documentation>Expression that resolves to a userId referencing 
+      the person to which the task or swimlane will be assigned.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="assignee-lang" type="string">
+      <annotation><documentation>Expression language for the assignee attribute.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users" type="string">
+      <annotation><documentation>Expression that resolves to a comma separated 
+      list of userId's. All the referred people will be candidates for 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-users attribute.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups" type="string">
+      <annotation><documentation>Resolves to a comma separated list of groupId's.  
+      All the referred people will be candidates to 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-groups attribute.</documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <element name="swimlane">
+    <annotation><documentation>A process role.</documentation></annotation>
+    <complexType>
+      <attribute name="name" type="string" use="required" />
+      <attributeGroup ref="tns:assignmentAttributes" />
+    </complexType>
+  </element>
+  
+  <complexType name="transitionType">
+    <annotation><documentation>The outgoing transitions.  The first in the list 
+      will be the default outgoing transition.
+    </documentation></annotation>
+    <sequence>
+      <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded" />
+    </sequence>
+    <attribute name="name" type="string">
+      <annotation><documentation>Name of this outgoing transition</documentation></annotation>
+    </attribute>
+    <attribute name="to" type="string">
+      <annotation><documentation>Name of the destination activity of this transition. 
+      </documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <element name="transition" type="tns:transitionType">
+    <annotation><documentation>A transition from one activity to another.</documentation></annotation>
+  </element>
+  
+  <element name="on">
+    <complexType>
+      <sequence>
+        <element ref="tns:timer" minOccurs="0" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>A list of event listeners that will 
+          be notified when the event is fired</documentation></annotation>
+        </group>
+      </sequence>
+      <attribute name="event" type="string">
+        <annotation><documentation>The event identification.  start, end, take or 
+        any other custom event.
+        </documentation></annotation>
+      </attribute>
+    </complexType>
+  </element>
+
+  <complexType name="parameterType">
+    <attribute name="subvar" type="string">
+      <annotation><documentation>The name of the sub process variable.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>An expression for which the resulting 
+      value will be used as value.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Language of the expression.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the process variable
+      in the super process execution..
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+
+  <element name="timer">
+    <complexType>
+      <sequence>
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>A list of event listeners that will 
+          be notified when the timer fires</documentation></annotation>
+        </group>
+      </sequence>
+      <attribute name="duedate" type="string">
+        <annotation><documentation>Timer duedate expression that defines the duedate of this 
+        timer relative to the creation time of the timer.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="repeat" type="string">
+        <annotation><documentation>Timer duedate expression that defines repeated scheduling 
+        relative to the last timer fire event.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="duedatetime" type="string">
+        <annotation><documentation>Absolute time in format <code>HH:mm dd/MM/yyyy</code> 
+        (see SimpleDateFormat).  The format for the absolute time can be customized in the 
+        jbpm configuration. 
+        </documentation></annotation>
+      </attribute>
+    </complexType>
+  </element>
+  
+  <group name="eventListenerGroup">
+    <choice>
+      <element name="event-listener" type="tns:wireObjectType" />
+      <element name="hql" type="tns:qlType" />
+      <element name="sql" type="tns:qlType" />
+      <element name="java" type="tns:javaType" />
+      <element name="script" type="tns:scriptType" />
+      <element name="mail" type="tns:mailType" />
+    </choice>
+  </group>
+
+  <complexType name="mailType">
+    <sequence>
+      <element name="from" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="to" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="cc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="bcc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="subject" type="string" minOccurs="0" />
+      <element name="text" type="string" minOccurs="0" />
+      <element name="html" type="string" minOccurs="0" />
+      <element name="attachments" minOccurs="0" >
+        <complexType>
+          <sequence>
+            <element name="attachment" maxOccurs="unbounded">
+              <complexType>
+						    <attribute name="url" type="string">
+						      <annotation><documentation>URL reference to the attachment</documentation></annotation>
+						    </attribute>
+                <attribute name="resource" type="string">
+                  <annotation><documentation>Name of the attachment resource on the classpath</documentation></annotation>
+                </attribute>
+                <attribute name="file" type="string">
+                  <annotation><documentation>File reference to the attachment</documentation></annotation>
+                </attribute>
+              </complexType>
+            </element>
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="template" type="tns:templateType" />
+  </complexType>
+  
+  <complexType name="mailRecipientType">
+    <attribute name="addresses" type="string">
+      <annotation><documentation>list of email address separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="users" type="string">
+      <annotation><documentation>list of user ids that are resolved to the email address against configured identity component.  
+      user ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="groups" type="string">
+      <annotation><documentation>list of group ids that are resolved to the email address against configured identity component.  
+      group ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <simpleType name="booleanValueType">
+    <restriction base="string">
+      <enumeration value="true" />
+      <enumeration value="on" />
+      <enumeration value="enabled" />
+      <enumeration value="false" />
+      <enumeration value="off" />
+      <enumeration value="disabled" />
+    </restriction>
+  </simpleType>
+
+
+  <simpleType name="templateType">
+    <annotation><documentation>Reference to the email template</documentation></annotation>
+    <restriction base="string"></restriction>
+  </simpleType>
+</schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.0.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.2.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.2.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.2.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,1241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        targetNamespace="http://jbpm.org/4.2/jpdl"
+        xmlns:tns="http://jbpm.org/4.2/jpdl"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified">
+        
+  <annotation>
+    <documentation>Schema for jPDL 4 process descriptions; 
+    element process is the top level element.
+    </documentation>
+  </annotation>
+
+  <!-- ### PROCESS DEFINITION ############################################# -->
+
+  <element name="process">
+    <annotation><documentation>A jPDL process definition description; This 
+    is the top level element in a jPDL process file.</documentation></annotation>
+    <complexType>
+      <sequence minOccurs="0" maxOccurs="unbounded">
+        <element name="description" minOccurs="0" type="string" />
+        <element ref="tns:swimlane" minOccurs="0" maxOccurs="unbounded" />
+        <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+        <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+        <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+        <element ref="tns:migrate-instances" minOccurs="0" maxOccurs="1" />
+      </sequence>
+      <attribute name="name" use="required" type="string">
+        <annotation>
+          <documentation>
+            The process name. Multiple processes can be deployed with the same name, as long as they have a different
+            version.
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="key" type="string">
+        <annotation>
+          <documentation>
+            The key can be used to provide a short acronym that will replace the name as the basis for the generated
+            process definition id
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="version" type="int">
+        <annotation>
+          <documentation>
+            Indicates the sequence number of this version for all processes with the same name. By specifying a version
+            automatic deployment can figure out if this process is already deployed or not.
+          </documentation>
+        </annotation>
+      </attribute>
+      <anyAttribute processContents="skip">
+        <annotation><documentation>for extensibility
+        </documentation></annotation>
+      </anyAttribute>
+    </complexType>
+  </element>
+  
+  <!-- ### ACTIVITIES ##################################################### -->
+  
+  <group name="activityGroup">
+    <choice>
+      <!-- ~~~ START ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="start">
+        <annotation><documentation>Start event
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="end">
+        <annotation><documentation>End event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="state" default="ended" type="string">
+            <annotation><documentation>sets the state of the execution explicitely</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-cancel">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-error">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <!-- ~~~ STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="state">
+        <annotation><documentation>A wait state.  When an execution arrives in this 
+        activity, the execution will wait until an external trigger is received 
+        with execution.signal() or execution.getActivityInstance().signal()
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="decision">
+        <annotation><documentation>Decision gateway: selects one path out of many alternatives.  
+        When an execution comes in, exactly one outgoing transition is taken.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                        <complexType>
+                          <sequence>
+                            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+                          </sequence>
+                          <attribute name="expr" type="string">
+                            <annotation><documentation>The script text that will be evaluated.  
+                            </documentation></annotation>
+                          </attribute>
+                          <attribute name="lang" type="string">
+                            <annotation><documentation>Identification of the scripting language 
+                            to use.</documentation></annotation>
+                          </attribute>
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+              <!-- TODO add conditions -->
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="expr" type="string">
+            <annotation><documentation>The script that will be evaluated and resolve to 
+            the name of the outgoing transition.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="lang" type="string">
+            <annotation><documentation>Identification of the scripting language 
+            to use for the expr attribute.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ FORK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="fork">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    
+      <!-- ~~~ JOIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="join">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="multiplicity" type="int" />
+          <attribute name="lockmode" default="upgrade">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="none"/>
+                <enumeration value="read"/>
+                <enumeration value="upgrade"/>
+                <enumeration value="upgrade_nowait"/>
+                <enumeration value="write"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SCRIPT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="script">
+        <annotation><documentation>Evaluates a piece of text as a script
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ HQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="hql">
+        <annotation><documentation>Performs a hibernate query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sql">
+        <annotation><documentation>Performs a hibernate SQL query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ MAIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="mail">
+        <annotation><documentation>Sends an email
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JAVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="java">
+        <annotation><documentation>Invokes a method on a java object.  
+        Either the java class is instantiated with reflection, or the 
+        java object is fetched from the environment.  Then values from the 
+        environment are injected into the fields and a method is executed.
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ CUSTOM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="custom">
+        <annotation><documentation>Uses a user defined, custom implementation of 
+        ActivityBehaviour
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ TASK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="task">
+        <annotation><documentation>Creates a task in the task component.  
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="assignment-handler" minOccurs="0"  type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="notification" minOccurs="0">
+              <complexType>
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional" />
+              </complexType>
+            </element>
+            <element name="reminder" minOccurs="0">
+              <complexType>
+                <attribute name="duedate" type="string" />
+                <attribute name="repeat" type="string" />
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional"/>
+              </complexType>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attributeGroup ref="tns:assignmentAttributes"/>
+          <attribute name="swimlane" type="string" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+			    <attribute name="duedate" type="string" />
+          <attribute name="on-transition" default="cancel">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="keep"/>
+                <enumeration value="cancel"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="completion" type="string" default="complete" />
+        </complexType>
+      </element>
+      
+      <!-- ~~~ SUB-PROCESS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sub-process">
+        <annotation><documentation>Waits while a sub process instance is 
+        being executed and continues when the sub process instance ends.
+        </documentation></annotation>
+        <complexType>
+          <sequence minOccurs="0" maxOccurs="unbounded">
+            <element name="description" minOccurs="0" type="string" />
+            <element name="parameter-in" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element name="parameter-out" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element name="swimlane-mapping" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <attribute name="swimlane" type="string" use="required" />
+                <attribute name="sub-swimlane" type="string" use="required" />
+              </complexType>
+            </element>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence minOccurs="0" maxOccurs="unbounded">
+                      <element name="outcome-value">
+                        <complexType>
+                          <group ref="tns:wireObjectGroup" />
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attribute name="sub-process-id" type="string">
+            <annotation><documentation>Identifies the sub process by the id.  This means that a specific 
+              version of a process definition is referenced
+            </documentation></annotation>
+          </attribute>
+          <attribute name="sub-process-key" type="string">
+            <annotation><documentation>Identifies the sub process by the key.  This means that the latest 
+              version of the process definition with the given key is referenced.  The latest version 
+              of the process is looked up each time the activity executes.  
+            </documentation></annotation>
+          </attribute>
+          <attribute name="outcome" type="string">
+            <annotation><documentation>Expression that is evaluated when the sub process 
+            instance ends.  The value is then used for outcome transition mapping. 
+            </documentation></annotation>
+          </attribute>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ group ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="group">
+        <annotation><documentation>Scope enclosing a number of activities.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    </choice>
+  </group>
+  
+  <group name="wireObjectGroup">
+    <choice>
+
+      <!-- SPECIAL OBJECTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="null">
+        <annotation><documentation>the null value 
+        </documentation></annotation>
+      </element>
+      <element name="ref">
+        <annotation><documentation>A reference to an object in the current environment</documentation></annotation>
+        <complexType>
+          <attribute name="object" type="string" use="required">
+            <annotation><documentation>The name of the referred object</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="env-ref">
+        <annotation><documentation>The current environment.    
+        </documentation></annotation>
+      </element>
+      <element name="jndi">
+        <annotation><documentation>A lookup from JNDI through the InitialContext
+        </documentation></annotation>
+        <complexType>
+          <attribute name="jndi-name" type="string" use="required" />
+        </complexType>
+      </element>
+      
+      <!-- COLLECTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="list">
+        <annotation><documentation>A java.util.List</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="class" type="string" default="java.util.ArrayList">
+            <annotation><documentation>Implementation class for this list.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedList(List)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="map">
+        <annotation><documentation>A java.util.Map</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="entry">
+              <complexType>
+                <choice minOccurs="0">
+                  <element name="key" minOccurs="0">
+                    <complexType>
+                      <group ref="tns:wireObjectGroup" />
+                    </complexType>
+                  </element>
+                  <element name="value" minOccurs="0">
+                    <complexType>
+                      <group ref="tns:wireObjectGroup" />
+                    </complexType>
+                  </element>
+                </choice>
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="class" type="string" default="java.util.HashMap">
+            <annotation><documentation>Implementation class for this map.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedList(List)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="set">
+        <annotation><documentation>A java.util.Set 
+        </documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="class" type="string" default="java.util.HashList">
+            <annotation><documentation>Implementation class for this set.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedSet(Set)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="properties">
+        <annotation><documentation>A java.util.Properties</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="property">
+              <complexType>
+                <attribute name="name" type="string" use="required" />
+                <attribute name="value" type="string" use="required" />
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="file" type="string">
+            <annotation><documentation>A file on the file system</documentation></annotation>
+          </attribute>
+          <attribute name="resource" type="string">
+            <annotation><documentation>A file as a resource in the classpath</documentation></annotation>
+          </attribute>
+          <attribute name="url" type="string">
+            <annotation><documentation>the contents is fetched by loading a url</documentation></annotation>
+          </attribute>
+          <attribute name="is-xml" type="tns:booleanValueType">
+            <annotation><documentation>optionally indicates if the content of referenced file in attributes
+            'file', 'resource' or 'url' is XML.  The default is the 
+            plain properties format with a space or the equals character (=) separating key and value on 
+            each line.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    
+      <!-- OBJECT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="object" type="tns:wireObjectType" />
+      
+      <!-- BASIC TYPES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="string">
+        <complexType>
+          <attribute name="name">
+            <annotation><documentation>the name of the string object</documentation></annotation>
+          </attribute>
+          <attribute name="value">
+            <annotation><documentation>the actual string value</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="byte">
+        <annotation><documentation>A java.lang.Byte</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="byte" use="required" />
+        </complexType>
+      </element>
+      <element name="char">
+        <annotation><documentation>A java.lang.Character</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" use="required">
+            <simpleType>
+              <restriction base="string">
+                <maxLength value="1" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="double">
+        <annotation><documentation>A java.lang.Double</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="double" use="required" />
+        </complexType>
+      </element>
+      <element name="false">
+        <annotation><documentation>java.lang.Boolean.FALSE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="float">
+        <annotation><documentation>A java.lang.Float
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="float" use="required" />
+        </complexType>
+      </element>
+      <element name="int">
+        <annotation><documentation>A java.lang.Integer
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="int" use="required"/>
+        </complexType>
+      </element>
+      <element name="long">
+        <annotation><documentation>A java.lang.Long</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="long" use="required"/>
+        </complexType>
+      </element>
+      <element name="short">
+        <annotation><documentation>a java.lang.Short
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="short" use="required"/>
+        </complexType>
+      </element>
+      <element name="true">
+        <annotation><documentation>java.lang.Boolean.TRUE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+
+    </choice>
+  </group>
+  
+  <complexType name="wireObjectType">
+    <annotation><documentation>Any java object that will be created by reflection.                                                                        .
+    <p>There are three main ways to create an object: by constructor or by a factory 
+    object or a static factory method.</p>
+    <p><b>Using the constructor</b>: Then the <code>class</code> attribute must provide the 
+    fully qualified class name.  In case another constructor then the default is 
+    targetted, a <code>constructor</code> child element can be provided.
+    The <code>factory</code> attribute should not be provided for using a constructor. 
+    </p>
+    <p><b>Using a factory</b>: Then the <code>factory</code> attribute or one 
+    <code>factory</code> element must be provided along with the attribute 
+    <code>method</code>. 
+    </p>
+    <p><b>Using a static factory method</b>: Then the <code>class</code> and 
+    <code>method</code> attributes should be specified.  There should be no 
+    reference to a <code>factory</code> attribute of element. 
+    </p>
+    <p><b>Construction and initialization</b>: all objects (constructor and factory)
+    are build in two phases: construction and initialisation phase.  During construction
+    all is done until a pointer is obtained to the object.  In initialisation, operations 
+    are applied to the object until it is ready to be used.  The separation between 
+    construction and initialisation is made to allow for bidirectional references.  In 
+    that case, at least one of both ends can not be fully initialised before it is injected 
+    into the other end.
+    </p>
+    <p><b>Operations</b>: after construction, various operations can be applied to objects 
+    like e.g. direct field injection, injection through setters, method invocation, 
+    enlist with the standard transaction, subscribe the object as a listener to an observable  
+    </p>
+    <p><b>Arguments</b>: There are two different places for arguments.  The <code>arg</code> 
+    elements for the factory method invocation should be placed as child elements under the 
+    <code>object</code> element.  The <code>arg</code> elements for the constructor should be 
+    placed as child elements under the <code>constructor</code> element.    
+    </p>
+    </documentation></annotation>
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="factory">
+        <annotation><documentation>Contains one element that describes the factory object.</documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+        </complexType>
+      </element>
+      <element name="constructor">
+        <annotation><documentation>Specifies the arguments to use for a non-default constructor.</documentation></annotation>
+        <complexType>
+          <choice maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+        </complexType>
+      </element>
+      <element name="arg" type="tns:argType">
+        <annotation><documentation>The factory method arguments.</documentation></annotation>
+      </element>
+      <element name="field">
+        <annotation><documentation>Injects a value into a member field of this object.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The member field name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="property">
+        <annotation><documentation>Injects a value through a setter method.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The name of the property (without the 'set' prefix)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="invoke">
+        <annotation><documentation>Invokes a method</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+          <attribute name="method" type="string" use="required">
+            <annotation><documentation>the method name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    </choice>
+    <attribute name="class" type="string">
+      <annotation><documentation>The fully qualified class name</documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="factory" type="string">
+      <annotation><documentation>The name of the factory object</documentation></annotation>
+    </attribute>
+    <attribute name="method" type="string">
+      <annotation><documentation>The factory method name</documentation></annotation>
+    </attribute>
+    <attribute name="auto-wire" type="string">
+      <annotation><documentation>Indicates if the member fields and setter properties 
+      should be automatically wired based on matching the property names and types with the 
+      object names and types</documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="argType">
+    <annotation><documentation>The method arguments.
+    Each 'arg' element should have exactly one child element 
+    that represents the value of the argument.
+    </documentation></annotation>
+    <attribute name="type" type="string">
+      <annotation><documentation>The java class name representing 
+      the type of the method.  This is optional and can be used to 
+      indicate the appropriate method in case of method overloading. 
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="javaType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="field" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Field injections from the environment 
+        invocation.</documentation></annotation>
+      </element>
+      <element name="arg" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Method arguments.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="method" type="string" use="required">
+      <annotation><documentation>The name of the method to invoke.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="class" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>Expression that resolves to the target object
+      on which the method should be invoked.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The language in which attribute 'expr' is to be 
+      resolved.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>The variable name to store the return value
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="scriptType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="text" type="string" minOccurs="0">
+        <annotation><documentation>The content of this expression element 
+        is the script text that will be evaluated.  This is mutually 
+        exclusive with the expression attribute.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The script text that will be evaluated.  This 
+      is mutually exclusive with the expression element.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Identification of the scripting language 
+      to use.</documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <complexType name="qlType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="query" type="string">
+        <annotation><documentation>The query text.</documentation></annotation>
+      </element>
+      <element name="parameters" minOccurs="0">
+        <annotation><documentation>Query parameters.</documentation></annotation>
+        <complexType>
+          <sequence>
+            <group ref="tns:wireObjectGroup" maxOccurs="unbounded" />
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+    <attribute name="unique" type="string">
+      <annotation><documentation>Does this query return a unique result or a list
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <attributeGroup name="activityAttributes">
+    <attribute name="name" type="string">
+      <annotation><documentation>The id of this activity.  The name should be unique
+      in the complete scope of the process.</documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="continue" default="sync" type="tns:continueType">
+      <annotation><documentation>To specify async continuations.
+      sync is the default.
+      </documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <simpleType name="continueType">
+    <restriction base="string">
+      <enumeration value="async" />
+      <enumeration value="sync" />
+      <enumeration value="exclusive" />
+    </restriction>
+  </simpleType>
+  
+  
+  <attributeGroup name="assignmentAttributes">
+    <annotation><documentation>the assignment attributes will be used in 
+      tasks and swimlanes to specify to whom these respectively are assigned.
+    </documentation></annotation>
+    <attribute name="assignee" type="string">
+      <annotation><documentation>Expression that resolves to a userId referencing 
+      the person to which the task or swimlane will be assigned.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="assignee-lang" type="string">
+      <annotation><documentation>Expression language for the assignee attribute.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users" type="string">
+      <annotation><documentation>Expression that resolves to a comma separated 
+      list of userId's. All the referred people will be candidates for 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-users attribute.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups" type="string">
+      <annotation><documentation>Resolves to a comma separated list of groupId's.  
+      All the referred people will be candidates to 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-groups attribute.</documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <element name="swimlane">
+    <annotation><documentation>A process role.</documentation></annotation>
+    <complexType>
+      <sequence>
+        <element name="description" minOccurs="0" type="string" />
+      </sequence>
+      <attribute name="name" type="string" use="required" />
+      <attributeGroup ref="tns:assignmentAttributes" />
+    </complexType>
+  </element>
+  
+  <complexType name="transitionType">
+    <annotation><documentation>The outgoing transitions.  The first in the list 
+      will be the default outgoing transition.
+    </documentation></annotation>
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded" />
+    </sequence>
+    <attribute name="name" type="string">
+      <annotation><documentation>Name of this outgoing transition</documentation></annotation>
+    </attribute>
+    <attribute name="to" type="string">
+      <annotation><documentation>Name of the destination activity of this transition. 
+      </documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <element name="transition" type="tns:transitionType">
+    <annotation><documentation>A transition from one activity to another.</documentation></annotation>
+  </element>
+  
+  <element name="on">
+    <complexType>
+      <sequence>
+        <element ref="tns:timer" minOccurs="0" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>A list of event listeners that will 
+          be notified when the event is fired</documentation></annotation>
+        </group>
+      </sequence>
+      <attribute name="event" type="string">
+        <annotation><documentation>The event identification.  start, end, take or 
+        any other custom event.
+        </documentation></annotation>
+      </attribute>
+      <attribute name="continue" type="tns:continueType" default="sync" />
+    </complexType>
+  </element>
+
+  <complexType name="parameterType">
+    <attribute name="subvar" type="string">
+      <annotation><documentation>The name of the sub process variable.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>An expression for which the resulting 
+      value will be used as value.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Language of the expression.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the process variable
+      in the super process execution..
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+
+  <element name="timer">
+    <complexType>
+      <sequence>
+        <annotation><documentation>A list of event listeners that will 
+        be notified when the timer fires</documentation></annotation>
+        <element name="description" minOccurs="0" type="string" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+        </group>
+      </sequence>
+      <attribute name="duedate" type="string">
+        <annotation><documentation>Timer duedate expression that defines the duedate of this 
+        timer relative to the creation time of the timer.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="repeat" type="string">
+        <annotation><documentation>Timer duedate expression that defines repeated scheduling 
+        relative to the last timer fire event.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="duedatetime" type="string">
+        <annotation><documentation>Absolute time in format <code>HH:mm dd/MM/yyyy</code> 
+        (see SimpleDateFormat).  The format for the absolute time can be customized in the 
+        jbpm configuration. 
+        </documentation></annotation>
+      </attribute>
+    </complexType>
+  </element>
+  
+  <group name="eventListenerGroup">
+    <choice>
+      <element name="event-listener" type="tns:wireObjectType" />
+      <element name="hql" type="tns:qlType" />
+      <element name="sql" type="tns:qlType" />
+      <element name="java" type="tns:javaType" />
+      <element name="script" type="tns:scriptType" />
+      <element name="mail" type="tns:mailType" />
+    </choice>
+  </group>
+
+  <complexType name="mailType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="from" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="to" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="cc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="bcc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="subject" type="string" minOccurs="0" />
+      <element name="text" type="string" minOccurs="0" />
+      <element name="html" type="string" minOccurs="0" />
+      <element name="attachments" minOccurs="0" >
+        <complexType>
+          <sequence>
+            <element name="attachment" maxOccurs="unbounded">
+              <complexType>
+						    <attribute name="url" type="string">
+						      <annotation><documentation>URL reference to the attachment</documentation></annotation>
+						    </attribute>
+                <attribute name="resource" type="string">
+                  <annotation><documentation>Name of the attachment resource on the classpath</documentation></annotation>
+                </attribute>
+                <attribute name="file" type="string">
+                  <annotation><documentation>File reference to the attachment</documentation></annotation>
+                </attribute>
+              </complexType>
+            </element>
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="template" type="tns:templateType" />
+  </complexType>
+  
+  <complexType name="mailRecipientType">
+    <attribute name="addresses" type="string">
+      <annotation><documentation>list of email address separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="users" type="string">
+      <annotation><documentation>list of user ids that are resolved to the email address against configured identity component.  
+      user ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="groups" type="string">
+      <annotation><documentation>list of group ids that are resolved to the email address against configured identity component.  
+      group ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <simpleType name="booleanValueType">
+    <restriction base="string">
+      <enumeration value="true" />
+      <enumeration value="on" />
+      <enumeration value="enabled" />
+      <enumeration value="false" />
+      <enumeration value="off" />
+      <enumeration value="disabled" />
+    </restriction>
+  </simpleType>
+
+
+  <simpleType name="templateType">
+    <annotation><documentation>Reference to the email template</documentation></annotation>
+    <restriction base="string"></restriction>
+  </simpleType>
+  
+  <element name="migrate-instances">
+    <annotation><documentation>Information to migrate instances of previously deployed process definitions
+    to the new one</documentation></annotation>
+    <complexType>
+      <sequence>
+        <element name="migration-handler" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>The migration handler specifies the name of a class to be executed while migrating the process instance.</documentation></annotation>
+          <complexType>
+          	<attribute name="class"/>
+          </complexType>
+        </element>
+        <element name="activity-mapping" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>One activity mapping will be present for each activity of which the name changed.</documentation></annotation>
+          <complexType>
+            <attribute name="old-name" type="string" use="required">
+              <annotation><documentation>The name of the activity in the previously deployed process definition.</documentation></annotation>
+            </attribute>
+            <attribute name="new-name" type="string" use="required">
+              <annotation><documentation>The name of the activity in the newly deployed process definition</documentation></annotation>
+            </attribute>
+          </complexType>
+        </element>
+      </sequence>
+      <attribute name="action" type="tns:migrationActionType" default="migrate">
+      </attribute>
+    </complexType>
+  </element>
+  
+  <simpleType name="migrationActionType">
+    <restriction base="string">
+      <enumeration value="end" />
+      <enumeration value="migrate" />
+    </restriction>
+  </simpleType>
+  
+</schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.2.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.3.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.3.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.3.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,1400 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        targetNamespace="http://jbpm.org/4.3/jpdl"
+        xmlns:tns="http://jbpm.org/4.3/jpdl"
+        elementFormDefault="qualified"
+        attributeFormDefault="unqualified">
+        
+  <annotation>
+    <documentation>Schema for jPDL 4 process descriptions; 
+    element process is the top level element.
+    </documentation>
+  </annotation>
+
+  <!-- ### PROCESS DEFINITION ############################################# -->
+
+  <element name="process">
+    <annotation><documentation>A jPDL process definition description; This 
+    is the top level element in a jPDL process file.</documentation></annotation>
+    <complexType>
+      <sequence minOccurs="0" maxOccurs="unbounded">
+        <element name="description" minOccurs="0" type="string" />
+        <element ref="tns:swimlane" minOccurs="0" maxOccurs="unbounded" />
+        <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+        <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+        <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+        <element ref="tns:migrate-instances" minOccurs="0" maxOccurs="1" />
+      </sequence>
+      <attribute name="name" use="required" type="string">
+        <annotation>
+          <documentation>
+            The process name. Multiple processes can be deployed with the same name, as long as they have a different
+            version.
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="key" type="string">
+        <annotation>
+          <documentation>
+            The key can be used to provide a short acronym that will replace the name as the basis for the generated
+            process definition id
+          </documentation>
+        </annotation>
+      </attribute>
+      <attribute name="version" type="int">
+        <annotation>
+          <documentation>
+            Indicates the sequence number of this version for all processes with the same name. By specifying a version
+            automatic deployment can figure out if this process is already deployed or not.
+          </documentation>
+        </annotation>
+      </attribute>
+      <anyAttribute processContents="skip">
+        <annotation><documentation>for extensibility
+        </documentation></annotation>
+      </anyAttribute>
+    </complexType>
+  </element>
+  
+  <!-- ### ACTIVITIES ##################################################### -->
+  
+  <group name="activityGroup">
+    <choice>
+      <!-- ~~~ START ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="start">
+        <annotation><documentation>Start event
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="end">
+        <annotation><documentation>End event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="state" default="ended" type="string">
+            <annotation><documentation>sets the state of the execution explicitely</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-cancel">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-error">
+        <annotation><documentation>End cancel event.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution"/>
+                <enumeration value="process-instance"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <!-- ~~~ STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="state">
+        <annotation><documentation>A wait state.  When an execution arrives in this 
+        activity, the execution will wait until an external trigger is received 
+        with execution.signal() or execution.getActivityInstance().signal()
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="decision">
+        <annotation><documentation>Decision gateway: selects one path out of many alternatives.  
+        When an execution comes in, exactly one outgoing transition is taken.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                        <complexType>
+                          <sequence>
+                            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+                          </sequence>
+                          <attribute name="expr" type="string">
+                            <annotation><documentation>The script text that will be evaluated.  
+                            </documentation></annotation>
+                          </attribute>
+                          <attribute name="lang" type="string">
+                            <annotation><documentation>Identification of the scripting language 
+                            to use.</documentation></annotation>
+                          </attribute>
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="expr" type="string">
+            <annotation><documentation>The script that will be evaluated and resolve to 
+            the name of the outgoing transition.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="lang" type="string">
+            <annotation><documentation>Identification of the scripting language 
+            to use for the expr attribute.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ FORK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="fork">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    
+      <!-- ~~~ JOIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="join">
+        <annotation><documentation>Spawns multiple concurrent paths of 
+        execution.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="multiplicity" type="int" />
+          <attribute name="lockmode" default="upgrade">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="none"/>
+                <enumeration value="read"/>
+                <enumeration value="upgrade"/>
+                <enumeration value="upgrade_nowait"/>
+                <enumeration value="write"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SCRIPT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="script">
+        <annotation><documentation>Evaluates a piece of text as a script
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ HQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="hql">
+        <annotation><documentation>Performs a hibernate query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sql">
+        <annotation><documentation>Performs a hibernate SQL query
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ MAIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="mail">
+        <annotation><documentation>Sends an email
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JMS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="jms">
+        <annotation><documentation>Sends an email
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:jmsType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JAVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="java">
+        <annotation><documentation>Invokes a method on a java object.  
+        Either the java class is instantiated with reflection, or the 
+        java object is fetched from the environment.  Then values from the 
+        environment are injected into the fields and a method is executed.
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ CUSTOM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="custom">
+        <annotation><documentation>Uses a user defined, custom implementation of 
+        ActivityBehaviour
+        </documentation></annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <sequence>
+                <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+                <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+              </sequence>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ TASK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="task">
+        <annotation><documentation>Creates a task in the task component.  
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="assignment-handler" minOccurs="0"  type="tns:wireObjectType" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="notification" minOccurs="0">
+              <complexType>
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional" />
+              </complexType>
+            </element>
+            <element name="reminder" minOccurs="0">
+              <complexType>
+                <attribute name="duedate" type="string" />
+                <attribute name="repeat" type="string" />
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional"/>
+              </complexType>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element ref="tns:timer" minOccurs="0" />
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attributeGroup ref="tns:assignmentAttributes"/>
+          <attribute name="swimlane" type="string" />
+          <attribute name="form" type="string">
+            <annotation><documentation>the resource name of the form in the 
+            deployment.</documentation></annotation>
+          </attribute>
+			    <attribute name="duedate" type="string" />
+          <attribute name="on-transition" default="cancel">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="keep"/>
+                <enumeration value="cancel"/>
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="completion" type="string" default="complete" />
+        </complexType>
+      </element>
+      
+      <!-- ~~~ SUB-PROCESS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sub-process">
+        <annotation><documentation>Waits while a sub process instance is 
+        being executed and continues when the sub process instance ends.
+        </documentation></annotation>
+        <complexType>
+          <sequence minOccurs="0" maxOccurs="unbounded">
+            <element name="description" minOccurs="0" type="string" />
+            <element name="parameter-in" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element name="parameter-out" type="tns:parameterType" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element name="swimlane-mapping" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <attribute name="swimlane" type="string" use="required" />
+                <attribute name="sub-swimlane" type="string" use="required" />
+              </complexType>
+            </element>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence minOccurs="0" maxOccurs="unbounded">
+                      <element name="outcome-value">
+                        <complexType>
+                          <group ref="tns:wireObjectGroup" />
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+          </sequence>
+          <attribute name="sub-process-id" type="string">
+            <annotation><documentation>Identifies the sub process by the id.  This means that a specific 
+              version of a process definition is referenced
+            </documentation></annotation>
+          </attribute>
+          <attribute name="sub-process-key" type="string">
+            <annotation><documentation>Identifies the sub process by the key.  This means that the latest 
+              version of the process definition with the given key is referenced.  The latest version 
+              of the process is looked up each time the activity executes.  
+            </documentation></annotation>
+          </attribute>
+          <attribute name="outcome" type="string">
+            <annotation><documentation>Expression that is evaluated when the sub process 
+            instance ends.  The value is then used for outcome transition mapping. 
+            </documentation></annotation>
+          </attribute>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ GROUP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="group">
+        <annotation><documentation>Scope enclosing a number of activities.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <group ref="tns:activityGroup" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+            <element ref="tns:timer" minOccurs="0" maxOccurs="unbounded"/>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+      
+      <!-- ~~~ RULES DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="rules-decision">
+        <annotation><documentation>Selects one outgoing transition based on evaluation of rules.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:transition" minOccurs="0" maxOccurs="unbounded" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ RULES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="rules">
+        <annotation><documentation>Evaluates rules after feeding in some facts in a stateful knowledge session.
+        </documentation></annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="fact" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <attribute name="var" type="string" />
+                <attribute name="expr" type="string" />
+              </complexType>
+            </element>
+            <element name="transition" minOccurs="0" maxOccurs="unbounded">
+              <complexType>
+                <complexContent>
+                  <extension base="tns:transitionType">
+                    <sequence>
+                      <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                        <complexType>
+                          <sequence>
+                            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+                          </sequence>
+                          <attribute name="expr" type="string">
+                            <annotation><documentation>The script text that will be evaluated.  
+                            </documentation></annotation>
+                          </attribute>
+                          <attribute name="lang" type="string">
+                            <annotation><documentation>Identification of the scripting language 
+                            to use.</documentation></annotation>
+                          </attribute>
+                        </complexType>
+                      </element>
+                    </sequence>
+                  </extension>
+                </complexContent>
+              </complexType>
+            </element>
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded">
+              <annotation><documentation>Events on which listeners can be registered.</documentation></annotation>
+            </element>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+    </choice>
+  </group>
+  
+  <group name="wireObjectGroup">
+    <choice>
+
+      <!-- SPECIAL OBJECTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="null">
+        <annotation><documentation>the null value 
+        </documentation></annotation>
+      </element>
+      <element name="ref">
+        <annotation><documentation>A reference to an object in the current environment</documentation></annotation>
+        <complexType>
+          <attribute name="object" type="string" use="required">
+            <annotation><documentation>The name of the referred object</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="env-ref">
+        <annotation><documentation>The current environment.    
+        </documentation></annotation>
+      </element>
+      <element name="jndi">
+        <annotation><documentation>A lookup from JNDI through the InitialContext
+        </documentation></annotation>
+        <complexType>
+          <attribute name="jndi-name" type="string" use="required" />
+        </complexType>
+      </element>
+      
+      <!-- COLLECTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="list">
+        <annotation><documentation>A java.util.List</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="class" type="string" default="java.util.ArrayList">
+            <annotation><documentation>Implementation class for this list.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedList(List)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="map" type="tns:mapType"/>
+
+      <element name="set">
+        <annotation><documentation>A java.util.Set 
+        </documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="class" type="string" default="java.util.HashList">
+            <annotation><documentation>Implementation class for this set.
+            </documentation></annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation><documentation>Indicates if this collection should be synchronized
+            with Collections.synchronizedSet(Set)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+      <element name="properties">
+        <annotation><documentation>A java.util.Properties</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="property">
+              <complexType>
+                <attribute name="name" type="string" use="required" />
+                <attribute name="value" type="string" use="required" />
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="file" type="string">
+            <annotation><documentation>A file on the file system</documentation></annotation>
+          </attribute>
+          <attribute name="resource" type="string">
+            <annotation><documentation>A file as a resource in the classpath</documentation></annotation>
+          </attribute>
+          <attribute name="url" type="string">
+            <annotation><documentation>the contents is fetched by loading a url</documentation></annotation>
+          </attribute>
+          <attribute name="is-xml" type="tns:booleanValueType">
+            <annotation><documentation>optionally indicates if the content of referenced file in attributes
+            'file', 'resource' or 'url' is XML.  The default is the 
+            plain properties format with a space or the equals character (=) separating key and value on 
+            each line.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    
+      <!-- OBJECT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="object" type="tns:wireObjectType" />
+      
+      <!-- BASIC TYPES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="string">
+        <complexType>
+          <attribute name="name">
+            <annotation><documentation>the name of the string object</documentation></annotation>
+          </attribute>
+          <attribute name="value">
+            <annotation><documentation>the actual string value</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="byte">
+        <annotation><documentation>A java.lang.Byte</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="byte" use="required" />
+        </complexType>
+      </element>
+      <element name="char">
+        <annotation><documentation>A java.lang.Character</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" use="required">
+            <simpleType>
+              <restriction base="string">
+                <maxLength value="1" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="double">
+        <annotation><documentation>A java.lang.Double</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="double" use="required" />
+        </complexType>
+      </element>
+      <element name="false">
+        <annotation><documentation>java.lang.Boolean.FALSE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="float">
+        <annotation><documentation>A java.lang.Float
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="float" use="required" />
+        </complexType>
+      </element>
+      <element name="int">
+        <annotation><documentation>A java.lang.Integer
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="int" use="required"/>
+        </complexType>
+      </element>
+      <element name="long">
+        <annotation><documentation>A java.lang.Long</documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="long" use="required"/>
+        </complexType>
+      </element>
+      <element name="short">
+        <annotation><documentation>a java.lang.Short
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+          <attribute name="value" type="short" use="required"/>
+        </complexType>
+      </element>
+      <element name="true">
+        <annotation><documentation>java.lang.Boolean.TRUE 
+        </documentation></annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation><documentation>The name of the object.  It's optional and serves 
+            as an id to refer to this object from other object declarations.  This name can 
+            also be used lookup the object programmatically.</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      
+
+    </choice>
+  </group>
+  
+  <complexType name="wireObjectType">
+    <annotation><documentation>Any java object that will be created by reflection.                                                                        .
+    <p>There are three main ways to create an object: by constructor or by a factory 
+    object or a static factory method.</p>
+    <p><b>Using the constructor</b>: Then the <code>class</code> attribute must provide the 
+    fully qualified class name.  In case another constructor then the default is 
+    targetted, a <code>constructor</code> child element can be provided.
+    The <code>factory</code> attribute should not be provided for using a constructor. 
+    </p>
+    <p><b>Using a factory</b>: Then the <code>factory</code> attribute or one 
+    <code>factory</code> element must be provided along with the attribute 
+    <code>method</code>. 
+    </p>
+    <p><b>Using a static factory method</b>: Then the <code>class</code> and 
+    <code>method</code> attributes should be specified.  There should be no 
+    reference to a <code>factory</code> attribute of element. 
+    </p>
+    <p><b>Construction and initialization</b>: all objects (constructor and factory)
+    are build in two phases: construction and initialisation phase.  During construction
+    all is done until a pointer is obtained to the object.  In initialisation, operations 
+    are applied to the object until it is ready to be used.  The separation between 
+    construction and initialisation is made to allow for bidirectional references.  In 
+    that case, at least one of both ends can not be fully initialised before it is injected 
+    into the other end.
+    </p>
+    <p><b>Operations</b>: after construction, various operations can be applied to objects 
+    like e.g. direct field injection, injection through setters, method invocation, 
+    enlist with the standard transaction, subscribe the object as a listener to an observable  
+    </p>
+    <p><b>Arguments</b>: There are two different places for arguments.  The <code>arg</code> 
+    elements for the factory method invocation should be placed as child elements under the 
+    <code>object</code> element.  The <code>arg</code> elements for the constructor should be 
+    placed as child elements under the <code>constructor</code> element.    
+    </p>
+    </documentation></annotation>
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="factory">
+        <annotation><documentation>Contains one element that describes the factory object.</documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+        </complexType>
+      </element>
+      <element name="constructor">
+        <annotation><documentation>Specifies the arguments to use for a non-default constructor.</documentation></annotation>
+        <complexType>
+          <choice maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+        </complexType>
+      </element>
+      <element name="arg" type="tns:argType">
+        <annotation><documentation>The factory method arguments.</documentation></annotation>
+      </element>
+      <element name="field">
+        <annotation><documentation>Injects a value into a member field of this object.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The member field name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="property">
+        <annotation><documentation>Injects a value through a setter method.
+        Exactly one child element must specify the value.
+        </documentation></annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation><documentation>The name of the property (without the 'set' prefix)</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="invoke">
+        <annotation><documentation>Invokes a method</documentation></annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+          <attribute name="method" type="string" use="required">
+            <annotation><documentation>the method name</documentation></annotation>
+          </attribute>
+        </complexType>
+      </element>
+    </choice>
+    <attribute name="class" type="string">
+      <annotation><documentation>The fully qualified class name</documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="factory" type="string">
+      <annotation><documentation>The name of the factory object</documentation></annotation>
+    </attribute>
+    <attribute name="method" type="string">
+      <annotation><documentation>The factory method name</documentation></annotation>
+    </attribute>
+    <attribute name="auto-wire" type="string">
+      <annotation><documentation>Indicates if the member fields and setter properties 
+      should be automatically wired based on matching the property names and types with the 
+      object names and types</documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="argType">
+    <annotation><documentation>The method arguments.
+    Each 'arg' element should have exactly one child element 
+    that represents the value of the argument.
+    </documentation></annotation>
+    <attribute name="type" type="string">
+      <annotation><documentation>The java class name representing 
+      the type of the method.  This is optional and can be used to 
+      indicate the appropriate method in case of method overloading. 
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <complexType name="mapType">
+    <annotation><documentation>A java.util.Map</documentation></annotation>
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <element name="entry">
+        <complexType>
+          <sequence minOccurs="0">
+            <element name="key" minOccurs="0">
+              <complexType>
+                <group ref="tns:wireObjectGroup" />
+              </complexType>
+            </element>
+            <element name="value" minOccurs="0">
+              <complexType>
+                <group ref="tns:wireObjectGroup" />
+              </complexType>
+            </element>
+          </sequence>
+        </complexType>
+      </element>
+    </choice>
+    <attribute name="class" type="string" default="java.util.HashMap">
+      <annotation><documentation>Implementation class for this map.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="synchronized" type="tns:booleanValueType" default="false">
+      <annotation><documentation>Indicates if this collection should be synchronized
+      with Collections.synchronizedList(List)</documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="javaType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="field" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Field injections from the environment 
+        invocation.</documentation></annotation>
+      </element>
+      <element name="arg" minOccurs="0" maxOccurs="unbounded">
+        <annotation><documentation>Method arguments.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="method" type="string" use="required">
+      <annotation><documentation>The name of the method to invoke.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="ejb-jndi-name" type="string">
+      <annotation><documentation>The jndi name of the ejb that needs to be invoked.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="class" type="string">
+      <annotation><documentation>The class to instantiate.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>Expression that resolves to the target object
+      on which the method should be invoked.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>The language in which attribute 'expr' is to be 
+      resolved.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>The variable name to store the return value
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="scriptType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="text" type="string" minOccurs="0">
+        <annotation><documentation>The content of this expression element 
+        is the script text that will be evaluated.  This is mutually 
+        exclusive with the expression attribute.</documentation></annotation>
+      </element>
+    </sequence>
+    <attribute name="expr" type="string">
+      <annotation><documentation>The script text that will be evaluated.  This 
+      is mutually exclusive with the expression element.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Identification of the scripting language 
+      to use.</documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <complexType name="qlType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="query" type="string">
+        <annotation><documentation>The query text.</documentation></annotation>
+      </element>
+      <element name="parameters" minOccurs="0">
+        <annotation><documentation>Query parameters.</documentation></annotation>
+        <complexType>
+          <sequence>
+            <group ref="tns:wireObjectGroup" maxOccurs="unbounded" />
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the variable in which the result 
+      of the script evaluation will be stored</documentation></annotation>
+    </attribute>
+    <attribute name="unique" type="string">
+      <annotation><documentation>Does this query return a unique result or a list
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <attributeGroup name="activityAttributes">
+    <attribute name="name" type="string">
+      <annotation><documentation>The id of this activity.  The name should be unique
+      in the complete scope of the process.</documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="continue" default="sync" type="tns:continueType">
+      <annotation><documentation>To specify async continuations.
+      sync is the default.
+      </documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <simpleType name="continueType">
+    <restriction base="string">
+      <enumeration value="async" />
+      <enumeration value="sync" />
+      <enumeration value="exclusive" />
+    </restriction>
+  </simpleType>
+  
+  
+  <attributeGroup name="assignmentAttributes">
+    <annotation><documentation>the assignment attributes will be used in 
+      tasks and swimlanes to specify to whom these respectively are assigned.
+    </documentation></annotation>
+    <attribute name="assignee" type="string">
+      <annotation><documentation>Expression that resolves to a userId referencing 
+      the person to which the task or swimlane will be assigned.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="assignee-lang" type="string">
+      <annotation><documentation>Expression language for the assignee attribute.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users" type="string">
+      <annotation><documentation>Expression that resolves to a comma separated 
+      list of userId's. All the referred people will be candidates for 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-users-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-users attribute.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups" type="string">
+      <annotation><documentation>Resolves to a comma separated list of groupId's.  
+      All the referred people will be candidates to 
+      take the task or swimlane.</documentation></annotation>
+    </attribute>
+    <attribute name="candidate-groups-lang" type="string">
+      <annotation><documentation>Expression language for the 
+      candidate-groups attribute.</documentation></annotation>
+    </attribute>
+  </attributeGroup>
+  
+  <element name="swimlane">
+    <annotation><documentation>A process role.</documentation></annotation>
+    <complexType>
+      <sequence>
+        <element name="description" minOccurs="0" type="string" />
+      </sequence>
+      <attribute name="name" type="string" use="required" />
+      <attributeGroup ref="tns:assignmentAttributes" />
+    </complexType>
+  </element>
+  
+  <complexType name="transitionType">
+    <annotation><documentation>The outgoing transitions.  The first in the list 
+      will be the default outgoing transition.
+    </documentation></annotation>
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded" />
+    </sequence>
+    <attribute name="name" type="string">
+      <annotation><documentation>Name of this outgoing transition</documentation></annotation>
+    </attribute>
+    <attribute name="to" type="string">
+      <annotation><documentation>Name of the destination activity of this transition. 
+      </documentation></annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation><documentation>Graphical information used by process designer tool.
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <element name="transition" type="tns:transitionType">
+    <annotation><documentation>A transition from one activity to another.</documentation></annotation>
+  </element>
+  
+  <element name="on">
+    <complexType>
+      <sequence>
+        <element ref="tns:timer" minOccurs="0" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>A list of event listeners that will 
+          be notified when the event is fired</documentation></annotation>
+        </group>
+      </sequence>
+      <attribute name="event" type="string">
+        <annotation><documentation>The event identification.  start, end, take or 
+        any other custom event.
+        </documentation></annotation>
+      </attribute>
+      <attribute name="continue" type="tns:continueType" default="sync" />
+    </complexType>
+  </element>
+
+  <complexType name="parameterType">
+    <attribute name="subvar" type="string">
+      <annotation><documentation>The name of the sub process variable.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation><documentation>An expression for which the resulting 
+      value will be used as value.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation><documentation>Language of the expression.
+      </documentation></annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation><documentation>Name of the process variable
+      in the super process execution..
+      </documentation></annotation>
+    </attribute>
+  </complexType>
+
+
+  <element name="timer">
+    <complexType>
+      <sequence>
+        <annotation><documentation>A list of event listeners that will 
+        be notified when the timer fires</documentation></annotation>
+        <element name="description" minOccurs="0" type="string" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+        </group>
+      </sequence>
+      <attribute name="duedate" type="string">
+        <annotation><documentation>Timer duedate expression that defines the duedate of this 
+        timer relative to the creation time of the timer.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="repeat" type="string">
+        <annotation><documentation>Timer duedate expression that defines repeated scheduling 
+        relative to the last timer fire event.  E.g. '2 hours' or '4 business days'
+        </documentation></annotation>
+      </attribute>
+      <attribute name="duedatetime" type="string">
+        <annotation><documentation>Absolute time in format <code>HH:mm dd/MM/yyyy</code> 
+        (see SimpleDateFormat).  The format for the absolute time can be customized in the 
+        jbpm configuration. 
+        </documentation></annotation>
+      </attribute>
+    </complexType>
+  </element>
+  
+  <group name="eventListenerGroup">
+    <choice>
+      <element name="event-listener">
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="hql">
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="sql">
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="java">
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="script">
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="mail">
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+    </choice>
+  </group>
+  
+  <complexType name="mailType">
+    <sequence>
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="from" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="to" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="cc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="bcc" type="tns:mailRecipientType" minOccurs="0" />
+      <element name="subject" type="string" minOccurs="0" />
+      <element name="text" type="string" minOccurs="0" />
+      <element name="html" type="string" minOccurs="0" />
+      <element name="attachments" minOccurs="0" >
+        <complexType>
+          <sequence>
+            <element name="attachment" maxOccurs="unbounded">
+              <complexType>
+						    <attribute name="url" type="string">
+						      <annotation><documentation>URL reference to the attachment</documentation></annotation>
+						    </attribute>
+                <attribute name="resource" type="string">
+                  <annotation><documentation>Name of the attachment resource on the classpath</documentation></annotation>
+                </attribute>
+                <attribute name="file" type="string">
+                  <annotation><documentation>File reference to the attachment</documentation></annotation>
+                </attribute>
+              </complexType>
+            </element>
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="template" type="tns:templateType" />
+  </complexType>
+  
+  <complexType name="jmsType">
+    <choice minOccurs="1" maxOccurs="1">
+      <element name="object" type="tns:wireObjectType"/>
+      <element name="text" type="string"/>
+      <element name="map" type="tns:mapType"/>
+    </choice>
+    <attribute name="connection-factory" type="string">
+      <annotation><documentation>jndi name of the jms connection factory</documentation></annotation>
+    </attribute>
+    <attribute name="destination" type="string">
+      <annotation><documentation>jndi name of the destination to send the message to</documentation></annotation>
+    </attribute>
+    <attribute name="transacted" type="tns:booleanValueType" default="false">
+      <annotation><documentation>indicates whether the message should be sent in a transactional way</documentation></annotation>
+    </attribute>
+    <attribute name="acknowledge" type="tns:acknowledgeType" default="auto">
+      <annotation><documentation>indicates the acknowledgment mode</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <complexType name="mailRecipientType">
+    <attribute name="addresses" type="string">
+      <annotation><documentation>list of email address separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="users" type="string">
+      <annotation><documentation>list of user ids that are resolved to the email address against configured identity component.  
+      user ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+    <attribute name="groups" type="string">
+      <annotation><documentation>list of group ids that are resolved to the email address against configured identity component.  
+      group ids should be separated by ',' (comma) ';' (semicolon) '|' or whitespace</documentation></annotation>
+    </attribute>
+  </complexType>
+  
+  <simpleType name="booleanValueType">
+    <restriction base="string">
+      <enumeration value="true" />
+      <enumeration value="on" />
+      <enumeration value="enabled" />
+      <enumeration value="false" />
+      <enumeration value="off" />
+      <enumeration value="disabled" />
+    </restriction>
+  </simpleType>
+
+  <simpleType name="acknowledgeType">
+    <restriction base="string">
+      <enumeration value="auto" />
+      <enumeration value="client" />
+      <enumeration value="dups-ok" />
+    </restriction>
+  </simpleType>
+
+
+  <simpleType name="templateType">
+    <annotation><documentation>Reference to the email template</documentation></annotation>
+    <restriction base="string"></restriction>
+  </simpleType>
+  
+  <element name="migrate-instances">
+    <annotation><documentation>Information to migrate instances of previously deployed process definitions
+    to the new one</documentation></annotation>
+    <complexType>
+      <sequence>
+        <element name="migration-handler" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>The migration handler specifies the name of a class to be executed while migrating the process instance.</documentation></annotation>
+          <complexType>
+          	<attribute name="class"/>
+          </complexType>
+        </element>
+        <element name="activity-mapping" minOccurs="0" maxOccurs="unbounded">
+          <annotation><documentation>One activity mapping will be present for each activity of which the name changed.</documentation></annotation>
+          <complexType>
+            <attribute name="old-name" type="string" use="required">
+              <annotation><documentation>The name of the activity in the previously deployed process definition.</documentation></annotation>
+            </attribute>
+            <attribute name="new-name" type="string" use="required">
+              <annotation><documentation>The name of the activity in the newly deployed process definition</documentation></annotation>
+            </attribute>
+          </complexType>
+        </element>
+      </sequence>
+      <attribute name="action" type="tns:migrationActionType" default="migrate">
+      </attribute>
+    </complexType>
+  </element>
+  
+  <simpleType name="migrationActionType">
+    <restriction base="string">
+      <enumeration value="end" />
+      <enumeration value="migrate" />
+    </restriction>
+  </simpleType>
+  
+</schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.3.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.4.xsd
===================================================================
--- projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.4.xsd	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.4.xsd	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,1776 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://jbpm.org/4.4/jpdl"
+  xmlns:tns="http://jbpm.org/4.4/jpdl" elementFormDefault="qualified">
+  <annotation>
+    <documentation>Schema for jPDL 4 process descriptions;
+      the top level element is process.</documentation>
+  </annotation>
+
+  <!-- ### PROCESS DEFINITION ############################################# -->
+
+  <element name="process">
+    <annotation>
+      <documentation>jBPM Process Definition Language definition.
+        This is the top level element in a process definition file.</documentation>
+    </annotation>
+    <complexType>
+      <sequence>
+        <element name="description" minOccurs="0" type="string" />
+        <choice minOccurs="0" maxOccurs="unbounded">
+          <element ref="tns:swimlane" />
+          <element ref="tns:on" />
+          <element ref="tns:timer" />
+          <element ref="tns:variable" />
+          <group ref="tns:activityGroup" />
+        </choice>
+        <element ref="tns:migrate-instances" minOccurs="0" />
+      </sequence>
+      <attribute name="name" use="required" type="string">
+        <annotation>
+          <documentation>The process name. Multiple processes can be deployed with the same
+            name, as long as they have a different version.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="key" type="string">
+        <annotation>
+          <documentation>The key can be used to provide a short acronym that replaces the name
+            as the basis for the generated process definition id.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="version" type="int">
+        <annotation>
+          <documentation>Indicates the version number of this process definition among its
+            homonyms. By specifying a version, automatic deployment can tell whether this
+            process is already deployed.</documentation>
+        </annotation>
+      </attribute>
+    </complexType>
+  </element>
+
+  <!-- ### ACTIVITIES ##################################################### -->
+
+  <group name="activityGroup">
+    <choice>
+      <!-- ~~~ START ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="start">
+        <annotation>
+          <documentation>Start event.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element ref="tns:transition" />
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="form" type="string">
+            <annotation>
+              <documentation>Resource name of the form in the deployment.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="end">
+        <annotation>
+          <documentation>End event.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution" />
+                <enumeration value="process-instance" />
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="state" default="ended" type="string">
+            <annotation>
+              <documentation>Specify the end state of the execution explicitly.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-cancel">
+        <annotation>
+          <documentation>End cancel event.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution" />
+                <enumeration value="process-instance" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="end-error">
+        <annotation>
+          <documentation>End cancel event.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element ref="tns:on" minOccurs="0" maxOccurs="unbounded" />
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="ends" default="process-instance">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="execution" />
+                <enumeration value="process-instance" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ STATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="state">
+        <annotation>
+          <documentation>Wait state. When an execution arrives in this activity,
+            the execution stops until an external trigger is delivered through
+            execution.signal() or execution.getActivityInstance().signal()</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element name="transition">
+                <complexType>
+                  <complexContent>
+                    <extension base="tns:transitionType">
+                      <sequence>
+                        <element ref="tns:timer" minOccurs="0" />
+                      </sequence>
+                    </extension>
+                  </complexContent>
+                </complexType>
+              </element>
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="decision">
+        <annotation>
+          <documentation>Decision gateway: selects one path out of many alternatives.
+            When an execution arrives, it takes exactly one outgoing transition.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" minOccurs="0" maxOccurs="unbounded" />
+              <element name="transition" minOccurs="0" maxOccurs="unbounded">
+                <complexType>
+                  <complexContent>
+                    <extension base="tns:transitionType">
+                      <sequence>
+                        <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                          <complexType>
+                            <attribute name="expr" type="string">
+                              <annotation>
+                                <documentation>Expression to evaluate.</documentation>
+                              </annotation>
+                            </attribute>
+                            <attribute name="lang" type="string">
+                              <annotation>
+                                <documentation>Scripting language to interpret.</documentation>
+                              </annotation>
+                            </attribute>
+                          </complexType>
+                        </element>
+                      </sequence>
+                    </extension>
+                  </complexContent>
+                </complexType>
+              </element>
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="expr" type="string">
+            <annotation>
+              <documentation>The script that will be evaluated and resolve to
+                the name of the outgoing transition.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="lang" type="string">
+            <annotation>
+              <documentation>Identification of the scripting language
+                to use for the expr attribute.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ FOREACH ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="foreach">
+        <annotation>
+          <documentation>Spawns concurrent paths of execution
+            over each element of a collection.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element ref="tns:transition" />
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="var" type="string" use="required" />
+          <attribute name="in" type="string" use="required" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ FORK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="fork">
+        <annotation>
+          <documentation>Spawns multiple concurrent paths of
+            execution.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element ref="tns:transition" />
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ JOIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="join">
+        <annotation>
+          <documentation>Spawns multiple concurrent paths of
+            execution.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element ref="tns:transition" />
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attribute name="multiplicity" type="string" />
+          <attribute name="lockmode" default="upgrade">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="none" />
+                <enumeration value="read" />
+                <enumeration value="upgrade" />
+                <enumeration value="upgrade_nowait" />
+                <enumeration value="write" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SCRIPT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="script">
+        <annotation>
+          <documentation>Evaluates a piece of text as a script.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ HQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="hql">
+        <annotation>
+          <documentation>Performs a Hibernate query.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ SQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sql">
+        <annotation>
+          <documentation>Performs a Hibernate SQL query.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ MAIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="mail">
+        <annotation>
+          <documentation>Sends an email.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JMS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="jms">
+        <annotation>
+          <documentation>Sends an email.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:jmsType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ JAVA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="java">
+        <annotation>
+          <documentation>Invokes a method on a java object.
+            Either the java class is instantiated with reflection,
+            or the java object is fetched from the environment.
+            Values are then injected into the fields and.
+            Finally a method is invoked.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ ASSIGN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="assign">
+        <annotation>
+          <documentation>Assigns a source value to a target location.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:assignType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element ref="tns:transition" />
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ CUSTOM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="custom">
+        <annotation>
+          <documentation>Calls a user defined, custom implementation of
+            ActivityBehaviour.</documentation>
+        </annotation>
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <choice minOccurs="0" maxOccurs="unbounded">
+                <element ref="tns:on" />
+                <element name="transition">
+                  <complexType>
+                    <complexContent>
+                      <extension base="tns:transitionType">
+                        <sequence>
+                          <element ref="tns:timer" minOccurs="0" />
+                        </sequence>
+                      </extension>
+                    </complexContent>
+                  </complexType>
+                </element>
+              </choice>
+              <attributeGroup ref="tns:activityAttributes" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+
+      <!-- ~~~ TASK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="task">
+        <annotation>
+          <documentation>Creates a task in the task component.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <element name="assignment-handler" minOccurs="0" type="tns:wireObjectType" />
+            <element name="notification" minOccurs="0">
+              <complexType>
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional" />
+              </complexType>
+            </element>
+            <element name="reminder" minOccurs="0">
+              <complexType>
+                <attribute name="duedate" type="string" />
+                <attribute name="repeat" type="string" />
+                <attribute name="continue" type="tns:continueType" default="sync" />
+                <attribute name="template" type="tns:templateType" use="optional" />
+              </complexType>
+            </element>
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:on" />
+              <element ref="tns:timer" />
+              <element name="transition">
+                <complexType>
+                  <complexContent>
+                    <extension base="tns:transitionType">
+                      <sequence>
+                        <element ref="tns:timer" minOccurs="0" />
+                      </sequence>
+                    </extension>
+                  </complexContent>
+                </complexType>
+              </element>
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+          <attributeGroup ref="tns:assignmentAttributes" />
+          <attribute name="swimlane" type="string" />
+          <attribute name="form" type="string">
+            <annotation>
+              <documentation>Resource name of the form in the deployment.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="duedate" type="string" />
+          <attribute name="on-transition" default="cancel">
+            <simpleType>
+              <restriction base="string">
+                <enumeration value="keep" />
+                <enumeration value="cancel" />
+              </restriction>
+            </simpleType>
+          </attribute>
+          <attribute name="completion" type="string" default="complete" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ SUB-PROCESS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="sub-process">
+        <annotation>
+          <documentation>Waits while a sub process instance is being executed
+            and continues when the sub process instance ends.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element name="parameter-in" type="tns:parameterType" />
+              <element name="parameter-out" type="tns:parameterType" />
+              <element ref="tns:timer" />
+              <element ref="tns:on">
+                <annotation>
+                  <documentation>Events on which listeners can be registered.</documentation>
+                </annotation>
+              </element>
+              <element name="swimlane-mapping">
+                <complexType>
+                  <attribute name="swimlane" type="string" use="required" />
+                  <attribute name="sub-swimlane" type="string" use="required" />
+                </complexType>
+              </element>
+              <element name="transition">
+                <complexType>
+                  <complexContent>
+                    <extension base="tns:transitionType">
+                      <sequence>
+                        <element name="outcome-value" minOccurs="0" maxOccurs="unbounded">
+                          <complexType>
+                            <group ref="tns:wireObjectGroup" />
+                          </complexType>
+                        </element>
+                      </sequence>
+                    </extension>
+                  </complexContent>
+                </complexType>
+              </element>
+            </choice>
+          </sequence>
+          <attribute name="sub-process-id" type="string">
+            <annotation>
+              <documentation>References a sub-process by id. This means that a specific
+                version of a process definition is referenced.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="sub-process-key" type="string">
+            <annotation>
+              <documentation>References a sub-process by key. Therefore, the latest
+                version of the process definition with the given key is referenced.
+                The latest version is resolved in each execution.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="outcome" type="string">
+            <annotation>
+              <documentation>Expression that is evaluated when the sub process instance ends.
+                The value is then used for outcome transition mapping.</documentation>
+            </annotation>
+          </attribute>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ GROUP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="group">
+        <annotation>
+          <documentation>Scope enclosing a number of activities.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <group ref="tns:activityGroup" />
+              <element ref="tns:transition" />
+              <element ref="tns:on">
+                <annotation>
+                  <documentation>Events on which listeners can be registered.</documentation>
+                </annotation>
+              </element>
+              <element ref="tns:timer" />
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ RULES DECISION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="rules-decision">
+        <annotation>
+          <documentation>Selects one outgoing transition based on evaluation
+            of rules.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice  minOccurs="0" maxOccurs="unbounded">
+              <element ref="tns:transition" />
+              <element ref="tns:on">
+                <annotation>
+                  <documentation>Events on which listeners can be registered.</documentation>
+                </annotation>
+              </element>
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+
+      <!-- ~~~ RULES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="rules">
+        <annotation>
+          <documentation>Evaluates rules after feeding in some facts in a stateful
+            knowledge session.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <element name="description" minOccurs="0" type="string" />
+            <choice minOccurs="0" maxOccurs="unbounded">
+              <element name="fact">
+                <complexType>
+                  <attribute name="var" type="string" />
+                  <attribute name="expr" type="string" />
+                </complexType>
+              </element>
+              <element name="transition">
+                <complexType>
+                  <complexContent>
+                    <extension base="tns:transitionType">
+                      <sequence>
+                        <element name="condition" minOccurs="0" maxOccurs="unbounded">
+                          <complexType>
+                            <sequence>
+                              <element name="handler" minOccurs="0" type="tns:wireObjectType" />
+                            </sequence>
+                            <attribute name="expr" type="string">
+                              <annotation>
+                                <documentation>Expression to evaluate.</documentation>
+                              </annotation>
+                            </attribute>
+                            <attribute name="lang" type="string">
+                              <annotation>
+                                <documentation>Script language to interpret.</documentation>
+                              </annotation>
+                            </attribute>
+                          </complexType>
+                        </element>
+                      </sequence>
+                    </extension>
+                  </complexContent>
+                </complexType>
+              </element>
+              <element ref="tns:on">
+                <annotation>
+                  <documentation>Events on which listeners can be registered.</documentation>
+                </annotation>
+              </element>
+            </choice>
+          </sequence>
+          <attributeGroup ref="tns:activityAttributes" />
+        </complexType>
+      </element>
+    </choice>
+  </group>
+
+  <group name="wireObjectGroup">
+    <choice>
+
+      <!-- SPECIAL OBJECTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="null">
+        <annotation>
+          <documentation>The null value.</documentation>
+        </annotation>
+      </element>
+      <element name="ref">
+        <annotation>
+          <documentation>Reference to an object in the current environment.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="object" type="string" use="required">
+            <annotation>
+              <documentation>The name of the referred object.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="env-ref">
+        <annotation>
+          <documentation>The current environment.</documentation>
+        </annotation>
+      </element>
+      <element name="jndi">
+        <annotation>
+          <documentation>JNDI lookup based off the initial context.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="jndi-name" type="string" use="required" />
+        </complexType>
+      </element>
+
+      <!-- COLLECTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="list">
+        <annotation>
+          <documentation>java.util.List instance.</documentation>
+        </annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="class" type="string" default="java.util.ArrayList">
+            <annotation>
+              <documentation>List implementation class.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation>
+              <documentation>Indicates if this collection should be synchronized
+                with Collections.synchronizedList()</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="map" type="tns:mapType" />
+
+      <element name="set">
+        <annotation>
+          <documentation>java.util.Set instance.</documentation>
+        </annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <group ref="tns:wireObjectGroup" />
+          </choice>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="class" type="string" default="java.util.HashList">
+            <annotation>
+              <documentation>Set implementation class.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="synchronized" type="tns:booleanValueType" default="false">
+            <annotation>
+              <documentation>Indicates if this collection should be synchronized
+                with Collections.synchronizedSet()</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <element name="properties">
+        <annotation>
+          <documentation>java.util.Properties instance.</documentation>
+        </annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="property">
+              <complexType>
+                <attribute name="name" type="string" use="required" />
+                <attribute name="value" type="string" use="required" />
+              </complexType>
+            </element>
+          </choice>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="file" type="string">
+            <annotation>
+              <documentation>File in the file system.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="resource" type="string">
+            <annotation>
+              <documentation>Resource in the classpath.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="url" type="string">
+            <annotation>
+              <documentation>Resource in the web.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="is-xml" type="tns:booleanValueType">
+            <annotation>
+              <documentation>tells whether the resource referenced by
+                attributes 'file', 'resource' or 'url' is XML. The default is the
+                plain properties format, where a space or '=' separates the key
+                from the value in each line.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+
+      <!-- OBJECT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="object" type="tns:wireObjectType" />
+
+      <!-- BASIC TYPES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+      <element name="string">
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" />
+        </complexType>
+      </element>
+
+      <element name="byte">
+        <annotation>
+          <documentation>8-bit signed integer.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="byte" use="required" />
+        </complexType>
+      </element>
+      <element name="char">
+        <annotation>
+          <documentation>16-bit Unicode character.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" use="required">
+            <simpleType>
+              <restriction base="string">
+                <maxLength value="1" />
+              </restriction>
+            </simpleType>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="double">
+        <annotation>
+          <documentation>64-bit floating point number.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="double" use="required" />
+        </complexType>
+      </element>
+      <element name="false">
+        <annotation>
+          <documentation>Boolean false value</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="float">
+        <annotation>
+          <documentation>32-bit floating point number.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="float" use="required" />
+        </complexType>
+      </element>
+      <element name="int">
+        <annotation>
+          <documentation>32-bit signed integer.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="int" use="required" />
+        </complexType>
+      </element>
+      <element name="long">
+        <annotation>
+          <documentation>64-bit signed integer.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="long" use="required" />
+        </complexType>
+      </element>
+      <element name="short">
+        <annotation>
+          <documentation>16-bit signed integer.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+          <attribute name="value" type="short" use="required" />
+        </complexType>
+      </element>
+      <element name="true">
+        <annotation>
+          <documentation>Boolean true value.</documentation>
+        </annotation>
+        <complexType>
+          <attribute name="name" type="string">
+            <annotation>
+              <documentation>The name of the object. Optional, serves as an identifier
+                to refer to this object from other object descriptions.
+                Also used to fetch the object programmatically.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+    </choice>
+  </group>
+
+  <complexType name="wireObjectType">
+    <annotation>
+      <documentation>Any java object that will be created by reflection.
+        <p>There are three main ways to create an object: by constructor or by a factory
+          object or a static factory method.</p>
+        <p><b>Using the constructor</b>: the <code>class</code> attribute must provide
+          the fully qualified class name. In case a constructor other than the default
+          should be invoked, a <code>constructor</code> child element can be provided.
+          The <code>factory</code> attribute should be absent when using a constructor.</p>
+        <p><b>Using a factory</b>: the <code>factory</code> attribute or one
+          <code>factory</code> element must be provided along with the attribute
+          <code>method</code>.</p>
+        <p><b>Using a static factory method</b>: the <code>class</code> and <code>method</code>
+          attributes should be specified. There should not be a <code>factory</code>
+          attribute or element.</p>
+        <p><b>Construction and initialization</b>: all objects (constructor and factory)
+          are build in two phases: construction and initialisation phase. During construction
+          all is done until a pointer is obtained to the object. In initialisation, operations
+          are applied to the object until it is ready to be used. The separation between
+          construction and initialisation is made to allow for bidirectional references.</p>
+        <p><b>Operations</b>: after construction, various operations can be applied to objects
+          like e.g. direct field injection, injection through setters, method invocation,
+          enlist with the standard transaction, subscribe the object to an observable.</p>
+        <p><b>Arguments</b>: there are two different places for arguments. The <code>arg</code>
+          elements for the factory method invocation should be placed as child elements under
+          the <code>object</code> element. The <code>arg</code> elements for the constructor
+          should be placed as child elements of the <code>constructor</code> element.</p>
+      </documentation>
+    </annotation>
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <element name="description" minOccurs="0" maxOccurs="unbounded" type="string" />
+      <element name="factory">
+        <annotation>
+          <documentation>Contains one element that describes the factory object.</documentation>
+        </annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+        </complexType>
+      </element>
+      <element name="constructor">
+        <annotation>
+          <documentation>Specifies the arguments for a non-default constructor.</documentation>
+        </annotation>
+        <complexType>
+          <choice maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+        </complexType>
+      </element>
+      <element name="arg" type="tns:argType">
+        <annotation>
+          <documentation>The factory method arguments.</documentation>
+        </annotation>
+      </element>
+      <element name="field">
+        <annotation>
+          <documentation>Injects a value into a member field of this object.
+            Exactly one child element must specify the value.</documentation>
+        </annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation>
+              <documentation>Member field name.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="property">
+        <annotation>
+          <documentation>Injects a value through a setter method.
+            Exactly one child element must specify the value.</documentation>
+        </annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+          <attribute name="name">
+            <annotation>
+              <documentation>Name of the property (without the 'set' prefix).</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+      <element name="invoke">
+        <annotation>
+          <documentation>Invokes a method.</documentation>
+        </annotation>
+        <complexType>
+          <choice minOccurs="0" maxOccurs="unbounded">
+            <element name="arg" type="tns:argType" />
+          </choice>
+          <attribute name="method" type="string" use="required">
+            <annotation>
+              <documentation>Method name.</documentation>
+            </annotation>
+          </attribute>
+        </complexType>
+      </element>
+    </choice>
+    <attribute name="class" type="string">
+      <annotation>
+        <documentation>Fully qualified class name</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation>
+        <documentation>Expression that provides the object.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation>
+        <documentation>Script language to interpret.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="factory" type="string">
+      <annotation>
+        <documentation>Name of the factory object.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="method" type="string">
+      <annotation>
+        <documentation>Factory method name</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="auto-wire" type="string">
+      <annotation>
+        <documentation>Indicates if the member fields and setter properties
+          should be wired automatically based on matching the property names and types
+          with the object names and types.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="cache" type="tns:booleanValueType">
+      <annotation>
+        <documentation>Indicates if the user code should be cached.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="argType">
+    <annotation>
+      <documentation>The method arguments.
+        Each 'arg' element should have exactly one child
+        element that represents the value of the argument.</documentation>
+    </annotation>
+    <group ref="tns:wireObjectGroup" />
+    <attribute name="type" type="string">
+      <annotation>
+        <documentation>Class name representing the method type.
+          Optional, helps resolve the appropriate method in case of overloading.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="mapType">
+    <annotation>
+      <documentation>java.util.Map instance.</documentation>
+    </annotation>
+    <sequence>
+      <element name="entry" minOccurs="0" maxOccurs="unbounded">
+        <complexType>
+          <sequence>
+            <element name="key" minOccurs="0">
+              <complexType>
+                <group ref="tns:wireObjectGroup" />
+              </complexType>
+            </element>
+            <element name="value" minOccurs="0">
+              <complexType>
+                <group ref="tns:wireObjectGroup" />
+              </complexType>
+            </element>
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="class" type="string" default="java.util.HashMap">
+      <annotation>
+        <documentation>Map implementation class.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="synchronized" type="tns:booleanValueType" default="false">
+      <annotation>
+        <documentation>Indicates if this collection should be synchronized
+          with Collections.synchronizedCollection()</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="javaType">
+    <sequence>
+      <element name="description" minOccurs="0" type="string" />
+      <choice minOccurs="0" maxOccurs="unbounded">
+        <element name="field">
+          <annotation>
+            <documentation>Field injections from the environment invocation.</documentation>
+          </annotation>
+        </element>
+        <element name="arg">
+          <annotation>
+            <documentation>Method arguments.</documentation>
+          </annotation>
+        </element>
+      </choice>
+    </sequence>
+    <attribute name="method" type="string" use="required">
+      <annotation>
+        <documentation>The name of the method to invoke.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="ejb-jndi-name" type="string">
+      <annotation>
+        <documentation>The jndi name of the ejb that needs to be invoked.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="class" type="string">
+      <annotation>
+        <documentation>The class to instantiate.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation>
+        <documentation>Expression that resolves to the target object
+          on which the method should be invoked.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation>
+        <documentation>The language in which attribute 'expr' is to be
+          resolved.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation>
+        <documentation>The variable name to store the return value.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="scriptType">
+    <sequence>
+      <element name="description" minOccurs="0" type="string" />
+      <element name="text" type="string" minOccurs="0">
+        <annotation>
+          <documentation>The text content of this element is the script to evaluate.
+            This element and the expression attribute are mutually exclusive.</documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute name="expr" type="string">
+      <annotation>
+        <documentation>The value of this attribute is the script to evaluate.
+          This attribute and the text element are mutually exclusive.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation>
+        <documentation>Identifies the scripting language in use.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation>
+        <documentation>Name of the variable in which the result
+          of the script evaluation will be stored.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="assignType">
+    <sequence>
+      <element name="description" minOccurs="0" type="string" />
+      <element name="from" minOccurs="0">
+        <annotation>
+          <documentation>Descriptor that constructs the source value.</documentation>
+        </annotation>
+        <complexType>
+          <group ref="tns:wireObjectGroup" />
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="from-expr" type="string">
+      <annotation>
+        <documentation>Expression that resolves the source value.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation>
+        <documentation>Language in which from-expr is written.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="from-var" type="string">
+      <annotation>
+        <documentation>Variable that provides the source value.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="to-expr" type="string">
+      <annotation>
+        <documentation>Expression that resolves the target location.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="to-var" type="string">
+      <annotation>
+        <documentation>Variable that provides the target location.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="qlType">
+    <sequence>
+      <element name="description" minOccurs="0" type="string" />
+      <element name="query" type="string">
+        <annotation>
+          <documentation>Query text.</documentation>
+        </annotation>
+      </element>
+      <element name="parameters" minOccurs="0">
+        <annotation>
+          <documentation>Query parameters.</documentation>
+        </annotation>
+        <complexType>
+          <sequence>
+            <group ref="tns:wireObjectGroup" maxOccurs="unbounded" />
+          </sequence>
+        </complexType>
+      </element>
+    </sequence>
+    <attribute name="var" type="string">
+      <annotation>
+        <documentation>Name of the variable in which the result
+          of the script evaluation will be stored.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="unique" type="string">
+      <annotation>
+        <documentation>Tells whether the query returns a unique result.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <attributeGroup name="activityAttributes">
+    <attribute name="name" type="string">
+      <annotation>
+        <documentation>Name of this activity. The name should be unique
+          in the complete scope of the process.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation>
+        <documentation>Graphical information used by process designer tool.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="continue" default="sync" type="tns:continueType">
+      <annotation>
+        <documentation>Specifies async continuation.</documentation>
+      </annotation>
+    </attribute>
+  </attributeGroup>
+
+  <simpleType name="continueType">
+    <restriction base="string">
+      <enumeration value="async" />
+      <enumeration value="sync" />
+      <enumeration value="exclusive" />
+    </restriction>
+  </simpleType>
+
+  <attributeGroup name="assignmentAttributes">
+    <annotation>
+      <documentation>The assignment attributes are used in
+        tasks and swimlanes to specify who is the assignee.
+    </documentation>
+    </annotation>
+    <attribute name="assignee" type="string">
+      <annotation>
+        <documentation>Expression that resolves to a userId referencing
+          the person to whom the task or swimlane will be assigned.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="assignee-lang" type="string">
+      <annotation>
+        <documentation>Expression language for the assignee attribute.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="candidate-users" type="string">
+      <annotation>
+        <documentation>Expression that resolves to a comma separated
+          list of userIds. All the referred people will be candidates for
+          take the task or swimlane.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="candidate-users-lang" type="string">
+      <annotation>
+        <documentation>Expression language for the
+          candidate-users attribute.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="candidate-groups" type="string">
+      <annotation>
+        <documentation>Resolves to a comma separated list of groupIds.
+          All the referred people will be candidates to
+          take the task or swimlane.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="candidate-groups-lang" type="string">
+      <annotation>
+        <documentation>Expression language for the
+          candidate-groups attribute.</documentation>
+      </annotation>
+    </attribute>
+  </attributeGroup>
+
+  <element name="swimlane">
+    <annotation>
+      <documentation>Process role.</documentation>
+    </annotation>
+    <complexType>
+      <sequence>
+        <element name="description" minOccurs="0" type="string" />
+      </sequence>
+      <attribute name="name" type="string" use="required" />
+      <attributeGroup ref="tns:assignmentAttributes" />
+    </complexType>
+  </element>
+
+  <complexType name="transitionType">
+    <annotation>
+      <documentation>The outgoing transitions. The first in the list
+        will be the default outgoing transition.</documentation>
+    </annotation>
+    <sequence>
+      <element name="description" minOccurs="0" type="string" />
+      <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded" />
+    </sequence>
+    <attribute name="name" type="string">
+      <annotation>
+        <documentation>Name of this outgoing transition</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="to" type="string">
+      <annotation>
+        <documentation>Name of the destination activity of this transition.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="g" type="string">
+      <annotation>
+        <documentation>Graphical information used by process designer tool.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <element name="transition" type="tns:transitionType">
+    <annotation>
+      <documentation>Link from one activity to another.</documentation>
+    </annotation>
+  </element>
+
+  <element name="on">
+    <complexType>
+      <sequence>
+        <element ref="tns:timer" minOccurs="0" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded">
+          <annotation>
+            <documentation>List of event listeners that will
+              be notified when the event is fired</documentation>
+          </annotation>
+        </group>
+      </sequence>
+      <attribute name="event" type="string">
+        <annotation>
+          <documentation>Event identification. start, end, take or
+            any other custom event.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="continue" type="tns:continueType" default="sync" />
+    </complexType>
+  </element>
+
+  <complexType name="parameterType">
+    <attribute name="subvar" type="string">
+      <annotation>
+        <documentation>Name of the sub process variable.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="expr" type="string">
+      <annotation>
+        <documentation>Expression that provides the variable value.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="lang" type="string">
+      <annotation>
+        <documentation>Language of the expression.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="var" type="string">
+      <annotation>
+        <documentation>Name of the process variable
+          in the super process.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <element name="timer">
+    <complexType>
+      <sequence>
+        <annotation>
+          <documentation>List of event listeners that will
+            be notified when the timer fires.</documentation>
+        </annotation>
+        <element name="description" minOccurs="0" type="string" />
+        <group ref="tns:eventListenerGroup" minOccurs="0" maxOccurs="unbounded" />
+      </sequence>
+      <attribute name="duedate" type="string">
+        <annotation>
+          <documentation>Timer duedate expression that defines the duedate of this
+            timer relative to the creation time of the timer.
+            E.g. '2 hours' or '4 business days'.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="repeat" type="string">
+        <annotation>
+          <documentation>Timer duedate expression that defines repeated scheduling
+            relative to the last timer fire event.
+            E.g. '2 hours' or '4 business days'</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="duedatetime" type="string">
+        <annotation>
+          <documentation>Absolute time in the format <code>HH:mm dd/MM/yyyy</code>.
+            The format can be customized in the configuration.</documentation>
+        </annotation>
+      </attribute>
+    </complexType>
+  </element>
+
+  <element name="variable">
+    <complexType>
+      <annotation>
+        <documentation>Explicit variable declaration.</documentation>
+      </annotation>
+      <sequence>
+        <group ref="tns:wireObjectGroup" minOccurs="0" />
+      </sequence>
+      <attribute name="name" type="string">
+        <annotation>
+          <documentation>Name of the variable. Must differ from other variable
+            names.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="type" type="string">
+        <annotation>
+          <documentation>Type of the variable.</documentation>
+        </annotation>
+      </attribute>
+      <attribute name="init-expr" type="string">
+        <annotation>
+          <documentation></documentation>
+        </annotation>
+      </attribute>
+      <attribute name="history" type="tns:booleanValueType" />
+    </complexType>
+  </element>
+
+  <group name="eventListenerGroup">
+    <choice>
+      <element name="event-listener">
+        <complexType>
+          <complexContent>
+            <extension base="tns:wireObjectType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="hql">
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="sql">
+        <complexType>
+          <complexContent>
+            <extension base="tns:qlType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="java">
+        <complexType>
+          <complexContent>
+            <extension base="tns:javaType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="assign">
+        <complexType>
+          <complexContent>
+            <extension base="tns:assignType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="script">
+        <complexType>
+          <complexContent>
+            <extension base="tns:scriptType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+      <element name="mail">
+        <complexType>
+          <complexContent>
+            <extension base="tns:mailType">
+              <attribute name="propagation" type="tns:booleanValueType" />
+            </extension>
+          </complexContent>
+        </complexType>
+      </element>
+    </choice>
+  </group>
+
+  <complexType name="mailType">
+    <complexContent>
+      <extension base="tns:wireObjectType">
+        <sequence>
+          <element name="from" type="tns:mailRecipientType" minOccurs="0" />
+          <element name="to" type="tns:mailRecipientType" minOccurs="0" />
+          <element name="cc" type="tns:mailRecipientType" minOccurs="0" />
+          <element name="bcc" type="tns:mailRecipientType" minOccurs="0" />
+          <element name="subject" type="string" minOccurs="0" />
+          <element name="text" type="string" minOccurs="0" />
+          <element name="html" type="string" minOccurs="0" />
+          <element name="attachments" minOccurs="0">
+            <complexType>
+              <sequence>
+                <element name="attachment" maxOccurs="unbounded">
+                  <complexType>
+                    <attribute name="url" type="string">
+                      <annotation>
+                        <documentation>Resource in the web.</documentation>
+                      </annotation>
+                    </attribute>
+                    <attribute name="resource" type="string">
+                      <annotation>
+                        <documentation>Resource in the classpath.</documentation>
+                      </annotation>
+                    </attribute>
+                    <attribute name="file" type="string">
+                      <annotation>
+                        <documentation>Path in the file system.</documentation>
+                      </annotation>
+                    </attribute>
+                  </complexType>
+                </element>
+              </sequence>
+            </complexType>
+          </element>
+        </sequence>
+        <attribute name="template" type="tns:templateType" />
+      </extension>
+    </complexContent>
+  </complexType>
+
+  <complexType name="jmsType">
+    <choice minOccurs="1" maxOccurs="1">
+      <element name="object" type="tns:wireObjectType" />
+      <element name="text" type="string" />
+      <element name="map" type="tns:mapType" />
+    </choice>
+    <attribute name="connection-factory" type="string">
+      <annotation>
+        <documentation>JNDI name of the connection factory.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="destination" type="string">
+      <annotation>
+        <documentation>JNDI name of the destination.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="transacted" type="tns:booleanValueType" default="false">
+      <annotation>
+        <documentation>Tells whether the message should be sent in a transaction.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="acknowledge" type="tns:acknowledgeType" default="auto">
+      <annotation>
+        <documentation>Indicates the acknowledgment mode.</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <complexType name="mailRecipientType">
+    <attribute name="addresses" type="string">
+      <annotation>
+        <documentation>List of email addresses separated by ',' (comma)
+          or whitespace.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="users" type="string">
+      <annotation>
+        <documentation>List of users, resolved to email addresses thought
+          the configured identity component. Users are separated by ',' (comma)
+          ';' (semicolon) or whitespace.</documentation>
+      </annotation>
+    </attribute>
+    <attribute name="groups" type="string">
+      <annotation>
+        <documentation>List of groups, that are resolved to the email address against
+          configured identity component. Groups are separated by ',' (comma)
+          ';' (semicolon) or whitespace</documentation>
+      </annotation>
+    </attribute>
+  </complexType>
+
+  <simpleType name="booleanValueType">
+    <restriction base="string">
+      <enumeration value="true" />
+      <enumeration value="on" />
+      <enumeration value="enabled" />
+      <enumeration value="false" />
+      <enumeration value="off" />
+      <enumeration value="disabled" />
+    </restriction>
+  </simpleType>
+
+  <simpleType name="acknowledgeType">
+    <restriction base="string">
+      <enumeration value="auto" />
+      <enumeration value="client" />
+      <enumeration value="dups-ok" />
+    </restriction>
+  </simpleType>
+
+  <simpleType name="templateType">
+    <annotation>
+      <documentation>Reference to the email template.</documentation>
+    </annotation>
+    <restriction base="string" />
+  </simpleType>
+
+  <element name="migrate-instances">
+    <annotation>
+      <documentation>Information to migrate instances of previously deployed
+        process definitions to the new version.</documentation>
+    </annotation>
+    <complexType>
+      <choice minOccurs="0" maxOccurs="unbounded">
+        <element name="migration-handler">
+          <annotation>
+            <documentation>The migration handler specifies the name of a class to be executed
+              while migrating the process instance.</documentation>
+          </annotation>
+          <complexType>
+            <attribute name="class" />
+          </complexType>
+        </element>
+        <element name="activity-mapping">
+          <annotation>
+            <documentation>One activity mapping will be present for each activity of which the
+              name changed.</documentation>
+          </annotation>
+          <complexType>
+            <attribute name="old-name" type="string" use="required">
+              <annotation>
+                <documentation>Name of the activity in the previously deployed
+                  process definition.</documentation>
+              </annotation>
+            </attribute>
+            <attribute name="new-name" type="string" use="required">
+              <annotation>
+                <documentation>Name of the activity in the newly deployed
+                  process definition.</documentation>
+              </annotation>
+            </attribute>
+          </complexType>
+        </element>
+      </choice>
+      <attribute name="action" type="tns:migrationActionType" default="migrate" />
+    </complexType>
+  </element>
+
+  <simpleType name="migrationActionType">
+    <restriction base="string">
+      <enumeration value="end" />
+      <enumeration value="migrate" />
+    </restriction>
+  </simpleType>
+</schema>


Property changes on: projects/migration_tool/trunk/src/main/resources/Schemas/jPDL/jpdl-4.4.xsd
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/main/xslt/migrate.xslt
===================================================================
--- projects/migration_tool/trunk/src/main/xslt/migrate.xslt	                        (rev 0)
+++ projects/migration_tool/trunk/src/main/xslt/migrate.xslt	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                xmlns:jpdl="http://jbpm.org/4.3/jpdl">
+
+<!-- Converts a jPDL4.3 file to a BPMN2 file-->
+<xsl:output method="xml" indent="yes" />
+    
+<xsl:template match="/">
+  <definitions id="Definition"
+               targetNamespace="http://www.jboss.org/drools"
+               typeLanguage="http://www.java.com/javaTypes"
+               expressionLanguage="http://www.mvel.org/2.0"
+               xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+               xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+               xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
+               xmlns:g="http://www.jboss.org/drools/flow/gpd"
+               xmlns:tns="http://www.jboss.org/drools">
+
+    <xsl:apply-templates select="jpdl:process"/>
+
+  </definitions>
+</xsl:template>
+    
+
+
+</xsl:stylesheet>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/main/xslt/migrate.xslt
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/java/test/XSLTTest.java
===================================================================
--- projects/migration_tool/trunk/src/test/java/test/XSLTTest.java	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/java/test/XSLTTest.java	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,106 @@
+package test;
+
+import static java.lang.System.out;
+import static org.junit.Assert.*;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.swing.Box.Filler;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class XSLTTest {
+
+    public static final String useCasesDir = "use_cases";
+   
+    public static final String singleForkJoinJpdl = "single_fork_join_jpdl";
+    public static final String singleDecisionJpdl = "single_decision_jpdl";
+    public static final String singleNodeJpdl = "single_node_jpdl";
+    public static final String singleStateJpdl = "single_state_jpdl";
+    public static final String singleSubprocessJpdl = "single_subprocess_jpdl";
+    public static final String singleTaskJpdl = "single_task_jpdl";
+   
+    public static final String procDefXML = "processdefinition.xml";
+    public static final String bpmnDefXML = "bpmnProcess.xml";
+
+    public static final String migrateXSLT = "migrate.xslt";
+    
+    private TransformerFactory transformerFactory;
+    private Transformer transformer;
+   
+    @Before
+    public void before() throws Exception {
+        InputStream xsltInputStream = getClass().getClassLoader().getResourceAsStream(migrateXSLT);
+        
+        StreamSource source = new StreamSource(xsltInputStream);
+        assertTrue("XSLT source could not be instantiated.", source != null && source.getInputStream() != null );
+       
+        transformerFactory = TransformerFactory.newInstance();
+        Templates templates = null;
+        try {
+            templates = transformerFactory.newTemplates(source);
+        }
+        catch(  TransformerConfigurationException tce ) {
+            fail( "Could not instantiate transformer templates: " + tce.getMessageAndLocation());
+        }
+
+        assertTrue("Transformer template could not be instantiated.", templates != null);
+        try {
+            transformer = templates.newTransformer();
+        }
+        catch( TransformerConfigurationException tce ) {
+            tce.printStackTrace();
+            fail( "Could not instantiate transformer: " + tce.getMessageAndLocation());
+        }
+    }
+    
+    @Test
+    public void happyTest() {
+        String process = "Single Task";
+        String dir = singleTaskJpdl;
+        
+        File resultFile = transformJpdlXml(transformer, dir, process);
+        
+        
+    }
+    
+    public static File transformJpdlXml(Transformer transformer, String dir, String process) {
+        URL startURL = XSLTTest.class.getClassLoader().getResource(dir + "/" + procDefXML);
+        assertTrue( process + " JPDL URL could not be retrieved.", startURL != null );
+        File startFile = new File(startURL.getFile());
+        assertTrue( process + " JPDL File could not be instantiated.", startFile != null && startFile.exists());
+
+        dir = startFile.getParentFile().getAbsolutePath();
+        String fileLoc = dir + "/" + bpmnDefXML;
+        File resultFile = new File(fileLoc);
+        try { 
+            resultFile.createNewFile();
+        }
+        catch( IOException ioe ) {
+            fail( "Unable to create new file: " + ioe.getMessage() );
+        }
+        assertTrue( process + " BPMN File could not be retrieved.", resultFile != null );
+        
+        try {
+            transformer.transform(new StreamSource(startFile), new StreamResult(resultFile));
+        }
+        catch(TransformerException te ) {
+            fail( "Could not transform " + process + " from JPDL to BPMN: " + te.getMessageAndLocation());
+        }
+        
+        return resultFile;
+    }
+    
+}


Property changes on: projects/migration_tool/trunk/src/test/java/test/XSLTTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn.xml
===================================================================
--- projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn.xml	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn.xml	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,25 @@
+<definitions id="defId" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.omg.org/bpmn20">
+    <process id="procesId">
+        <laneSet id="laneSetId">
+            <lane name="DefaultLane" id="laneId">
+                <flowElementRef>taskId</flowElementRef>
+                <flowElementRef>startEventId</flowElementRef>
+                <flowElementRef>endEventId</flowElementRef>
+            </lane>
+        </laneSet>
+        <task completionQuantity="1" startQuantity="1" isForCompensation="false" name="" id="taskId"/>
+        <startEvent name="" id="startEventId"/>
+        <endEvent name="" id="endEventId"/>
+        <sequenceFlow targetRef="taskId" sourceRef="startEventId" name="" id="fou"/>
+        <sequenceFlow targetRef="endEventId" sourceRef="taskId" name="" id="fiv"/>
+    </process>
+    <bpmndi:processDiagram processRef="procesId" id="procesId_gui">
+        <bpmndi:laneCompartment isVisible="false" height="0.0" width="0.0" y="0.0" x="0.0" name="DefaultLane" id="laneId_gui">
+            <bpmndi:activityShape activityRef="taskId" height="40.0" width="50.0" y="105.0" x="90.0" name="" id="taskId_gui"/>
+            <bpmndi:eventShape eventRef="startEventId" height="30.0" width="30.0" y="35.0" x="100.0" name="" id="startEventId_gui"/>
+            <bpmndi:eventShape eventRef="endEventId" height="28.0" width="28.0" y="182.0" x="101.0" name="" id="endEventId_gui"/>
+        </bpmndi:laneCompartment>
+        <bpmndi:sequenceFlowConnector sequenceFlowRef="fou" label="" targetRef="taskId_gui" sourceRef="startEventId_gui" id="fou_gui"/>
+        <bpmndi:sequenceFlowConnector sequenceFlowRef="fiv" label="" targetRef="endEventId_gui" sourceRef="taskId_gui" id="fiv_gui"/>
+    </bpmndi:processDiagram>
+</definitions>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn_diagram
===================================================================
--- projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn_diagram	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/resources/bpmn/Test.bpmn_diagram	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmi:id="_Pdrh8IhqEd-1RIOw4wJNOg" type="Bpmn" name="Test.bpmn_diagram" measurementUnit="Pixel">
+  <children xmi:type="notation:Node" xmi:id="_PeqZYIhqEd-1RIOw4wJNOg" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_PfF3MIhqEd-1RIOw4wJNOg" type="4008"/>
+    <children xmi:type="notation:Node" xmi:id="_PfHsYIhqEd-1RIOw4wJNOg" type="5001">
+      <children xmi:type="notation:Node" xmi:id="_PfJhkIhqEd-1RIOw4wJNOg" type="2001">
+        <children xmi:type="notation:Node" xmi:id="_PfKIoIhqEd-1RIOw4wJNOg" type="4001"/>
+        <styles xmi:type="notation:FontStyle" xmi:id="_PfJhkYhqEd-1RIOw4wJNOg" fontName="Arial"/>
+        <styles xmi:type="notation:DescriptionStyle" xmi:id="_PfJhkohqEd-1RIOw4wJNOg"/>
+        <styles xmi:type="notation:FillStyle" xmi:id="_PfJhk4hqEd-1RIOw4wJNOg"/>
+        <styles xmi:type="notation:LineStyle" xmi:id="_PfJhlIhqEd-1RIOw4wJNOg" lineColor="0"/>
+        <element xmi:type="bpmn:Activity" href="Test.bpmn#_PehPcYhqEd-1RIOw4wJNOg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PfKIoYhqEd-1RIOw4wJNOg" x="55" y="70" width="111" height="61"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_PfHsYYhqEd-1RIOw4wJNOg"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_PfHsYohqEd-1RIOw4wJNOg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_PfHsY4hqEd-1RIOw4wJNOg"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_PeqZYYhqEd-1RIOw4wJNOg" fontName="Arial"/>
+    <styles xmi:type="notation:DescriptionStyle" xmi:id="_PeqZYohqEd-1RIOw4wJNOg"/>
+    <styles xmi:type="notation:FillStyle" xmi:id="_PeqZY4hqEd-1RIOw4wJNOg" fillColor="16771304"/>
+    <styles xmi:type="notation:LineStyle" xmi:id="_PeqZZIhqEd-1RIOw4wJNOg" lineColor="11119017"/>
+    <element xmi:type="bpmn:Pool" href="Test.bpmn#_PeBgMYhqEd-1RIOw4wJNOg"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PfITcIhqEd-1RIOw4wJNOg" x="16" y="16" width="1500" height="200"/>
+  </children>
+  <styles xmi:type="notation:PageStyle" xmi:id="_Pdrh8YhqEd-1RIOw4wJNOg"/>
+  <styles xmi:type="notation:GuideStyle" xmi:id="_Pdrh8ohqEd-1RIOw4wJNOg"/>
+  <styles xmi:type="notation:DescriptionStyle" xmi:id="_Pdrh84hqEd-1RIOw4wJNOg"/>
+  <element xmi:type="bpmn:BpmnDiagram" href="Test.bpmn#_PZvdIIhqEd-1RIOw4wJNOg"/>
+</notation:Diagram>

Added: projects/migration_tool/trunk/src/test/resources/jbjPDL4ToBPMN2.xsl
===================================================================
--- projects/migration_tool/trunk/src/test/resources/jbjPDL4ToBPMN2.xsl	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/resources/jbjPDL4ToBPMN2.xsl	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0"
+	            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+	            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	            xmlns:jpdl="http://jbpm.org/4.3/jpdl">
+
+<!-- Converts a jPDL4.3 file to a BPMN2 file-->
+<xsl:output method="xml" indent="yes" />
+	
+<xsl:template match="/">
+  <definitions id="Definition"
+               targetNamespace="http://www.jboss.org/drools"
+               typeLanguage="http://www.java.com/javaTypes"
+               expressionLanguage="http://www.mvel.org/2.0"
+               xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+               xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+               xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
+               xmlns:g="http://www.jboss.org/drools/flow/gpd"
+               xmlns:tns="http://www.jboss.org/drools">
+
+    <xsl:apply-templates select="jpdl:process"/>
+
+  </definitions>
+</xsl:template>
+	
+<xsl:template match="jpdl:process">
+    <process>
+      <xsl:attribute name="id"><xsl:value-of select="@name"/></xsl:attribute>
+      <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+      <xsl:apply-templates/>
+    </process>
+</xsl:template>
+
+<xsl:template match="jpdl:start">
+  <xsl:variable name="id"><xsl:value-of select="@name"/></xsl:variable>
+  <startEvent>
+    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:attribute name="name"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:if test="@g">
+      <xsl:attribute name="g:x"><xsl:value-of select="substring-before(@g,',')"/></xsl:attribute>
+      <xsl:variable name="g2"><xsl:value-of select="substring-after(@g,',')"/></xsl:variable>
+      <xsl:attribute name="g:y"><xsl:value-of select="substring-before($g2,',')"/></xsl:attribute>
+      <xsl:variable name="g3"><xsl:value-of select="substring-after($g2,',')"/></xsl:variable>
+      <xsl:attribute name="g:width"><xsl:value-of select="substring-before($g3,',')"/></xsl:attribute>
+      <xsl:attribute name="g:height"><xsl:value-of select="substring-after($g3,',')"/></xsl:attribute>
+    </xsl:if>
+  </startEvent>
+  <xsl:for-each select="jpdl:transition">
+    <sequenceFlow>
+      <xsl:attribute name="sourceRef"><xsl:value-of select="$id"/></xsl:attribute>
+      <xsl:attribute name="targetRef"><xsl:value-of select="@to"/></xsl:attribute>
+    </sequenceFlow>
+  </xsl:for-each>
+</xsl:template>
+	
+<xsl:template match="jpdl:end">
+  <xsl:variable name="id"><xsl:value-of select="@name"/></xsl:variable>
+  <endEvent>
+    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:attribute name="name"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:if test="@g">
+      <xsl:attribute name="g:x"><xsl:value-of select="substring-before(@g,',')"/></xsl:attribute>
+      <xsl:variable name="g2"><xsl:value-of select="substring-after(@g,',')"/></xsl:variable>
+      <xsl:attribute name="g:y"><xsl:value-of select="substring-before($g2,',')"/></xsl:attribute>
+      <xsl:variable name="g3"><xsl:value-of select="substring-after($g2,',')"/></xsl:variable>
+      <xsl:attribute name="g:width"><xsl:value-of select="substring-before($g3,',')"/></xsl:attribute>
+      <xsl:attribute name="g:height"><xsl:value-of select="substring-after($g3,',')"/></xsl:attribute>
+    </xsl:if>
+    <terminateEventDefinition/>
+  </endEvent>
+</xsl:template>
+	
+<xsl:template match="jpdl:task">
+  <xsl:variable name="id"><xsl:value-of select="@name"/></xsl:variable>
+  <userTask>
+    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:attribute name="name"><xsl:value-of select="$id"/></xsl:attribute>
+    <xsl:if test="@g">
+      <xsl:attribute name="g:x"><xsl:value-of select="substring-before(@g,',')"/></xsl:attribute>
+      <xsl:variable name="g2"><xsl:value-of select="substring-after(@g,',')"/></xsl:variable>
+      <xsl:attribute name="g:y"><xsl:value-of select="substring-before($g2,',')"/></xsl:attribute>
+      <xsl:variable name="g3"><xsl:value-of select="substring-after($g2,',')"/></xsl:variable>
+      <xsl:attribute name="g:width"><xsl:value-of select="substring-before($g3,',')"/></xsl:attribute>
+      <xsl:attribute name="g:height"><xsl:value-of select="substring-after($g3,',')"/></xsl:attribute>
+    </xsl:if>
+    <xsl:if test="@assignee">
+      <potentialOwner>
+        <resourceAssignmentExpression>
+          <formalExpression><xsl:value-of select="@assignee"/></formalExpression>
+        </resourceAssignmentExpression>
+      </potentialOwner>
+    </xsl:if>
+  </userTask>
+  <xsl:for-each select="jpdl:transition">
+    <sequenceFlow>
+      <xsl:attribute name="sourceRef"><xsl:value-of select="$id"/></xsl:attribute>
+      <xsl:attribute name="targetRef"><xsl:value-of select="@to"/></xsl:attribute>
+    </sequenceFlow>
+  </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/test/resources/jbjPDL4ToBPMN2.xsl
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/resources/jpdl/test/gpd.xml
===================================================================
--- projects/migration_tool/trunk/src/test/resources/jpdl/test/gpd.xml	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/resources/jpdl/test/gpd.xml	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<root-container name="Test" width="1111" height="594">
+  <node name="start-state1" x="468" y="75" width="132" height="36">
+    <edge>
+      <label x="5" y="-10"/>
+    </edge>
+  </node>
+  <node name="node1" x="473" y="206" width="132" height="36">
+    <edge>
+      <label x="5" y="-10"/>
+    </edge>
+  </node>
+  <node name="end-state1" x="476" y="328" width="132" height="36"/>
+</root-container>


Property changes on: projects/migration_tool/trunk/src/test/resources/jpdl/test/gpd.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/resources/jpdl/test/processdefinition.xml
===================================================================
--- projects/migration_tool/trunk/src/test/resources/jpdl/test/processdefinition.xml	                        (rev 0)
+++ projects/migration_tool/trunk/src/test/resources/jpdl/test/processdefinition.xml	2010-09-27 15:32:02 UTC (rev 6685)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition  xmlns=""  name="Test">
+
+
+	<start-state name="start-state1">
+		<transition to="node1"></transition>
+	</start-state>
+
+
+	<node name="node1">
+		<transition to="end-state1"></transition>
+	</node>
+
+
+	<end-state name="end-state1"></end-state>
+
+
+</process-definition>
\ No newline at end of file


Property changes on: projects/migration_tool/trunk/src/test/resources/jpdl/test/processdefinition.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: projects/migration_tool/trunk/src/test/resources/jpdl/test/processimage.jpg
===================================================================
(Binary files differ)


Property changes on: projects/migration_tool/trunk/src/test/resources/jpdl/test/processimage.jpg
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream



More information about the jbpm-commits mailing list