This is an automated email from the ASF dual-hosted git repository.

tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new 9906c0577ee kie-issues#2162: The BPMN Marshaller should match the 
order of elements expected by the Workflow engine (#3335)
9906c0577ee is described below

commit 9906c0577ee2ae0009be5127aa686d301cf06c86
Author: Thiago Lugli <[email protected]>
AuthorDate: Thu Nov 6 11:51:27 2025 -0300

    kie-issues#2162: The BPMN Marshaller should match the order of elements 
expected by the Workflow engine (#3335)
---
 .../ci/patterns/non-source-files-patterns.txt      |    3 +-
 .rat-excludes                                      |    2 +
 .../src/schemas/bpmn-2_0/BPMN20.xsd                |    2 +-
 .../schemas/bpmn-2_0/Semantic.kogito-compat.xsd    | 1605 ++++++++++++++++++++
 4 files changed, 1610 insertions(+), 2 deletions(-)

diff --git a/.github/supporting-files/ci/patterns/non-source-files-patterns.txt 
b/.github/supporting-files/ci/patterns/non-source-files-patterns.txt
index dca945dcb3b..30dd7adc4b7 100644
--- a/.github/supporting-files/ci/patterns/non-source-files-patterns.txt
+++ b/.github/supporting-files/ci/patterns/non-source-files-patterns.txt
@@ -15,4 +15,5 @@ NOTICE
 .idea
 .ci
 ./_intellij-project
-.github/CODEOWNERS
\ No newline at end of file
+.github/CODEOWNERS
+.rat-excludes
\ No newline at end of file
diff --git a/.rat-excludes b/.rat-excludes
index 68fcca30ad1..8254bea5cba 100644
--- a/.rat-excludes
+++ b/.rat-excludes
@@ -88,6 +88,8 @@ DC.xsd
 DI.xsd
 # packages/bpmn-marshaller/src/schemas/bpmn-2_0/Semantic.xsd
 Semantic.xsd
+# packages/bpmn-marshaller/src/schemas/bpmn-2_0/Semantic.kogito-compat.xsd
+Semantic.kogito-compat.xsd
 # 
packages/chrome-extension/tests/app/components/single/__snapshots__/SingleEditorApp.test.tsx.snap
 SingleEditorApp.test.tsx.snap
 # 
packages/chrome-extension/tests/app/components/single/__snapshots__/SingleEditorToolbar.test.tsx.snap
diff --git a/packages/bpmn-marshaller/src/schemas/bpmn-2_0/BPMN20.xsd 
b/packages/bpmn-marshaller/src/schemas/bpmn-2_0/BPMN20.xsd
index 7fb636797e9..868483a1163 100644
--- a/packages/bpmn-marshaller/src/schemas/bpmn-2_0/BPMN20.xsd
+++ b/packages/bpmn-marshaller/src/schemas/bpmn-2_0/BPMN20.xsd
@@ -8,7 +8,7 @@
   targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL";
 >
   <xsd:import namespace="http://www.omg.org/spec/BPMN/20100524/DI"; 
schemaLocation="BPMNDI.xsd" />
-  <xsd:include schemaLocation="Semantic.xsd" />
+  <xsd:include schemaLocation="Semantic.kogito-compat.xsd" />
 
   <xsd:element name="definitions" type="tDefinitions" />
   <xsd:complexType name="tDefinitions">
diff --git 
a/packages/bpmn-marshaller/src/schemas/bpmn-2_0/Semantic.kogito-compat.xsd 
b/packages/bpmn-marshaller/src/schemas/bpmn-2_0/Semantic.kogito-compat.xsd
new file mode 100644
index 00000000000..6925727b5dc
--- /dev/null
+++ b/packages/bpmn-marshaller/src/schemas/bpmn-2_0/Semantic.kogito-compat.xsd
@@ -0,0 +1,1605 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<xsd:schema
+  elementFormDefault="qualified"
+  attributeFormDefault="unqualified"
+  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL";
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+  targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL";
+>
+  <!-- This is a heavily modified version of the Semantic.xsd file -->
+  <!-- All elements are ordered to match the order expected by the engine 
parser -->
+  <!-- 
https://github.com/apache/incubator-kie-kogito-runtimes/blob/main/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/BPMNSemanticModule.java
 -->
+
+  <xsd:element name="baseElement" type="tBaseElement" />
+  <xsd:complexType name="tBaseElement" abstract="true">
+    <xsd:sequence>
+      <xsd:element ref="documentation" minOccurs="0" maxOccurs="unbounded" />
+      <!-- (begin) Manually edited. Inlined `tExtensionElements` for type-safe 
extensibility. -->
+      <xsd:element name="extensionElements" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any namespace="##other" processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!-- (end) -->
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID" use="optional" />
+    <xsd:anyAttribute namespace="##other" processContents="lax" />
+  </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="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="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="flowNodeRef" 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:QName" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="auditing" type="tAuditing" />
+  <xsd:complexType name="tAuditing">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement" />
+    </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="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:attribute name="name" type="xsd:string" />
+      </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="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="eventDefinition" type="tEventDefinition" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tEventDefinition" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="tRootElement" />
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="dataAssociation" type="tDataAssociation" />
+  <xsd:complexType name="tDataAssociation">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement">
+        <xsd:sequence>
+          <xsd:element name="sourceRef" type="xsd:IDREF" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="targetRef" type="xsd:IDREF" minOccurs="1" 
maxOccurs="1" />
+          <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="dataOutputAssociation" type="tDataOutputAssociation" />
+  <xsd:complexType name="tDataOutputAssociation">
+    <xsd:complexContent>
+      <xsd:extension base="tDataAssociation" />
+    </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="event" type="tEvent" substitutionGroup="flowElement" />
+  <xsd:complexType name="tEvent" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="tFlowNode">
+        <xsd:sequence>
+          <xsd:element ref="property" minOccurs="0" maxOccurs="unbounded" />
+        </xsd:sequence>
+      </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="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="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="startEvent" type="tStartEvent" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tStartEvent">
+    <xsd:complexContent>
+      <xsd:extension base="tCatchEvent">
+        <xsd:attribute name="isInterrupting" type="xsd:boolean" default="true" 
/>
+      </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: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="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="endEvent" type="tEndEvent" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tEndEvent">
+    <xsd:complexContent>
+      <xsd:extension base="tThrowEvent" />
+    </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="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: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="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="parallelGateway" type="tParallelGateway" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tParallelGateway">
+    <xsd:complexContent>
+      <xsd:extension base="tGateway" />
+    </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="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:element name="baseElementWithMixedContent" 
type="tBaseElementWithMixedContent" />
+  <xsd:complexType name="tBaseElementWithMixedContent" abstract="true" 
mixed="true">
+    <xsd:sequence>
+      <xsd:element ref="documentation" minOccurs="0" maxOccurs="unbounded" />
+      <!-- (begin) Manually edited. Inlined `tExtensionElements` for type-safe 
extensibility. -->
+      <xsd:element name="extensionElements" minOccurs="0" maxOccurs="1">
+        <xsd:complexType>
+          <xsd:sequence>
+            <xsd:any namespace="##other" processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
+          </xsd:sequence>
+        </xsd:complexType>
+      </xsd:element>
+      <!-- (end) -->
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID" use="optional" />
+    <xsd:anyAttribute namespace="##other" processContents="lax" />
+  </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="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="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="loopCharacteristics" type="tLoopCharacteristics" />
+  <xsd:complexType name="tLoopCharacteristics" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement" />
+    </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="resourceRole" type="tResourceRole" />
+  <xsd:complexType name="tResourceRole">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement">
+        <xsd:choice>
+          <xsd:sequence>
+            <xsd:element name="resourceRef" type="xsd:QName" />
+            <xsd:element ref="resourceParameterBinding" minOccurs="0" 
maxOccurs="unbounded" />
+          </xsd:sequence>
+          <xsd:element ref="resourceAssignmentExpression" minOccurs="0" 
maxOccurs="1" />
+        </xsd:choice>
+        <xsd:attribute name="name" type="xsd:string" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <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="resourceRole" 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="task" type="tTask" substitutionGroup="flowElement" />
+  <xsd:complexType name="tTask">
+    <xsd:complexContent>
+      <xsd:extension base="tActivity" />
+    </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="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="scriptFormat" type="xsd:string" />
+      </xsd:extension>
+    </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="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="globalTask" type="tGlobalTask" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tGlobalTask">
+    <xsd:complexContent>
+      <xsd:extension base="tCallableElement">
+        <xsd:sequence>
+          <xsd:element ref="resourceRole" minOccurs="0" maxOccurs="unbounded" 
/>
+        </xsd:sequence>
+      </xsd:extension>
+    </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:simpleType name="tImplementation">
+    <xsd:union memberTypes="xsd:anyURI">
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+          <xsd:enumeration value="##unspecified" />
+          <xsd:enumeration value="##WebService" />
+        </xsd:restriction>
+      </xsd:simpleType>
+    </xsd:union>
+  </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="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="tImplementation" 
default="##unspecified" />
+      </xsd:extension>
+    </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="serviceTask" type="tServiceTask" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tServiceTask">
+    <xsd:complexContent>
+      <xsd:extension base="tTask">
+        <xsd:attribute name="implementation" type="tImplementation" 
default="##WebService" />
+        <xsd:attribute name="operationRef" type="xsd:QName" use="optional" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </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="tImplementation" 
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="receiveTask" type="tReceiveTask" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tReceiveTask">
+    <xsd:complexContent>
+      <xsd:extension base="tTask">
+        <xsd:attribute name="implementation" type="tImplementation" 
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="businessRuleTask" type="tBusinessRuleTask" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tBusinessRuleTask">
+    <xsd:complexContent>
+      <xsd:extension base="tTask">
+        <xsd:attribute name="implementation" type="tImplementation" 
default="##unspecified" />
+      </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="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:attribute name="name" type="xsd:string" />
+      </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="laneSet" minOccurs="0" maxOccurs="unbounded" />
+          <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:simpleType name="tAdHocOrdering">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="Parallel" />
+      <xsd:enumeration value="Sequential" />
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <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:element name="intermediateThrowEvent" type="tIntermediateThrowEvent" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tIntermediateThrowEvent">
+    <xsd:complexContent>
+      <xsd:extension base="tThrowEvent" />
+    </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="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="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="transaction" type="tTransaction" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tTransaction">
+    <xsd:complexContent>
+      <xsd:extension base="tSubProcess">
+        <xsd:attribute name="method" type="tTransactionMethod" 
default="##Compensate" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="tTransactionMethod">
+    <xsd:union memberTypes="xsd:anyURI">
+      <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+          <xsd:enumeration value="##Compensate" />
+          <xsd:enumeration value="##Image" />
+          <xsd:enumeration value="##Store" />
+        </xsd:restriction>
+      </xsd:simpleType>
+    </xsd:union>
+  </xsd:simpleType>
+
+  <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" use="optional" />
+      </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:simpleType name="tItemKind">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="Information" />
+      <xsd:enumeration value="Physical" />
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <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: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="itemRef" type="xsd:QName" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <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="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:attribute name="implementationRef" type="xsd:QName" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <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:attribute name="implementationRef" 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="name" type="xsd:string" />
+        <xsd:attribute name="escalationCode" type="xsd:string" />
+        <xsd:attribute name="structureRef" type="xsd:QName" />
+      </xsd:extension>
+    </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="name" type="xsd:string" />
+        <xsd:attribute name="errorCode" type="xsd:string" />
+        <xsd:attribute name="structureRef" type="xsd:QName" />
+      </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="artifact" type="tArtifact" />
+  <xsd:complexType name="tArtifact" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement" />
+    </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="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: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:attribute name="textFormat" type="xsd:string" default="text/plain" />
+  </xsd:complexType>
+
+  <xsd:element name="textAnnotation" type="tTextAnnotation" 
substitutionGroup="artifact" />
+  <xsd:complexType name="tTextAnnotation">
+    <xsd:complexContent>
+      <xsd:extension base="tArtifact">
+        <xsd:sequence>
+          <xsd:element name="text" type="xsd:string" minOccurs="0" 
maxOccurs="1" />
+        </xsd:sequence>
+        <xsd:attribute name="textFormat" type="xsd:string" 
default="text/plain" />
+      </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:attribute name="name" type="xsd:string" use="optional" />
+        <xsd:attribute name="type" type="xsd:QName" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="formalExpression" type="tFormalExpression" 
substitutionGroup="expression" />
+  <xsd:complexType name="tFormalExpression">
+    <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="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="participantMultiplicity" type="tParticipantMultiplicity" 
/>
+  <xsd:complexType name="tParticipantMultiplicity">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement">
+        <xsd:attribute name="minimum" type="xsd:int" default="0" />
+        <xsd:attribute name="maximum" type="xsd:int" default="1" />
+      </xsd:extension>
+    </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="processRef" type="xsd:QName" use="optional" />
+      </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="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:attribute name="name" type="xsd:string" use="optional" />
+      </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:element name="messageFlowRef" type="xsd:QName" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element ref="correlationKey" minOccurs="0" 
maxOccurs="unbounded" />
+        </xsd:sequence>
+        <xsd:attribute name="name" type="xsd:string" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="conversationAssociation" type="tConversationAssociation" 
/>
+  <xsd:complexType name="tConversationAssociation">
+    <xsd:complexContent>
+      <xsd:extension base="tBaseElement">
+        <xsd:attribute name="innerConversationNodeRef" type="xsd:QName" 
use="required" />
+        <xsd:attribute name="outerConversationNodeRef" type="xsd:QName" 
use="required" />
+      </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="conversationLink" type="tConversationLink" />
+  <xsd:complexType name="tConversationLink">
+    <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: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="conversationNode" 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:element ref="correlationKey" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="choreographyRef" type="xsd:QName" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element ref="conversationLink" minOccurs="0" 
maxOccurs="unbounded" />
+        </xsd:sequence>
+        <xsd:attribute name="name" type="xsd:string" />
+        <xsd:attribute name="isClosed" type="xsd:boolean" default="false" />
+      </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="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="correlationKeyRef" type="xsd:QName" 
use="required" />
+      </xsd:extension>
+    </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="tFormalExpression" minOccurs="1" 
maxOccurs="1" />
+          <xsd:element name="to" type="tFormalExpression" minOccurs="1" 
maxOccurs="1" />
+          <xsd:element name="inputName" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="inputDataType" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="inputSource" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="outputName" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="outputDataType" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="outputTarget" type="xsd:string" minOccurs="0" 
maxOccurs="unbounded" />
+        </xsd:sequence>
+      </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:element ref="correlationKey" minOccurs="0" 
maxOccurs="unbounded" />
+        </xsd:sequence>
+        <xsd:attribute name="initiatingParticipantRef" type="xsd:QName" 
use="required" />
+        <xsd:attribute name="loopType" type="tChoreographyLoopType" 
default="None" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="callChoreography" type="tCallChoreography" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tCallChoreography">
+    <xsd:complexContent>
+      <xsd:extension base="tChoreographyActivity">
+        <xsd:sequence>
+          <xsd:element ref="participantAssociation" minOccurs="0" 
maxOccurs="unbounded" />
+        </xsd:sequence>
+        <xsd:attribute name="calledChoreographyRef" 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="calledCollaborationRef" type="xsd:QName" 
use="optional" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="choreography" type="tChoreography" 
substitutionGroup="collaboration" />
+  <xsd:complexType name="tChoreography">
+    <xsd:complexContent>
+      <xsd:extension base="tCollaboration">
+        <xsd:sequence>
+          <xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded" />
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="tChoreographyLoopType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="None" />
+      <xsd:enumeration value="Standard" />
+      <xsd:enumeration value="MultiInstanceSequential" />
+      <xsd:enumeration value="MultiInstanceParallel" />
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <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="2" />
+        </xsd:sequence>
+      </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="implicitThrowEvent" type="tImplicitThrowEvent" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tImplicitThrowEvent">
+    <xsd:complexContent>
+      <xsd:extension base="tThrowEvent" />
+    </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="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="conversationNode" />
+  <xsd:complexType name="tConversation">
+    <xsd:complexContent>
+      <xsd:extension base="tConversationNode" />
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="dataObjectReference" type="tDataObjectReference" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tDataObjectReference">
+    <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="dataObjectRef" type="xsd:IDREF" />
+      </xsd:extension>
+    </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="errorEventDefinition" type="tErrorEventDefinition" 
substitutionGroup="eventDefinition" />
+  <xsd:complexType name="tErrorEventDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="tEventDefinition">
+        <xsd:attribute name="errorRef" 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="escalationRef" type="xsd:QName" />
+      </xsd:extension>
+    </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>
+
+  <!-- Manually edited. This is inlined in baseElement and 
baseElementWithMixedContent, for type-safe extensibility. -->
+  <!-- <xsd:element name="extensionElements" type="tExtensionElements" />
+  <xsd:complexType name="tExtensionElements">
+    <xsd:sequence>
+      <xsd:any namespace="##other" processContents="lax" minOccurs="0" 
maxOccurs="unbounded" />
+    </xsd:sequence>
+  </xsd:complexType> -->
+
+  <xsd:element name="globalBusinessRuleTask" type="tGlobalBusinessRuleTask" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tGlobalBusinessRuleTask">
+    <xsd:complexContent>
+      <xsd:extension base="tGlobalTask">
+        <xsd:attribute name="implementation" type="tImplementation" 
default="##unspecified" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="globalChoreographyTask" type="tGlobalChoreographyTask" 
substitutionGroup="choreography" />
+  <xsd:complexType name="tGlobalChoreographyTask">
+    <xsd:complexContent>
+      <xsd:extension base="tChoreography">
+        <xsd:attribute name="initiatingParticipantRef" type="xsd:QName" />
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="globalConversation" type="tGlobalConversation" 
substitutionGroup="collaboration" />
+  <xsd:complexType name="tGlobalConversation">
+    <xsd:complexContent>
+      <xsd:extension base="tCollaboration" />
+    </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="globalUserTask" type="tGlobalUserTask" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tGlobalUserTask">
+    <xsd:complexContent>
+      <xsd:extension base="tGlobalTask">
+        <xsd:sequence>
+          <xsd:element name="taskName" type="xsd:string" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="subject" type="xsd:string" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="content" type="xsd:string" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="priority" type="xsd:string" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element ref="rendering" minOccurs="0" maxOccurs="unbounded" />
+        </xsd:sequence>
+        <xsd:attribute name="description" type="xsd:string" use="optional" />
+        <xsd:attribute name="skippable" type="xsd:boolean" default="false" />
+        <xsd:attribute name="implementation" type="tImplementation" 
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="categoryValueRef" type="xsd:QName" use="optional" 
/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="performer" type="tPerformer" 
substitutionGroup="resourceRole" />
+  <xsd:complexType name="tPerformer">
+    <xsd:complexContent>
+      <xsd:extension base="tResourceRole" />
+    </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="linkEventDefinition" type="tLinkEventDefinition" 
substitutionGroup="eventDefinition" />
+  <xsd:complexType name="tLinkEventDefinition">
+    <xsd:complexContent>
+      <xsd:extension base="tEventDefinition">
+        <xsd:sequence>
+          <xsd:element name="source" type="xsd:QName" minOccurs="0" 
maxOccurs="unbounded" />
+          <xsd:element name="target" type="xsd:QName" minOccurs="0" 
maxOccurs="1" />
+        </xsd:sequence>
+        <xsd:attribute name="name" type="xsd:string" use="required" />
+      </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: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="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="loopDataInputRef" type="xsd:QName" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="loopDataOutputRef" type="xsd:QName" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="inputDataItem" type="tDataInput" minOccurs="0" 
maxOccurs="1" />
+          <xsd:element name="outputDataItem" type="tDataOutput" 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:element name="partnerEntity" type="tPartnerEntity" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tPartnerEntity">
+    <xsd:complexContent>
+      <xsd:extension base="tRootElement">
+        <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="partnerRole" type="tPartnerRole" 
substitutionGroup="rootElement" />
+  <xsd:complexType name="tPartnerRole">
+    <xsd:complexContent>
+      <xsd:extension base="tRootElement">
+        <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="potentialOwner" type="tPotentialOwner" 
substitutionGroup="performer" />
+  <xsd:complexType name="tPotentialOwner">
+    <xsd:complexContent>
+      <xsd:extension base="tHumanPerformer" />
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="tProcessType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="None" />
+      <xsd:enumeration value="Public" />
+      <xsd:enumeration value="Private" />
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <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 ref="resourceRole" minOccurs="0" maxOccurs="unbounded" 
/>
+          <xsd:element ref="correlationSubscription" 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="isExecutable" type="xsd:boolean" />
+        <xsd:attribute name="definitionalCollaborationRef" type="xsd:QName" 
use="optional" />
+      </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="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: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="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="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="subChoreography" type="tSubChoreography" 
substitutionGroup="flowElement" />
+  <xsd:complexType name="tSubChoreography">
+    <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="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:sequence>
+      </xsd:extension>
+    </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>
+
+  <!-- Manually edited to make this type-safe -->
+  <!-- 
+  <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="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="timeDuration" 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:schema>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to