[jboss-svn-commits] JBL Code SVN: r32924 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/process/builder and 27 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 17 14:51:15 EDT 2010


Author: KrisVerlaenen
Date: 2010-05-17 14:51:11 -0400 (Mon, 17 May 2010)
New Revision: 32924

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/exclusive/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/exclusive/ExclusiveGroup.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/ExclusiveGroupInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/SwimlaneInstance.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Error.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Escalation.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ErrorHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EscalationHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventBasedGatewayHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNEdgeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNPlaneHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNShapeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DC.xsd
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DI.xsd
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompositeProcessWithDIGraphical.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit2.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit3.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit4.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit5.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithDIGraphical.xml
   labs/jbossrules/trunk/drools-process/drools-gwt-server-war/src/main/resources/META-INF/hibernate.cfg.xml
Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/NodeInstanceContainer.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessMarchallingTest.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterEnums.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ContextInstanceContainer.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/EventNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Split.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeContextNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
   labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml
   labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/bpmn2/editor/BPMNModelEditor.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/META-INF/persistence.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/handler/ReceiveTaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AdHocSubProcessHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNDISemanticModule.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BoundaryEventHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/JoinHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ParallelGatewayHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ReceiveTaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BPMN20.xsd
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BpmnDi.xsd
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/Semantic.xsd
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/Person.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.drl
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcessAutoComplete.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-BuyerProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivity.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivitySubProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ConditionalStart.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-DataObject.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorBoundaryEventInterrupting.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorEndEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEventInterrupting.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationEndEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess2.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess3.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplit.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitXPath.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplit.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventCondition.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventMessage.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventSignal.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventTimer.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventCompensate.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventEscalation.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventMessage.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventNone.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventSignal.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageEndEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageStart.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithGraphical.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MultiInstanceLoopCharacteristicsProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-OryxExportedExample.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ReceiveTask.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SendTask.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ServiceProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalEndEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalStart.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SubProcess.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEvent.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEventInterrupting.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml
   labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-UserTask.xml
Log:
 - large update of BPMN2 implementation

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/NodeInstanceContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/NodeInstanceContainer.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/process/NodeInstanceContainer.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,5 +5,7 @@
 public interface NodeInstanceContainer {
 
     Collection<NodeInstance> getNodeInstances();
+    
+    NodeInstance getNodeInstance(long nodeInstanceId);
 
 }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/SplitNodeBuilder.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -27,7 +27,7 @@
                       Node node) {
         Split splitNode = ( Split ) node;
         
-        if ( splitNode.getType() == Split.TYPE_AND ) {
+        if ( splitNode.getType() != Split.TYPE_XOR && splitNode.getType() != Split.TYPE_OR ) {
             // we only process or/xor
             return;
         }

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessEventListenerTest.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -100,26 +100,32 @@
         final RuleFlowEventListenerExtension listener = new RuleFlowEventListenerExtension() {
 
             public void beforeVariableChange(RuleFlowVariableChangeEvent event, WorkingMemory workingMemory) {
+            	System.out.println("beforeVariableChange " + event);
                 processEventList.add(event);
             }
 
             public void afterVariableChange(RuleFlowVariableChangeEvent event, WorkingMemory workingMemory) {
+            	System.out.println("afterVariableChange " + event);
                 processEventList.add(event);
             }
 
             public void beforeRuleFlowStarted(RuleFlowStartedEvent event, WorkingMemory workingMemory) {
+            	System.out.println("beforeRuleFlowStarted " + event);
                 processEventList.add(event);
             }
 
             public void afterRuleFlowStarted(RuleFlowStartedEvent event, WorkingMemory workingMemory) {
+            	System.out.println("afterRuleFlowStarted " + event);
                 processEventList.add(event);
             }
 
             public void beforeRuleFlowCompleted(RuleFlowCompletedEvent event, WorkingMemory workingMemory) {
+            	System.out.println("beforeRuleFlowCompleted " + event);
                 processEventList.add(event);
             }
 
             public void afterRuleFlowCompleted(RuleFlowCompletedEvent event, WorkingMemory workingMemory) {
+            	System.out.println("afterRuleFlowCompleted " + event);
                 processEventList.add(event);
             }
 
@@ -140,22 +146,24 @@
             }
 
             public void beforeRuleFlowNodeTriggered(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+            	System.out.println("beforeRuleFlowNodeTriggered " + event);
                 processEventList.add(event);
             }
 
             public void afterRuleFlowNodeTriggered(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+            	System.out.println("afterRuleFlowNodeTriggered " + event);
                 processEventList.add(event);
             }
 
             public void beforeRuleFlowNodeLeft(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+            	System.out.println("beforeRuleFlowNodeLeft " + event);
                 processEventList.add(event);
             }
 
             public void afterRuleFlowNodeLeft(RuleFlowNodeTriggeredEvent event, WorkingMemory workingMemory) {
+            	System.out.println("afterRuleFlowNodeLeft " + event);
                 processEventList.add(event);
-            }
-
-           
+            }     
         };
 
 
@@ -166,7 +174,7 @@
         assertEquals("MyValue", ((VariableScopeInstance)
                                     ((ProcessInstance) processInstance)
                                         .getContextInstance(VariableScope.VARIABLE_SCOPE)).getVariable("MyVar"));
-        assertEquals( 28, processEventList.size() );
+        assertEquals( 26, processEventList.size() );
         assertEquals( "org.drools.event", ((RuleFlowStartedEvent) processEventList.get(0)).getProcessInstance().getProcessId());
 
         assertEquals("MyVar",((RuleFlowVariableChangeEvent) processEventList.get(4)).getName());

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessMarchallingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessMarchallingTest.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ProcessMarchallingTest.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -394,14 +394,32 @@
     		"              </parameter>\n" +
     		"            </work>\n" +
     		"          </humanTask>\n" +
+    		"          <humanTask id=\"2\" name=\"Human Task Again\" >\n" +
+    		"            <work name=\"Human Task\" >\n" +
+    		"              <parameter name=\"Comment\" >\n" +
+    		"                <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+    		"              </parameter>\n" +
+    		"              <parameter name=\"ActorId\" >\n" +
+    		"                <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+    		"              </parameter>\n" +
+    		"              <parameter name=\"Priority\" >\n" +
+    		"                <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+    		"              </parameter>\n" +
+    		"              <parameter name=\"TaskName\" >\n" +
+    		"                <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+    		"                <value>Do something else: #{item}</value>\n" +
+    		"              </parameter>\n" +
+    		"            </work>\n" +
+    		"          </humanTask>\n" +
     		"        </nodes>\n" +
     		"        <connections>\n" +
+    		"          <connection from=\"1\" to=\"2\" />\n" +
     		"        </connections>\n" +
     		"        <in-ports>\n" +
     		"          <in-port type=\"DROOLS_DEFAULT\" nodeId=\"1\" nodeInType=\"DROOLS_DEFAULT\" />\n" +
     		"        </in-ports>\n" +
     		"        <out-ports>\n" +
-    		"          <out-port type=\"DROOLS_DEFAULT\" nodeId=\"1\" nodeOutType=\"DROOLS_DEFAULT\" />\n" +
+    		"          <out-port type=\"DROOLS_DEFAULT\" nodeId=\"2\" nodeOutType=\"DROOLS_DEFAULT\" />\n" +
     		"        </out-ports>\n" +
     		"      </forEach>\n" +
     		"      <start id=\"1\" name=\"Start\" />\n" +
@@ -435,7 +453,18 @@
         assertEquals(3, handler.getWorkItems().size());
         
         session = getSerialisedStatefulSession( session );
+        session.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
 
+        List<WorkItem> workItems = new ArrayList<WorkItem>(handler.getWorkItems());
+        handler.reset();
+        for (WorkItem workItem: workItems) {
+        	session.getWorkItemManager().completeWorkItem(workItem.getId(), null);
+        }
+        assertEquals(1, session.getProcessInstances().size());
+        assertEquals(3, handler.getWorkItems().size());
+        
+        session = getSerialisedStatefulSession( session );
+
         for (WorkItem workItem: handler.getWorkItems()) {
         	session.getWorkItemManager().completeWorkItem(workItem.getId(), null);
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/RuleFlowGroupImpl.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -90,6 +90,7 @@
         list = (LinkedList) in.readObject();
         autoDeactivate = in.readBoolean();
         listeners = (List<RuleFlowGroupListener>) in.readObject();
+        nodeInstances = (Map<Long, String>) in.readObject();
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {
@@ -99,6 +100,7 @@
         out.writeObject( list );
         out.writeBoolean( autoDeactivate );
         out.writeObject( listeners );
+        out.writeObject( nodeInstances );
     }
 
     public String getName() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/WorkingMemoryAction.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -15,6 +15,7 @@
     public static final int LogicalRetractCallback = 4;
     public static final int WorkingMemoryReteExpireAction = 5;
     public static final int SignalProcessInstanceAction = 6;
+    public static final int SignalAction = 7;
     
     
     public void execute(InternalWorkingMemory workingMemory);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/AbstractProcessInstanceMarshaller.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -4,6 +4,7 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -14,11 +15,13 @@
 import org.drools.common.InternalWorkingMemory;
 import org.drools.process.core.Context;
 import org.drools.process.core.Process;
+import org.drools.process.core.context.exclusive.ExclusiveGroup;
 import org.drools.process.core.context.swimlane.SwimlaneContext;
 import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.ContextInstance;
+import org.drools.process.instance.context.exclusive.ExclusiveGroupInstance;
 import org.drools.process.instance.context.swimlane.SwimlaneContextInstance;
 import org.drools.process.instance.context.variable.VariableScopeInstance;
-import org.drools.ruleflow.instance.RuleFlowProcessInstance;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.runtime.process.NodeInstanceContainer;
 import org.drools.runtime.process.ProcessInstance;
@@ -27,6 +30,7 @@
 import org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl;
 import org.drools.workflow.instance.node.CompositeContextNodeInstance;
 import org.drools.workflow.instance.node.DynamicNodeInstance;
+import org.drools.workflow.instance.node.EventNodeInstance;
 import org.drools.workflow.instance.node.ForEachNodeInstance;
 import org.drools.workflow.instance.node.HumanTaskNodeInstance;
 import org.drools.workflow.instance.node.JoinInstance;
@@ -82,7 +86,6 @@
         }
 
         SwimlaneContextInstance swimlaneContextInstance = (SwimlaneContextInstance) workFlow.getContextInstance(SwimlaneContext.SWIMLANE_SCOPE);
-
         if (swimlaneContextInstance != null) {
             Map<String, String> swimlaneActors = swimlaneContextInstance.getSwimlaneActors();
             stream.writeInt(swimlaneActors.size());
@@ -93,6 +96,7 @@
         } else {
             stream.writeInt(0);
         }
+        
         List<NodeInstance> nodeInstances = new ArrayList<NodeInstance>(workFlow.getNodeInstances());
         Collections.sort(nodeInstances,
                 new Comparator<NodeInstance>() {
@@ -108,6 +112,22 @@
                     nodeInstance);
         }
         stream.writeShort(PersisterEnums.END);
+        
+        List<ContextInstance> exclusiveGroupInstances =
+        	workFlow.getContextInstances(ExclusiveGroup.EXCLUSIVE_GROUP);
+        if (exclusiveGroupInstances == null) {
+        	stream.writeInt(0);
+        } else {
+        	stream.writeInt(exclusiveGroupInstances.size());
+        	for (ContextInstance contextInstance: exclusiveGroupInstances) {
+        		ExclusiveGroupInstance exclusiveGroupInstance = (ExclusiveGroupInstance) contextInstance;
+        		Collection<NodeInstance> groupNodeInstances = exclusiveGroupInstance.getNodeInstances();
+        		stream.writeInt(groupNodeInstances.size());
+        		for (NodeInstance nodeInstance: groupNodeInstances) {
+        			stream.writeLong(nodeInstance.getId());
+        		}
+        	}
+        }
     }
 
     public void writeNodeInstance(MarshallerWriteContext context,
@@ -144,7 +164,9 @@
             } else {
                 stream.writeInt(0);
             }
-        } else if (nodeInstance instanceof TimerNodeInstance) {
+        } else if (nodeInstance instanceof EventNodeInstance) {
+        	stream.writeShort(PersisterEnums.EVENT_NODE_INSTANCE);
+    	} else if (nodeInstance instanceof TimerNodeInstance) {
             stream.writeShort(PersisterEnums.TIMER_NODE_INSTANCE);
             stream.writeLong(((TimerNodeInstance) nodeInstance).getTimerId());
         } else if (nodeInstance instanceof JoinInstance) {
@@ -176,57 +198,15 @@
             } else {
                 stream.writeInt(0);
             }
-        } else if (nodeInstance instanceof DynamicNodeInstance) {
-            stream.writeShort(PersisterEnums.DYNAMIC_NODE_INSTANCE);
-            DynamicNodeInstance dynamicNodeInstance = (DynamicNodeInstance) nodeInstance;
-            List<Long> timerInstances = dynamicNodeInstance.getTimerInstances();
-            if (timerInstances != null) {
-                stream.writeInt(timerInstances.size());
-                for (Long id : timerInstances) {
-                    stream.writeLong(id);
-                }
-            } else {
-                stream.writeInt(0);
-            }
-            VariableScopeInstance variableScopeInstance = (VariableScopeInstance) dynamicNodeInstance.getContextInstance(VariableScope.VARIABLE_SCOPE);
-            if (variableScopeInstance == null) {
-            	stream.writeInt(0);
-            } else {
-	            Map<String, Object> variables = variableScopeInstance.getVariables();
-	            List<String> keys = new ArrayList<String>(variables.keySet());
-	            Collections.sort(keys,
-	                    new Comparator<String>() {
-	                        public int compare(String o1,
-	                                String o2) {
-	                            return o1.compareTo(o2);
-	                        }
-	                    });
-	            stream.writeInt(keys.size());
-	            for (String key : keys) {
-	                stream.writeUTF(key);
-	                stream.writeObject(variables.get(key));
-	            }
-            }
-            List<NodeInstance> nodeInstances = new ArrayList<NodeInstance>(dynamicNodeInstance.getNodeInstances());
-            Collections.sort(nodeInstances,
-                    new Comparator<NodeInstance>() {
-
-                        public int compare(NodeInstance o1,
-                                NodeInstance o2) {
-                            return (int) (o1.getId() - o2.getId());
-                        }
-                    });
-            for (NodeInstance subNodeInstance : nodeInstances) {
-                stream.writeShort(PersisterEnums.NODE_INSTANCE);
-                writeNodeInstance(context,
-                        subNodeInstance);
-            }
-            stream.writeShort(PersisterEnums.END);
         } else if (nodeInstance instanceof CompositeContextNodeInstance) {
-            stream.writeShort(PersisterEnums.COMPOSITE_NODE_INSTANCE);
+        	if (nodeInstance instanceof DynamicNodeInstance) {
+                stream.writeShort(PersisterEnums.DYNAMIC_NODE_INSTANCE);
+        	} else {
+        		stream.writeShort(PersisterEnums.COMPOSITE_NODE_INSTANCE);
+        	}
             CompositeContextNodeInstance compositeNodeInstance = (CompositeContextNodeInstance) nodeInstance;
             List<Long> timerInstances =
-                    ((CompositeContextNodeInstance) nodeInstance).getTimerInstances();
+                ((CompositeContextNodeInstance) nodeInstance).getTimerInstances();
             if (timerInstances != null) {
                 stream.writeInt(timerInstances.size());
                 for (Long id : timerInstances) {
@@ -269,13 +249,27 @@
                         subNodeInstance);
             }
             stream.writeShort(PersisterEnums.END);
+            List<ContextInstance> exclusiveGroupInstances =
+            	compositeNodeInstance.getContextInstances(ExclusiveGroup.EXCLUSIVE_GROUP);
+            if (exclusiveGroupInstances == null) {
+            	stream.writeInt(0);
+            } else {
+            	stream.writeInt(exclusiveGroupInstances.size());
+            	for (ContextInstance contextInstance: exclusiveGroupInstances) {
+            		ExclusiveGroupInstance exclusiveGroupInstance = (ExclusiveGroupInstance) contextInstance;
+            		Collection<NodeInstance> groupNodeInstances = exclusiveGroupInstance.getNodeInstances();
+            		stream.writeInt(groupNodeInstances.size());
+            		for (NodeInstance groupNodeInstance: groupNodeInstances) {
+            			stream.writeLong(groupNodeInstance.getId());
+            		}
+            	}
+            }
         } else if (nodeInstance instanceof ForEachNodeInstance) {
             stream.writeShort(PersisterEnums.FOR_EACH_NODE_INSTANCE);
             ForEachNodeInstance forEachNodeInstance = (ForEachNodeInstance) nodeInstance;
             List<NodeInstance> nodeInstances = new ArrayList<NodeInstance>(forEachNodeInstance.getNodeInstances());
             Collections.sort(nodeInstances,
                     new Comparator<NodeInstance>() {
-
                         public int compare(NodeInstance o1,
                                 NodeInstance o2) {
                             return (int) (o1.getId() - o2.getId());
@@ -348,6 +342,21 @@
             readNodeInstance(context, processInstance, processInstance);
         }
 
+        int exclusiveGroupInstances = stream.readInt();
+    	for (int i = 0; i < exclusiveGroupInstances; i++) {
+            ExclusiveGroupInstance exclusiveGroupInstance = new ExclusiveGroupInstance();
+            processInstance.addContextInstance(ExclusiveGroup.EXCLUSIVE_GROUP, exclusiveGroupInstance);
+            int nodeInstances = stream.readInt();
+            for (int j = 0; j < nodeInstances; j++) {
+                long nodeInstanceId = stream.readLong();
+                NodeInstance nodeInstance = processInstance.getNodeInstance(nodeInstanceId);
+                if (nodeInstance == null) {
+                	throw new IllegalArgumentException("Could not find node instance when deserializing exclusive group instance: " + nodeInstanceId);
+                }
+                exclusiveGroupInstance.addNodeInstance(nodeInstance);
+            }
+    	}
+
         processInstance.internalSetNodeInstanceCounter(nodeInstanceCounter);
         if (wm != null) {
             processInstance.reconnect();
@@ -395,6 +404,22 @@
                             (CompositeContextNodeInstance) nodeInstance,
                             processInstance);
                 }
+                
+                int exclusiveGroupInstances = stream.readInt();
+            	for (int i = 0; i < exclusiveGroupInstances; i++) {
+                    ExclusiveGroupInstance exclusiveGroupInstance = new ExclusiveGroupInstance();
+                    processInstance.addContextInstance(ExclusiveGroup.EXCLUSIVE_GROUP, exclusiveGroupInstance);
+                    int nodeInstances = stream.readInt();
+                    for (int j = 0; j < nodeInstances; j++) {
+                        long nodeInstanceId = stream.readLong();
+                        NodeInstance groupNodeInstance = processInstance.getNodeInstance(nodeInstanceId);
+                        if (groupNodeInstance == null) {
+                        	throw new IllegalArgumentException("Could not find node instance when deserializing exclusive group instance: " + nodeInstanceId);
+                        }
+                        exclusiveGroupInstance.addNodeInstance(groupNodeInstance);
+                    }
+            	}
+
                 break;
             case PersisterEnums.FOR_EACH_NODE_INSTANCE:
                 while (stream.readShort() == PersisterEnums.NODE_INSTANCE) {
@@ -445,6 +470,9 @@
                 nodeInstance = new TimerNodeInstance();
                 ((TimerNodeInstance) nodeInstance).internalSetTimerId(stream.readLong());
                 break;
+            case PersisterEnums.EVENT_NODE_INSTANCE:
+                nodeInstance = new EventNodeInstance();
+                break;
             case PersisterEnums.JOIN_NODE_INSTANCE:
                 nodeInstance = new JoinInstance();
                 int number = stream.readInt();
@@ -475,6 +503,14 @@
                 break;
             case PersisterEnums.DYNAMIC_NODE_INSTANCE:
                 nodeInstance = new DynamicNodeInstance();
+                nbTimerInstances = stream.readInt();
+                if (nbTimerInstances > 0) {
+                    List<Long> timerInstances = new ArrayList<Long>();
+                    for (int i = 0; i < nbTimerInstances; i++) {
+                        timerInstances.add(stream.readLong());
+                    }
+                    ((CompositeContextNodeInstance) nodeInstance).internalSetTimerInstances(timerInstances);
+                }
                 break;
             case PersisterEnums.STATE_NODE_INSTANCE:
                 nodeInstance = new StateNodeInstance();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/InputMarshaller.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -225,11 +225,17 @@
             String rfgName = stream.readUTF();
             boolean active = stream.readBoolean();
             boolean autoDeactivate = stream.readBoolean();
-            RuleFlowGroup rfg = new RuleFlowGroupImpl( rfgName,
+            RuleFlowGroupImpl rfg = new RuleFlowGroupImpl( rfgName,
                                                        active,
                                                        autoDeactivate );
             agenda.getRuleFlowGroupsMap().put( rfgName,
                                                rfg );
+            int nbNodeInstances = stream.readInt();
+            for (int i = 0; i < nbNodeInstances; i++) {
+            	Long processInstanceId = stream.readLong();
+            	String nodeInstanceId = stream.readUTF();
+            	rfg.addNodeInstance(processInstanceId, nodeInstanceId);
+            }
         }
 
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/OutputMarshaller.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -141,6 +141,12 @@
             context.writeUTF( group.getName() );
             context.writeBoolean( group.isActive() );
             context.writeBoolean( group.isAutoDeactivate() );
+            Map<Long, String> nodeInstances = group.getNodeInstances();
+            context.writeInt( nodeInstances.size() );
+            for (Map.Entry<Long, String> entry: nodeInstances.entrySet()) {
+            	context.writeLong( entry.getKey() );
+            	context.writeUTF( entry.getValue() );
+            }
         }
         context.writeShort( PersisterEnums.END );
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterEnums.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterEnums.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterEnums.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -41,5 +41,6 @@
     public static final short TIMER                     = 29;
     public static final short STATE_NODE_INSTANCE       = 30;
     public static final short DYNAMIC_NODE_INSTANCE     = 31;
+    public static final short EVENT_NODE_INSTANCE       = 32;
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterHelper.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/PersisterHelper.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,6 +5,7 @@
 import org.drools.common.WorkingMemoryAction;
 import org.drools.common.RuleFlowGroupImpl.DeactivateCallback;
 import org.drools.common.TruthMaintenanceSystem.LogicalRetractCallback;
+import org.drools.process.instance.event.DefaultSignalManager.SignalAction;
 import org.drools.process.instance.event.DefaultSignalManager.SignalProcessInstanceAction;
 import org.drools.reteoo.PropagationQueuingNode.PropagateAction;
 import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
@@ -32,6 +33,9 @@
             case WorkingMemoryAction.SignalProcessInstanceAction : {
                 return new SignalProcessInstanceAction(context);
             }
+            case WorkingMemoryAction.SignalAction : {
+                return new SignalAction(context);
+            }
         }    
         return null;
     }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/exclusive/ExclusiveGroup.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/exclusive/ExclusiveGroup.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/exclusive/ExclusiveGroup.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,20 @@
+package org.drools.process.core.context.exclusive;
+
+import org.drools.process.core.Context;
+import org.drools.process.core.context.AbstractContext;
+
+public class ExclusiveGroup extends AbstractContext {
+	
+    private static final long serialVersionUID = 400L;
+
+    public static final String EXCLUSIVE_GROUP = "ExclusiveGroup";
+    
+	public String getType() {
+		return EXCLUSIVE_GROUP;
+	}
+
+	public Context resolveContext(Object param) {
+		return null;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -48,7 +48,7 @@
             return getSwimlane((String) param) == null ? null : this;
         }
         throw new IllegalArgumentException(
-            "ExceptionScopes can only resolve exception names: " + param);
+            "Swimlanes can only resolve swimlane names: " + param);
     }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ContextInstanceContainer.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ContextInstanceContainer.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/ContextInstanceContainer.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -15,6 +15,8 @@
     
     void addContextInstance(String contextId, ContextInstance contextInstance);
     
+    void removeContextInstance(String contextId, ContextInstance contextInstance);
+    
     // TODO: does it make sense to have more than one contextInstance
     // with the same contextId (e.g. multiple variable scope instances
     // sharing the same context instance container?

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/ExclusiveGroupInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/ExclusiveGroupInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/ExclusiveGroupInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,33 @@
+package org.drools.process.instance.context.exclusive;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.process.core.context.exclusive.ExclusiveGroup;
+import org.drools.process.instance.context.AbstractContextInstance;
+import org.drools.runtime.process.NodeInstance;
+
+public class ExclusiveGroupInstance extends AbstractContextInstance {
+
+    private static final long serialVersionUID = 400L;
+    
+    private Map<Long, NodeInstance> nodeInstances = new HashMap<Long, NodeInstance>();
+    
+    public String getContextType() {
+        return ExclusiveGroup.EXCLUSIVE_GROUP;
+    }
+    
+    public boolean containsNodeInstance(NodeInstance nodeInstance) {
+    	return nodeInstances.containsKey(nodeInstance.getId());
+    }
+    
+    public void addNodeInstance(NodeInstance nodeInstance) {
+    	nodeInstances.put(nodeInstance.getId(), nodeInstance);
+    }
+    
+    public Collection<NodeInstance> getNodeInstances() {
+    	return nodeInstances.values();
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/SwimlaneInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/SwimlaneInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/context/exclusive/SwimlaneInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,15 @@
+package org.drools.process.instance.context.exclusive;
+
+public class SwimlaneInstance {
+
+	private String actorId;
+
+	public void setActorId(String actorId) {
+		this.actorId = actorId;
+	}
+	
+	public String getActorId() {
+		return this.actorId;
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/event/DefaultSignalManager.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -51,6 +51,11 @@
 	}
 	
 	public void signalEvent(String type, Object event) {
+		((InternalWorkingMemory) workingMemory).queueWorkingMemoryAction(new SignalAction(type, event));
+		workingMemory.fireAllRules();
+	}
+	
+	public void internalSignalEvent(String type, Object event) {
 		if (processEventListeners != null) {
 			List<EventListener> eventListeners = processEventListeners.get(type);
 			if (eventListeners != null) {
@@ -60,7 +65,6 @@
 			}
 		}
 	}
-	
 	public void signalEvent(long processInstanceId, String type, Object event) {
 		ProcessInstance processInstance = workingMemory.getProcessInstance(processInstanceId);
 		if (processInstance != null) {
@@ -90,7 +94,10 @@
 		}
 		
 		public void execute(InternalWorkingMemory workingMemory) {
-			workingMemory.getProcessInstance(processInstanceId).signalEvent(type, event);
+			ProcessInstance processInstance = workingMemory.getProcessInstance(processInstanceId);
+			if (processInstance != null) {
+				processInstance.signalEvent(type, event);
+			}
 		}
 
 		public void write(MarshallerWriteContext context) throws IOException {
@@ -122,4 +129,51 @@
 		
 	}
 	
+	public static class SignalAction implements WorkingMemoryAction {
+
+		private String type;
+		private Object event;
+		
+		public SignalAction(String type, Object event) {
+			this.type = type;
+			this.event = event;
+		}
+		
+		public SignalAction(MarshallerReaderContext context) throws IOException, ClassNotFoundException {
+			type = context.readUTF();
+			if (context.readBoolean()) {
+				event = context.readObject();
+			}
+		}
+		
+		public void execute(InternalWorkingMemory workingMemory) {
+			((DefaultSignalManager) workingMemory.getSignalManager()).internalSignalEvent(type, event);
+		}
+
+		public void write(MarshallerWriteContext context) throws IOException {
+			context.writeInt( WorkingMemoryAction.SignalAction );
+			context.writeUTF(type);
+			context.writeBoolean(event != null);
+			if (event != null) {
+				context.writeObject(event);
+			}
+		}
+
+		public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+			type = in.readUTF();
+			if (in.readBoolean()) {
+				event = in.readObject();
+			}
+		}
+
+		public void writeExternal(ObjectOutput out) throws IOException {
+			out.writeUTF(type);
+			out.writeBoolean(event != null);
+			if (event != null) {
+				out.writeObject(event);
+			}
+		}
+		
+	}
+	
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/DefaultWorkItemManager.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -60,6 +60,10 @@
 	
 	public void internalAddWorkItem(WorkItem workItem) {
 	    workItems.put(new Long(workItem.getId()), workItem);
+	    // fix to reset workItemCounter after deserialization
+	    if (workItem.getId() > workItemCounter) {
+	    	workItemCounter = workItem.getId();
+	    }
 	}
 
     public void internalAbortWorkItem(long id) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/impl/ProcessInstanceImpl.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -146,6 +146,13 @@
         list.add(contextInstance);
     }
 
+    public void removeContextInstance(String contextId, ContextInstance contextInstance) {
+        List<ContextInstance> list = this.subContextInstances.get(contextId);
+        if (list != null) {
+            list.remove(contextInstance);
+        }
+    }
+
     public ContextInstance getContextInstance(String contextId, long id) {
         List<ContextInstance> contextInstances = subContextInstances.get(contextId);
         if (contextInstances != null) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/EventNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/EventNode.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/EventNode.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -7,10 +7,9 @@
 import org.drools.process.core.event.EventFilter;
 import org.drools.process.core.event.EventTransformer;
 import org.drools.process.core.event.EventTypeFilter;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.core.impl.NodeImpl;
+import org.drools.workflow.core.impl.ExtendedNodeImpl;
 
-public class EventNode extends NodeImpl implements EventNodeInterface {
+public class EventNode extends ExtendedNodeImpl implements EventNodeInterface {
 
 	private static final long serialVersionUID = 4L;
 	
@@ -78,22 +77,28 @@
 		this.scope = scope;
 	}
 
-	public void validateAddIncomingConnection(final String type, final Connection connection) {
-        throw new UnsupportedOperationException(
-            "An event node does not have an incoming connection!");
+    public void validateAddIncomingConnection(final String type, final Connection connection) {
+        super.validateAddIncomingConnection(type, connection);
+        if (!org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
+            throw new IllegalArgumentException(
+                "This type of node only accepts default incoming connection type!");
+        }
+        if (getFrom() != null) {
+            throw new IllegalArgumentException(
+                "This type of node cannot have more than one incoming connection!");
+        }
     }
 
     public void validateAddOutgoingConnection(final String type, final Connection connection) {
         super.validateAddOutgoingConnection(type, connection);
-        if (!Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
+        if (!org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
             throw new IllegalArgumentException(
                 "This type of node only accepts default outgoing connection type!");
         }
-        if (getOutgoingConnections(Node.CONNECTION_DEFAULT_TYPE) != null
-                && !getOutgoingConnections(Node.CONNECTION_DEFAULT_TYPE).isEmpty()) {
+        if (getTo() != null) {
             throw new IllegalArgumentException(
                 "This type of node cannot have more than one outgoing connection!");
         }
     }
-
+    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Split.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Split.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/Split.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -56,6 +56,7 @@
      * triggered.  
      */
     public static final int TYPE_OR        = 3;
+    public static final int TYPE_XAND      = 4;
 
     private static final long serialVersionUID = 400L;
 
@@ -87,7 +88,8 @@
             ConnectionRef ref = new ConnectionRef(connection.getTo().getId(), connection.getToType());
             return this.constraints.get(ref);
         }
-        throw new UnsupportedOperationException( "Constraints are " + "only supported with XOR or OR split types, not with: " + getType() );
+        throw new UnsupportedOperationException( "Constraints are " + 
+    		"only supported with XOR or OR split types, not with: " + getType() );
     }
 
     public Constraint internalGetConstraint(final ConnectionRef ref) {
@@ -107,7 +109,8 @@
                 new ConnectionRef(connection.getTo().getId(), connection.getToType()),
                 constraint);
         } else {
-            throw new UnsupportedOperationException( "Constraints are " + "only supported with XOR or OR split types, not with type:" + getType() );
+            throw new UnsupportedOperationException( "Constraints are " + 
+        		"only supported with XOR or OR split types, not with type:" + getType() );
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -69,6 +69,7 @@
 		try {
 			action.execute(knowledgeHelper, ((ProcessInstance) getProcessInstance()).getWorkingMemory(), context);
 		} catch (Exception exception) {
+			exception.printStackTrace();
 			String exceptionName = exception.getClass().getName();
 			ExceptionScopeInstance exceptionScopeInstance = (ExceptionScopeInstance)
 				resolveContextInstance(ExceptionScope.EXCEPTION_SCOPE, exceptionName);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -17,6 +17,7 @@
  */
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.drools.WorkingMemory;
@@ -26,9 +27,11 @@
 import org.drools.definition.process.Node;
 import org.drools.process.core.Context;
 import org.drools.process.core.ContextContainer;
+import org.drools.process.core.context.exclusive.ExclusiveGroup;
 import org.drools.process.instance.ContextInstance;
 import org.drools.process.instance.ContextInstanceContainer;
 import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.context.exclusive.ExclusiveGroupInstance;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.runtime.process.NodeInstanceContainer;
 import org.drools.workflow.core.impl.NodeImpl;
@@ -152,6 +155,26 @@
     	if (!hidden) {
     		((EventSupport) workingMemory).getRuleFlowEventSupport().fireBeforeRuleFlowNodeLeft(this, (InternalWorkingMemory) workingMemory);
     	}
+    	// check for exclusive group first
+    	NodeInstanceContainer parent = getNodeInstanceContainer();
+    	if (parent instanceof ContextInstanceContainer) {
+    		List<ContextInstance> contextInstances = ((ContextInstanceContainer) parent).getContextInstances(ExclusiveGroup.EXCLUSIVE_GROUP);
+    		if (contextInstances != null) {
+    			for (ContextInstance contextInstance: new ArrayList<ContextInstance>(contextInstances)) {
+    				ExclusiveGroupInstance groupInstance = (ExclusiveGroupInstance) contextInstance;
+    				if (groupInstance.containsNodeInstance(this)) {
+    					for (NodeInstance nodeInstance: groupInstance.getNodeInstances()) {
+    						if (nodeInstance != this) {
+    							((org.drools.workflow.instance.NodeInstance) nodeInstance).cancel();
+    						}
+    					}
+    					((ContextInstanceContainer) parent).removeContextInstance(ExclusiveGroup.EXCLUSIVE_GROUP, contextInstance);
+    				}
+    				
+    			}
+    		}
+    	}
+    	// trigger next node
         ((org.drools.workflow.instance.NodeInstance) ((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer())
         	.getNodeInstance(connection.getTo())).trigger(this, connection.getToType());
         if (!hidden) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -102,6 +102,15 @@
 		}
 		return Collections.unmodifiableCollection(result);
 	}
+	
+	public NodeInstance getNodeInstance(long nodeInstanceId) {
+		for (NodeInstance nodeInstance: nodeInstances) {
+			if (nodeInstance.getId() == nodeInstanceId) {
+				return nodeInstance;
+			}
+		}
+		return null;
+	}
 
 	public List<String> getActiveNodeIds() {
 		List<String> result = new ArrayList<String>();
@@ -287,7 +296,7 @@
 		final StringBuilder sb = new StringBuilder("WorkflowProcessInstance");
 		sb.append(getId());
 		sb.append(" [processId=");
-		sb.append(getProcess().getId());
+		sb.append(getProcessId());
 		sb.append(",state=");
 		sb.append(getState());
 		sb.append("]");
@@ -337,7 +346,7 @@
 			for (Node node : getWorkflowProcess().getNodes()) {
 				if (node instanceof EventNodeInterface) {
 					if (((EventNodeInterface) node).acceptsEvent(type, event)) {
-						if (node instanceof EventNode) {
+						if (node instanceof EventNode && ((EventNode) node).getFrom() == null) {
 							EventNodeInstance eventNodeInstance = (EventNodeInstance) getNodeInstance(node);
 							eventNodeInstance.signalEvent(type, event);
 						} else {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeContextNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeContextNodeInstance.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeContextNodeInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -60,6 +60,13 @@
         }
         list.add(contextInstance);
     }
+    
+    public void removeContextInstance(String contextId, ContextInstance contextInstance) {
+        List<ContextInstance> list = this.subContextInstances.get(contextId);
+        if (list != null) {
+            list.remove(contextInstance);
+        }
+    }
 
     public ContextInstance getContextInstance(String contextId, long id) {
         List<ContextInstance> contextInstances = subContextInstances.get(contextId);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -172,6 +172,15 @@
         return Collections.unmodifiableCollection(result);
     }
 
+	public NodeInstance getNodeInstance(long nodeInstanceId) {
+		for (NodeInstance nodeInstance: nodeInstances) {
+			if (nodeInstance.getId() == nodeInstanceId) {
+				return nodeInstance;
+			}
+		}
+		return null;
+	}
+
     public NodeInstance getFirstNodeInstance(final long nodeId) {
         for ( final Iterator<NodeInstance> iterator = this.nodeInstances.iterator(); iterator.hasNext(); ) {
             final NodeInstance nodeInstance = iterator.next();
@@ -262,6 +271,7 @@
     }
 
 	public void addEventListeners() {
+		super.addEventListeners();
 		for (NodeInstance nodeInstance: nodeInstances) {
             if (nodeInstance instanceof EventBasedNodeInstanceInterface) {
                 ((EventBasedNodeInstanceInterface) nodeInstance).addEventListeners();
@@ -270,6 +280,7 @@
 	}
 
 	public void removeEventListeners() {
+		super.removeEventListeners();
 		for (NodeInstance nodeInstance: nodeInstances) {
             if (nodeInstance instanceof EventBasedNodeInstanceInterface) {
                 ((EventBasedNodeInstanceInterface) nodeInstance).removeEventListeners();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/EventNodeInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -47,19 +47,15 @@
     		}
     		variableScopeInstance.setVariable(variableName, event);
     	}
-    	trigger(null, null);
+    	triggerCompleted();
     }
     
     public void internalTrigger(final NodeInstance from, String type) {
-        if (type != null) {
+    	if (!org.drools.workflow.core.Node.CONNECTION_DEFAULT_TYPE.equals(type)) {
             throw new IllegalArgumentException(
-                "An event node does not accept incoming connections!");
+                "An EventNode only accepts default incoming connections!");
         }
-        if (from != null) {
-            throw new IllegalArgumentException(
-                "An event can only be triggered by its parent!");
-        }
-        triggerCompleted();
+        // Do nothing, event activated
     }
     
     public EventNode getEventNode() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/SplitInstance.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -17,10 +17,20 @@
  */
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
+import org.drools.WorkingMemory;
+import org.drools.common.EventSupport;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.definition.process.Connection;
+import org.drools.definition.process.Node;
+import org.drools.process.core.context.exclusive.ExclusiveGroup;
+import org.drools.process.instance.ContextInstanceContainer;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.context.exclusive.ExclusiveGroupInstance;
 import org.drools.runtime.process.NodeInstance;
 import org.drools.workflow.core.node.Split;
 import org.drools.workflow.instance.NodeInstanceContainer;
@@ -130,6 +140,56 @@
                     throw new IllegalArgumentException( "OR split could not find at least one valid outgoing connection for split " + getSplit().getName() );
                 }                
                 break;
+            case Split.TYPE_XAND :
+            	((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer()).removeNodeInstance(this);
+                Node node = getNode();
+                List<Connection> connections = null;
+                if (node != null) {
+                	connections = node.getOutgoingConnections(type);
+                }
+                if (connections == null || connections.isEmpty()) {
+                	((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer())
+                		.nodeInstanceCompleted(this, type);
+                } else {
+                	ExclusiveGroupInstance groupInstance = new ExclusiveGroupInstance();
+            		org.drools.runtime.process.NodeInstanceContainer parent = getNodeInstanceContainer();
+                	if (parent instanceof ContextInstanceContainer) {
+                		((ContextInstanceContainer) parent).addContextInstance(ExclusiveGroup.EXCLUSIVE_GROUP, groupInstance);
+                	} else {
+                		throw new IllegalArgumentException(
+            				"An Exclusive AND is only possible if the parent is a context instance container");
+                	}
+                	Map<NodeInstance, String> nodeInstances = new HashMap<NodeInstance, String>();
+        	        for (Connection connection: connections) {
+        	        	nodeInstances.put(
+    	            		((org.drools.workflow.instance.NodeInstanceContainer) getNodeInstanceContainer())
+        	            		.getNodeInstance(connection.getTo()),
+    	            		connection.getToType());
+        	        }
+        	        for (NodeInstance nodeInstance: nodeInstances.keySet()) {
+        	        	groupInstance.addNodeInstance(nodeInstance);
+        	        }
+        	        for (Map.Entry<NodeInstance, String> entry: nodeInstances.entrySet()) {
+        	        	// stop if this process instance has been aborted / completed
+        	        	if (getProcessInstance().getState() != ProcessInstance.STATE_ACTIVE) {
+        	        		return;
+        	        	}
+        	        	boolean hidden = false;
+        	        	if (getNode().getMetaData("hidden") != null) {
+        	        		hidden = true;
+        	        	}
+        	        	WorkingMemory workingMemory = ((ProcessInstance) getProcessInstance()).getWorkingMemory();
+        	        	if (!hidden) {
+        	        		((EventSupport) workingMemory).getRuleFlowEventSupport().fireBeforeRuleFlowNodeLeft(this, (InternalWorkingMemory) workingMemory);
+        	        	}
+        	            ((org.drools.workflow.instance.NodeInstance) entry.getKey())
+        	        		.trigger(this, entry.getValue());
+        	            if (!hidden) {
+        	                ((EventSupport) workingMemory).getRuleFlowEventSupport().fireAfterRuleFlowNodeLeft(this, (InternalWorkingMemory) workingMemory);
+        	            }
+        	        }
+                }
+                break;
             default :
                 throw new IllegalArgumentException( "Illegal split type " + split.getType() );
         }

Modified: labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml
===================================================================
--- labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-docs/drools-docs-flow/src/main/docbook/en-US/Chapter-BPMN2/Chapter-BPMN2.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -18,12 +18,12 @@
       <itemizedlist>
         <listitem>Events
           <itemizedlist>
-            <listitem>Start Event (None, Conditional, Signal)</listitem>
-            <listitem>End Event (None, Terminate, Error, Escalation, Signal, Message)</listitem>
+            <listitem>Start Event (None, Conditional, Signal, Message, Timer)</listitem>
+            <listitem>End Event (None, Terminate, Error, Escalation, Signal, Message, Compensation)</listitem>
             <listitem>Intermediate Catch Event (Signal, Timer, Conditional, Message)</listitem>
-            <listitem>Intermediate Throw Event (None, Signal, Escalation, Message)</listitem>
+            <listitem>Intermediate Throw Event (None, Signal, Escalation, Message, Compensation)</listitem>
             <listitem>Non-interrupting Boundary Event (Escalation, Timer)</listitem>
-            <listitem>Interrupting Boundary Event (Escalation, Error, Timer)</listitem>
+            <listitem>Interrupting Boundary Event (Escalation, Error, Timer, Compensation)</listitem>
           </itemizedlist>
         </listitem>
         <listitem>Activities
@@ -38,6 +38,8 @@
             <listitem>Receive Task</listitem>
             <listitem>Reusable Sub-Process (Call Activity)</listitem>
             <listitem>Embedded Sub-Process</listitem>
+            <listitem>Ad-Hoc Sub-Process</listitem>
+            <listitem>Data-Object</listitem>
           </itemizedlist>
         </listitem>
         <listitem>Gateways
@@ -47,6 +49,7 @@
                 <listitem>Exclusive (Java, MVEL or XPath expression language)</listitem>
                 <listitem>Inclusive (Java, MVEL or XPath expression language)</listitem>
                 <listitem>Parallel</listitem>
+                <listitem>Event-Based</listitem>
               </itemizedlist>
             </listitem>
             <listitem>Converging
@@ -75,11 +78,17 @@
     </listitem>
   </itemizedlist>
 
-  <para>For example, consider the following BPMN process for performing evaluations.  Whenever an evaluation process is started for a specific employee, that employee must first perform a self-evaluation, after which the project manager and human resource manager must also fill in their evaluation, as shown in the figure below.</para>
+  <para>For example, consider the following BPMN process for performing evaluations.
+  Whenever an evaluation process is started for a specific employee, that employee
+  must first perform a self-evaluation, after which the project manager and human
+  resource manager must also fill in their evaluation, as shown in the figure below.</para>
 
 <mediaobject><imageobject><imagedata align="center" format="PNG" role="" fileref="images/Chapter-BPMN2/Evaluation.png"/></imageobject></mediaobject>
 
-  <para>An executable version of this process expressed using BPMN 2.0 XML would look something like this (note that the process needs to contain all the details to make it execuble, including all the parameters for each of the tasks present, hence the large process definition):</para>
+  <para>An executable version of this process expressed using BPMN 2.0 XML would look
+  something like this (note that the process needs to contain all the details to make
+  it execuble, including all the parameters for each of the tasks present, hence the
+  large process definition):</para>
 
   <programlisting>
 &lt;?xml version="1.0" encoding="UTF-8"?&gt; 
@@ -93,149 +102,127 @@
              xmlns:g="http://www.jboss.org/drools/flow/gpd"
              xmlns:tns="http://www.jboss.org/drools"&gt;
 
-  &lt;itemDefinition id="employeeItem" structureRef="java.lang.Object" /&gt;
+  &lt;itemDefinition id="_employeeItem" structureRef="java.lang.Object" /&gt;
 
-  &lt;resource id="Actor" name="Human Actor" /&gt;
+  &lt;process processType="Private" isExecutable="true" id="com.sample.evaluation" name="Evaluation Process" &gt;
 
-  &lt;process id="com.sample.evaluation" name="Evaluation Process" &gt;
-
     &lt;!-- process variables --&gt;
-    &lt;property id="employee" itemSubjectRef="tns:employeeItem"/&gt;
+    &lt;property id="employee" itemSubjectRef="_employeeItem"/&gt;
 
     &lt;!-- nodes --&gt;
     &lt;startEvent id="_1" name="StartProcess" g:x="16" g:y="56" g:width="48" g:height="48" /&gt;
     &lt;userTask id="_2" name="Self Evaluation" g:x="96" g:y="56" g:width="143" g:height="48" &gt;
       &lt;ioSpecification&gt;
         &lt;dataInput id="_2_CommentInput" name="Comment" /&gt;
+        &lt;dataInput id="_2_SkippableInput" name="Skippable" /&gt;
         &lt;dataInput id="_2_TaskNameInput" name="TaskName" /&gt;
-        &lt;dataInput id="_2_PriorityInput" name="Priority" /&gt;
         &lt;dataInput id="_2_ContentInput" name="Content" /&gt;
-        &lt;dataInput id="_2_SkippableInput" name="Skippable" /&gt;
+        &lt;dataInput id="_2_PriorityInput" name="Priority" /&gt;
         &lt;inputSet&gt;
           &lt;dataInputRefs&gt;_2_CommentInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_2_SkippableInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_2_TaskNameInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_2_PriorityInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_2_ContentInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_2_SkippableInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_2_PriorityInput&lt;/dataInputRefs&gt;
         &lt;/inputSet&gt;
         &lt;outputSet&gt;
         &lt;/outputSet&gt;
       &lt;/ioSpecification&gt;
-      &lt;property id="_2_Comment" /&gt;
-      &lt;property id="_2_TaskName" /&gt;
-      &lt;property id="_2_Priority" /&gt;
-      &lt;property id="_2_Content" /&gt;
-      &lt;property id="_2_Skippable" /&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_2_CommentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;You need to perform a self-evaluation&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_2_CommentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_2_Comment&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_2_CommentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_2_SkippableInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_2_TaskNameInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_2_SkippableInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_2_TaskName&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_2_TaskNameInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_2_TaskNameInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_2_PriorityInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_2_TaskNameInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_2_Priority&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_2_PriorityInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_2_ContentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_2_ContentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_2_Content&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_2_ContentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_2_PriorityInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_2_SkippableInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_2_PriorityInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_2_Skippable&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_2_SkippableInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
-      &lt;potentialOwner resourceRef="tns:Actor" &gt;
+      &lt;potentialOwner&gt;
         &lt;resourceAssignmentExpression&gt;
           &lt;formalExpression&gt;#{employee}&lt;/formalExpression&gt;
         &lt;/resourceAssignmentExpression&gt;
       &lt;/potentialOwner&gt;
     &lt;/userTask&gt;
-    &lt;parallelGateway id="_3" name="Diverge" g:x="271" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" /&gt;
+    &lt;parallelGateway id="_3" name="Diverge" g:x="271" g:y="56" g:width="49" g:height="49" gatewayDirection="Diverging" /&gt;
     &lt;userTask id="_4" name="HR Manager Evaluation" g:x="352" g:y="96" g:width="225" g:height="48" &gt;
       &lt;ioSpecification&gt;
         &lt;dataInput id="_4_CommentInput" name="Comment" /&gt;
+        &lt;dataInput id="_4_SkippableInput" name="Skippable" /&gt;
         &lt;dataInput id="_4_TaskNameInput" name="TaskName" /&gt;
-        &lt;dataInput id="_4_PriorityInput" name="Priority" /&gt;
         &lt;dataInput id="_4_ContentInput" name="Content" /&gt;
-        &lt;dataInput id="_4_SkippableInput" name="Skippable" /&gt;
+        &lt;dataInput id="_4_PriorityInput" name="Priority" /&gt;
         &lt;inputSet&gt;
           &lt;dataInputRefs&gt;_4_CommentInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_4_SkippableInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_4_TaskNameInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_4_PriorityInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_4_ContentInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_4_SkippableInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_4_PriorityInput&lt;/dataInputRefs&gt;
         &lt;/inputSet&gt;
         &lt;outputSet&gt;
         &lt;/outputSet&gt;
       &lt;/ioSpecification&gt;
-      &lt;property id="_4_Comment" /&gt;
-      &lt;property id="_4_TaskName" /&gt;
-      &lt;property id="_4_Priority" /&gt;
-      &lt;property id="_4_Content" /&gt;
-      &lt;property id="_4_Skippable" /&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_4_CommentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;You need to perform an evaluation for #{employee}&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_4_CommentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_4_Comment&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_4_CommentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_4_SkippableInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_4_TaskNameInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_4_SkippableInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_4_TaskName&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_4_TaskNameInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_4_TaskNameInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_4_PriorityInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_4_TaskNameInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_4_Priority&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_4_PriorityInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_4_ContentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_4_ContentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_4_Content&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_4_ContentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_4_PriorityInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_4_SkippableInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_4_PriorityInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_4_Skippable&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_4_SkippableInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
-      &lt;potentialOwner resourceRef="tns:Actor" &gt;
+      &lt;potentialOwner&gt;
         &lt;resourceAssignmentExpression&gt;
           &lt;formalExpression&gt;mary&lt;/formalExpression&gt;
         &lt;/resourceAssignmentExpression&gt;
@@ -244,82 +231,72 @@
     &lt;userTask id="_5" name="Project Manager Evaluation" g:x="352" g:y="16" g:width="225" g:height="48" &gt;
       &lt;ioSpecification&gt;
         &lt;dataInput id="_5_CommentInput" name="Comment" /&gt;
+        &lt;dataInput id="_5_SkippableInput" name="Skippable" /&gt;
         &lt;dataInput id="_5_TaskNameInput" name="TaskName" /&gt;
-        &lt;dataInput id="_5_PriorityInput" name="Priority" /&gt;
         &lt;dataInput id="_5_ContentInput" name="Content" /&gt;
-        &lt;dataInput id="_5_SkippableInput" name="Skippable" /&gt;
+        &lt;dataInput id="_5_PriorityInput" name="Priority" /&gt;
         &lt;inputSet&gt;
           &lt;dataInputRefs&gt;_5_CommentInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_5_SkippableInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_5_TaskNameInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_5_PriorityInput&lt;/dataInputRefs&gt;
           &lt;dataInputRefs&gt;_5_ContentInput&lt;/dataInputRefs&gt;
-          &lt;dataInputRefs&gt;_5_SkippableInput&lt;/dataInputRefs&gt;
+          &lt;dataInputRefs&gt;_5_PriorityInput&lt;/dataInputRefs&gt;
         &lt;/inputSet&gt;
         &lt;outputSet&gt;
         &lt;/outputSet&gt;
       &lt;/ioSpecification&gt;
-      &lt;property id="_5_Comment" /&gt;
-      &lt;property id="_5_TaskName" /&gt;
-      &lt;property id="_5_Priority" /&gt;
-      &lt;property id="_5_Content" /&gt;
-      &lt;property id="_5_Skippable" /&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_5_CommentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;You need to perform an evaluation for #{employee}&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_5_CommentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_5_Comment&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_5_CommentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_5_SkippableInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_5_TaskNameInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_5_SkippableInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_5_TaskName&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_5_TaskNameInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_5_TaskNameInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_5_PriorityInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;Performance Evaluation&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_5_TaskNameInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_5_Priority&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_5_PriorityInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_5_ContentInput&lt;/targetRef&gt;
         &lt;assignment&gt;
           &lt;from xs:type="tFormalExpression"&gt;&lt;/from&gt;
           &lt;to xs:type="tFormalExpression"&gt;_5_ContentInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_5_Content&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_5_ContentInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
       &lt;dataInputAssociation&gt;
+        &lt;targetRef&gt;_5_PriorityInput&lt;/targetRef&gt;
         &lt;assignment&gt;
-          &lt;from xs:type="tFormalExpression"&gt;false&lt;/from&gt;
-          &lt;to xs:type="tFormalExpression"&gt;_5_SkippableInput&lt;/to&gt;
+          &lt;from xs:type="tFormalExpression"&gt;1&lt;/from&gt;
+          &lt;to xs:type="tFormalExpression"&gt;_5_PriorityInput&lt;/to&gt;
         &lt;/assignment&gt;
-        &lt;sourceRef&gt;_5_Skippable&lt;/sourceRef&gt;
-        &lt;targetRef&gt;_5_SkippableInput&lt;/targetRef&gt;
       &lt;/dataInputAssociation&gt;
-      &lt;potentialOwner resourceRef="tns:Actor" &gt;
+      &lt;potentialOwner&gt;
         &lt;resourceAssignmentExpression&gt;
           &lt;formalExpression&gt;john&lt;/formalExpression&gt;
         &lt;/resourceAssignmentExpression&gt;
       &lt;/potentialOwner&gt;
     &lt;/userTask&gt;
-    &lt;parallelGateway id="_6" name="Converge" g:x="603" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" /&gt;
-    &lt;endEvent id="_7" name="EndProcess" g:x="683" g:y="56" g:width="48" g:height="48" /&gt;
+    &lt;parallelGateway id="_6" name="Converge" g:x="603" g:y="55" g:width="49" g:height="49" gatewayDirection="Converging" /&gt;
+    &lt;endEvent id="_7" name="EndProcess" g:x="690" g:y="56" g:width="48" g:height="48" /&gt;
 
     &lt;!-- connections --&gt;
-    &lt;sequenceFlow sourceRef="_2" targetRef="_3" /&gt;
-    &lt;sequenceFlow sourceRef="_3" targetRef="_4" g:bendpoints="[295,120]" /&gt;
-    &lt;sequenceFlow sourceRef="_6" targetRef="_7" /&gt;
-    &lt;sequenceFlow sourceRef="_1" targetRef="_2" /&gt;
-    &lt;sequenceFlow sourceRef="_3" targetRef="_5" g:bendpoints="[295,39]" /&gt;
-    &lt;sequenceFlow sourceRef="_5" targetRef="_6" g:bendpoints="[627,40]" /&gt;
-    &lt;sequenceFlow sourceRef="_4" targetRef="_6" g:bendpoints="[627,121]" /&gt;
+    &lt;sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" /&gt;
+    &lt;sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" /&gt;
+    &lt;sequenceFlow id="_3-_4" sourceRef="_3" targetRef="_4" g:bendpoints="[295,120]" /&gt;
+    &lt;sequenceFlow id="_3-_5" sourceRef="_3" targetRef="_5" g:bendpoints="[295,39]" /&gt;
+    &lt;sequenceFlow id="_5-_6" sourceRef="_5" targetRef="_6" g:bendpoints="[627,40]" /&gt;
+    &lt;sequenceFlow id="_4-_6" sourceRef="_4" targetRef="_6" g:bendpoints="[627,121]" /&gt;
+    &lt;sequenceFlow id="_6-_7" sourceRef="_6" targetRef="_7" /&gt;
 
   &lt;/process&gt;
 
@@ -329,21 +306,9 @@
 
   <programlisting>
 private static KnowledgeBase readKnowledgeBase() throws Exception {
-  KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
-  ((PackageBuilderConfiguration) conf).initSemanticModules();
-  ((PackageBuilderConfiguration) conf).loadSemanticModule("BPMN2SemanticModule.conf");
-  KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
-  kbuilder.add(ResourceFactory.newClassPathResource("sample.bpmn"), ResourceType.DRF);
-  KnowledgeBuilderErrors errors = kbuilder.getErrors();
-  if (errors.size() &gt; 0) {
-    for (KnowledgeBuilderError error: errors) {
-      System.err.println(error);
-    }
-    throw new IllegalArgumentException("Could not parse knowledge.");
-  }
-  KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-  kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-  return kbase;
+  KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+  kbuilder.add(ResourceFactory.newClassPathResource("sample.bpmn"), ResourceType.BPMN2);
+  return kbuilder.newKnowledgeBase();
 }</programlisting>
 
   <para> ... and how to execute this process.</para>
@@ -494,22 +459,22 @@
       <tbody>
         <row>
           <entry> - rule trigger</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
         <row>
           <entry> - signal trigger</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
         <row>
           <entry> - parameter mapping</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
@@ -627,8 +592,8 @@
       <tbody>
         <row>
           <entry> - OR</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
@@ -830,8 +795,8 @@
       <tbody>
         <row>
           <entry>9. WorkItem Node</entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check_orange.gif"/></imageobject></mediaobject></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
-          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
@@ -921,8 +886,8 @@
       <tbody>
         <row>
           <entry> - swimlane</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
@@ -963,8 +928,8 @@
       <tbody>
         <row>
           <entry> - variables</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
@@ -998,15 +963,15 @@
       <tbody>
         <row>
           <entry>13. ForEach Node</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>
         <row>
           <entry> - bind to variable</entry>
-          <entry></entry>
           <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
+          <entry><mediaobject><imageobject><imagedata align="center" format="GIF" role="" fileref="images/Chapter-BPMN2/check.gif"/></imageobject></mediaobject></entry>
         </row>
       </tbody>
       <tbody>

Modified: labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/bpmn2/editor/BPMNModelEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/bpmn2/editor/BPMNModelEditor.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/flow/bpmn2/editor/BPMNModelEditor.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -24,7 +24,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.drools.bpmn2.xml.BPMN2SemanticModule;
 import org.drools.bpmn2.xml.BPMNDISemanticModule;
 import org.drools.bpmn2.xml.BPMNSemanticModule;
 import org.drools.bpmn2.xml.XmlBPMNProcessDumper;
@@ -181,7 +180,6 @@
     		InputStreamReader isr = new InputStreamReader(is);
     		SemanticModules semanticModules = new SemanticModules();
     		semanticModules.addSemanticModule(new BPMNSemanticModule());
-            semanticModules.addSemanticModule(new BPMN2SemanticModule());
             semanticModules.addSemanticModule(new BPMNDISemanticModule());
     		XmlProcessReader xmlReader = new XmlProcessReader(semanticModules);
     		

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/contenthandler/BPMN2ProcessHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -21,10 +21,11 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 
-import org.drools.bpmn2.xml.BPMN2SemanticModule;
+import org.drools.bpmn2.xml.BPMNSemanticModule;
 import org.drools.bpmn2.xml.XmlBPMNProcessDumper;
 import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.compiler.xml.XmlProcessReader;
 import org.drools.guvnor.client.rpc.RuleAsset;
 import org.drools.guvnor.client.rpc.RuleFlowContentModel;
 import org.drools.guvnor.server.builder.BRMSPackageBuilder;
@@ -33,7 +34,6 @@
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
 import org.drools.ruleflow.core.RuleFlowProcess;
-import org.drools.compiler.xml.XmlProcessReader;
 
 import com.google.gwt.user.client.rpc.SerializableException;
 
@@ -58,7 +58,7 @@
             InputStreamReader reader = new InputStreamReader( is );
             PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
             configuration.initSemanticModules();
-            configuration.addSemanticModule( new BPMN2SemanticModule() );
+            configuration.addSemanticModule( new BPMNSemanticModule() );
             XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules() );
             try {
                 process = (RuleFlowProcess) xmlReader.read( reader );

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/JPASignalManager.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import javax.persistence.EntityManager;
+import javax.persistence.FlushModeType;
 import javax.persistence.Query;
 
 import org.drools.WorkingMemory;
@@ -48,6 +49,7 @@
         EntityManager em = (EntityManager) getWorkingMemory().getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
         
         Query processInstancesForEvent = em.createNamedQuery( "ProcessInstancesWaitingForEvent" );
+        processInstancesForEvent.setFlushMode(FlushModeType.COMMIT);
         processInstancesForEvent.setParameter( "type",
                                                type );
         List<Long> list = (List<Long>) processInstancesForEvent.getResultList();

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/META-INF/persistence.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/resources/META-INF/persistence.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -11,7 +11,6 @@
         <jta-data-source>jdbc/testDS1</jta-data-source>        
         <class>org.drools.persistence.session.SessionInfo</class>
     <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>
-    <class>org.drools.persistence.processinstance.EventType</class>
     <class>org.drools.persistence.session.MyEntity</class>
     <class>org.drools.persistence.session.MyEntityMethods</class>
     <class>org.drools.persistence.session.MyEntityOnlyFields</class>

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Error.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Error.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Error.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,25 @@
+package org.drools.bpmn2.core;
+
+import java.io.Serializable;
+
+public class Error implements Serializable {
+    
+	private static final long serialVersionUID = 4L;
+	
+    private String id;
+    private String errorCode;
+    
+    public Error(String id, String errorCode) {
+        this.id = id;
+        this.errorCode = errorCode;
+    }
+    
+    public String getId() {
+        return id;
+    }
+
+    public String getErrorCode() {
+        return errorCode;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Escalation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Escalation.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/core/Escalation.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,25 @@
+package org.drools.bpmn2.core;
+
+import java.io.Serializable;
+
+public class Escalation implements Serializable {
+    
+	private static final long serialVersionUID = 4L;
+	
+    private String id;
+    private String escalationCode;
+    
+    public Escalation(String id, String escalationCode) {
+        this.id = id;
+        this.escalationCode = escalationCode;
+    }
+    
+    public String getId() {
+        return id;
+    }
+
+    public String getEscalationCode() {
+        return escalationCode;
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/handler/ReceiveTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/handler/ReceiveTaskHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/handler/ReceiveTaskHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -10,21 +10,25 @@
 
 public class ReceiveTaskHandler implements WorkItemHandler {
     
-    // TODO: use correlation instead of message type
+    // TODO: use correlation instead of message id
     private Map<String, Long> waiting = new HashMap<String, Long>();
     private KnowledgeRuntime ksession;
     
     public ReceiveTaskHandler(KnowledgeRuntime ksession) {
         this.ksession = ksession;
     }
+    
+    public void setKnowledgeRuntime(KnowledgeRuntime ksession) {
+    	this.ksession = ksession;
+    }
 
     public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
-        String messageType = (String) workItem.getParameter("MessageType");
-        waiting.put(messageType, workItem.getId());
+        String messageId = (String) workItem.getParameter("MessageId");
+        waiting.put(messageId, workItem.getId());
     }
     
-    public void messageReceived(String messageType, Object message) {
-        Long workItemId = waiting.get(messageType);
+    public void messageReceived(String messageId, Object message) {
+        Long workItemId = waiting.get(messageId);
         if (workItemId == null) {
             return;
         }
@@ -34,7 +38,8 @@
     }
 
     public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
-        // Do nothing, cannot be aborted
+    	String messageId = (String) workItem.getParameter("MessageId");
+        waiting.remove(messageId);
     }
 
 }

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AbstractNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -45,6 +45,7 @@
         parser.startElementBuilder( localName, attrs );
         final Node node = createNode(attrs);
         String id = attrs.getValue("id");
+        node.setMetaData("UniqueId", id);
         try {
             // remove starting _
             id = id.substring(1);
@@ -63,7 +64,6 @@
                 }
             }
             ((org.drools.workflow.core.Node) node).setId(++newId);
-            node.setMetaData("UniqueId", attrs.getValue("id"));
         }
         return node;
     }

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ActionNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -77,8 +77,7 @@
                 xmlDump.append(">" + EOL);
                 s = s.substring(327);
                 String type = s.substring(0, s.indexOf("\""));
-                s = s.substring(s.indexOf(",") + 2);
-                xmlDump.append("      <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
+                xmlDump.append("      <escalationEventDefinition escalationRef=\"" + XmlDumper.replaceIllegalChars(type) + "\"/>" + EOL);
                 endNode("intermediateThrowEvent", xmlDump);
             } else if ("IntermediateThrowEvent-None".equals(actionNode.getMetaData("NodeType"))) {
             	writeNode("intermediateThrowEvent", actionNode, xmlDump, includeMeta);

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AdHocSubProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AdHocSubProcessHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/AdHocSubProcessHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,81 +1,81 @@
-package org.drools.bpmn2.xml;
-
-import java.util.List;
-
-import org.drools.bpmn2.core.SequenceFlow;
-import org.drools.definition.process.Connection;
-import org.drools.process.core.context.variable.VariableScope;
-import org.drools.workflow.core.Node;
-import org.drools.workflow.core.node.DynamicNode;
-import org.drools.xml.ExtensibleXmlParser;
-import org.w3c.dom.Element;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-public class AdHocSubProcessHandler extends CompositeContextNodeHandler {
-    
-    protected Node createNode(Attributes attrs) {
-        DynamicNode result = new DynamicNode();
-        VariableScope variableScope = new VariableScope();
-        result.addContext(variableScope);
-        result.setDefaultContext(variableScope);
-        return result;
-    }
-    
-    @SuppressWarnings("unchecked")
-	public Class generateNodeFor() {
-        return DynamicNode.class;
-    }
-    
-    @SuppressWarnings("unchecked")
-	protected void handleNode(final Node node, final Element element, final String uri, 
-            final String localName, final ExtensibleXmlParser parser) throws SAXException {
-    	super.handleNode(node, element, uri, localName, parser);
-    	DynamicNode dynamicNode = (DynamicNode) node;
-    	String cancelRemainingInstances = element.getAttribute("cancelRemainingInstances");
-    	if ("false".equals(cancelRemainingInstances)) {
-    		dynamicNode.setCancelRemainingInstances(false);
-    	}
-    	org.w3c.dom.Node xmlNode = element.getFirstChild();
-        while (xmlNode != null) {
-        	String nodeName = xmlNode.getNodeName();
-        	if ("completionCondition".equals(nodeName)) {
-        		String expression = xmlNode.getTextContent();
-        		if ("getActivityInstanceAttribute(\"numberOfActiveInstances\") == 0".equals(expression)) {
-        			dynamicNode.setAutoComplete(true);
-        		}
-        	}
-        	xmlNode = xmlNode.getNextSibling();
-        }
-    	List<SequenceFlow> connections = (List<SequenceFlow>)
-			dynamicNode.getMetaData(ProcessHandler.CONNECTIONS);
-    	ProcessHandler.linkConnections(dynamicNode, connections);
-    	ProcessHandler.linkBoundaryEvents(dynamicNode);
-    }
-    
-    public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
-        DynamicNode dynamicNode = (DynamicNode) node;
-		writeNode("adHocSubProcess", dynamicNode, xmlDump, includeMeta);
-		if (!dynamicNode.isCancelRemainingInstances()) {
-			xmlDump.append(" cancelRemainingInstances=\"false\"");
-		}
-		xmlDump.append(" ordering=\"parallel\" >" + EOL);
-		// nodes
-		List<Node> subNodes = getSubNodes(dynamicNode);
-    	xmlDump.append("    <!-- nodes -->" + EOL);
-        for (Node subNode: subNodes) {
-    		XmlBPMNProcessDumper.INSTANCE.visitNode(subNode, xmlDump, includeMeta);
-        }
-        // connections
-        List<Connection> connections = getSubConnections(dynamicNode);
-    	xmlDump.append("    <!-- connections -->" + EOL);
-        for (Connection connection: connections) {
-        	XmlBPMNProcessDumper.INSTANCE.visitConnection(connection, xmlDump, includeMeta);
-        }
-        if (dynamicNode.isAutoComplete()) {
-        	xmlDump.append("    <completionCondition xs:type=\"tFormalExpression\">getActivityInstanceAttribute(\"numberOfActiveInstances\") == 0</completionCondition>" + EOL);
-        }
-		endNode("adHocSubProcess", xmlDump);
-	}
-
+package org.drools.bpmn2.xml;
+
+import java.util.List;
+
+import org.drools.bpmn2.core.SequenceFlow;
+import org.drools.definition.process.Connection;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.DynamicNode;
+import org.drools.xml.ExtensibleXmlParser;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class AdHocSubProcessHandler extends CompositeContextNodeHandler {
+    
+    protected Node createNode(Attributes attrs) {
+        DynamicNode result = new DynamicNode();
+        VariableScope variableScope = new VariableScope();
+        result.addContext(variableScope);
+        result.setDefaultContext(variableScope);
+        return result;
+    }
+    
+    @SuppressWarnings("unchecked")
+	public Class generateNodeFor() {
+        return DynamicNode.class;
+    }
+    
+    @SuppressWarnings("unchecked")
+	protected void handleNode(final Node node, final Element element, final String uri, 
+            final String localName, final ExtensibleXmlParser parser) throws SAXException {
+    	super.handleNode(node, element, uri, localName, parser);
+    	DynamicNode dynamicNode = (DynamicNode) node;
+    	String cancelRemainingInstances = element.getAttribute("cancelRemainingInstances");
+    	if ("false".equals(cancelRemainingInstances)) {
+    		dynamicNode.setCancelRemainingInstances(false);
+    	}
+    	org.w3c.dom.Node xmlNode = element.getFirstChild();
+        while (xmlNode != null) {
+        	String nodeName = xmlNode.getNodeName();
+        	if ("completionCondition".equals(nodeName)) {
+        		String expression = xmlNode.getTextContent();
+        		if ("getActivityInstanceAttribute(\"numberOfActiveInstances\") == 0".equals(expression)) {
+        			dynamicNode.setAutoComplete(true);
+        		}
+        	}
+        	xmlNode = xmlNode.getNextSibling();
+        }
+    	List<SequenceFlow> connections = (List<SequenceFlow>)
+			dynamicNode.getMetaData(ProcessHandler.CONNECTIONS);
+    	ProcessHandler.linkConnections(dynamicNode, connections);
+    	ProcessHandler.linkBoundaryEvents(dynamicNode);
+    }
+    
+    public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+        DynamicNode dynamicNode = (DynamicNode) node;
+		writeNode("adHocSubProcess", dynamicNode, xmlDump, includeMeta);
+		if (!dynamicNode.isCancelRemainingInstances()) {
+			xmlDump.append(" cancelRemainingInstances=\"false\"");
+		}
+		xmlDump.append(" ordering=\"Parallel\" >" + EOL);
+		// nodes
+		List<Node> subNodes = getSubNodes(dynamicNode);
+    	xmlDump.append("    <!-- nodes -->" + EOL);
+        for (Node subNode: subNodes) {
+    		XmlBPMNProcessDumper.INSTANCE.visitNode(subNode, xmlDump, includeMeta);
+        }
+        // connections
+        List<Connection> connections = getSubConnections(dynamicNode);
+    	xmlDump.append("    <!-- connections -->" + EOL);
+        for (Connection connection: connections) {
+        	XmlBPMNProcessDumper.INSTANCE.visitConnection(connection, xmlDump, includeMeta);
+        }
+        if (dynamicNode.isAutoComplete()) {
+        	xmlDump.append("    <completionCondition xs:type=\"tFormalExpression\">getActivityInstanceAttribute(\"numberOfActiveInstances\") == 0</completionCondition>" + EOL);
+        }
+		endNode("adHocSubProcess", xmlDump);
+	}
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNDISemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNDISemanticModule.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNDISemanticModule.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,22 +1,18 @@
 package org.drools.bpmn2.xml;
 
-import org.drools.bpmn2.xml.di.ActivityShapeHandler;
-import org.drools.bpmn2.xml.di.EventShapeHandler;
-import org.drools.bpmn2.xml.di.GatewayShapeHandler;
-import org.drools.bpmn2.xml.di.ProcessDiagramHandler;
-import org.drools.bpmn2.xml.di.SequenceFlowConnectorHandler;
+import org.drools.bpmn2.xml.di.BPMNEdgeHandler;
+import org.drools.bpmn2.xml.di.BPMNPlaneHandler;
+import org.drools.bpmn2.xml.di.BPMNShapeHandler;
 import org.drools.xml.DefaultSemanticModule;
 
 public class BPMNDISemanticModule extends DefaultSemanticModule {
 	
 	public BPMNDISemanticModule() {
-		super("http://bpmndi.org");
+		super("http://www.omg.org/spec/BPMN/20100524/BPMNDI");
 		
-		addHandler("processDiagram", new ProcessDiagramHandler());
-		addHandler("eventShape", new EventShapeHandler());
-        addHandler("gatewayShape", new GatewayShapeHandler());
-        addHandler("activityShape", new ActivityShapeHandler());
-        addHandler("sequenceFlowConnector", new SequenceFlowConnectorHandler());
+		addHandler("BPMNPlane", new BPMNPlaneHandler());
+		addHandler("BPMNShape", new BPMNShapeHandler());
+		addHandler("BPMNEdge", new BPMNEdgeHandler());
 	}
 
 }

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BPMNSemanticModule.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -15,7 +15,7 @@
 
 public class BPMNSemanticModule extends DefaultSemanticModule {
 	
-	public static final String BPMN2_URI = "http://schema.omg.org/spec/BPMN/2.0";
+	public static final String BPMN2_URI = "http://www.omg.org/spec/BPMN/20100524/MODEL";
 	
 	public BPMNSemanticModule() {
 		super(BPMN2_URI);
@@ -32,6 +32,7 @@
         addHandler("exclusiveGateway", new ExclusiveGatewayHandler());
         addHandler("inclusiveGateway", new InclusiveGatewayHandler());
         addHandler("parallelGateway", new ParallelGatewayHandler());
+		addHandler("eventBasedGateway", new EventBasedGatewayHandler());
         addHandler("complexGateway", new ComplexGatewayHandler());
         addHandler("scriptTask", new ScriptTaskHandler());
         addHandler("task", new TaskHandler());
@@ -57,6 +58,8 @@
         addHandler("interface", new InterfaceHandler());
         addHandler("operation", new OperationHandler());
         addHandler("inMessageRef", new InMessageRefHandler());
+        addHandler("escalation", new EscalationHandler());
+        addHandler("error", new ErrorHandler());
         
         handlersByClass.put(Split.class, new SplitHandler());
         handlersByClass.put(Join.class, new JoinHandler());

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BoundaryEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BoundaryEventHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/BoundaryEventHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -2,7 +2,11 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
+import org.drools.bpmn2.core.Error;
+import org.drools.bpmn2.core.Escalation;
+import org.drools.compiler.xml.ProcessBuildData;
 import org.drools.process.core.event.EventFilter;
 import org.drools.process.core.event.EventTypeFilter;
 import org.drools.workflow.core.Node;
@@ -63,7 +67,8 @@
         return node;
     }
     
-    protected void handleEscalationNode(final Node node, final Element element, final String uri, 
+    @SuppressWarnings("unchecked")
+	protected void handleEscalationNode(final Node node, final Element element, final String uri, 
             final String localName, final ExtensibleXmlParser parser, final String attachedTo,
             final boolean cancelActivity) throws SAXException {
         super.handleNode(node, element, uri, localName, parser);
@@ -74,10 +79,20 @@
         while (xmlNode != null) {
             String nodeName = xmlNode.getNodeName();
             if ("escalationEventDefinition".equals(nodeName)) {
-                String type = ((Element) xmlNode).getAttribute("escalationCode");
-                if (type != null && type.trim().length() > 0) {
+                String escalationRef = ((Element) xmlNode).getAttribute("escalationRef");
+                if (escalationRef != null && escalationRef.trim().length() > 0) {
+                    Map<String, Escalation> escalations = (Map<String, Escalation>)
+		                ((ProcessBuildData) parser.getData()).getMetaData("Escalations");
+		            if (escalations == null) {
+		                throw new IllegalArgumentException("No escalations found");
+		            }
+		            Escalation escalation = escalations.get(escalationRef);
+		            if (escalation == null) {
+		                throw new IllegalArgumentException("Could not find escalation " + escalationRef);
+		            }
                     List<EventFilter> eventFilters = new ArrayList<EventFilter>();
                     EventTypeFilter eventFilter = new EventTypeFilter();
+                    String type = escalation.getEscalationCode();
                     eventFilter.setType("Escalation-" + attachedTo + "-" + type);
                     eventFilters.add(eventFilter);
                     eventNode.setEventFilters(eventFilters);
@@ -88,7 +103,8 @@
         }
     }
     
-    protected void handleErrorNode(final Node node, final Element element, final String uri, 
+    @SuppressWarnings("unchecked")
+	protected void handleErrorNode(final Node node, final Element element, final String uri, 
             final String localName, final ExtensibleXmlParser parser, final String attachedTo,
             final boolean cancelActivity) throws SAXException {
         super.handleNode(node, element, uri, localName, parser);
@@ -98,8 +114,18 @@
         while (xmlNode != null) {
             String nodeName = xmlNode.getNodeName();
             if ("errorEventDefinition".equals(nodeName)) {
-                String type = ((Element) xmlNode).getAttribute("errorCode");
-                if (type != null && type.trim().length() > 0) {
+                String errorRef = ((Element) xmlNode).getAttribute("errorRef");
+                if (errorRef != null && errorRef.trim().length() > 0) {
+                	Map<String, Error> errors = (Map<String, Error>)
+		                ((ProcessBuildData) parser.getData()).getMetaData("Errors");
+		            if (errors == null) {
+		                throw new IllegalArgumentException("No errors found");
+		            }
+		            Error error = errors.get(errorRef);
+		            if (error == null) {
+		                throw new IllegalArgumentException("Could not find error " + errorRef);
+		            }
+		            String type = error.getErrorCode();
                     List<EventFilter> eventFilters = new ArrayList<EventFilter>();
                     EventTypeFilter eventFilter = new EventTypeFilter();
                     eventFilter.setType("Error-" + attachedTo + "-" + type);

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EndEventHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -4,6 +4,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.drools.bpmn2.core.Error;
+import org.drools.bpmn2.core.Escalation;
 import org.drools.bpmn2.core.Message;
 import org.drools.compiler.xml.ProcessBuildData;
 import org.drools.workflow.core.DroolsAction;
@@ -152,7 +154,8 @@
         }
     }
 
-    public void handleErrorNode(final Node node, final Element element, final String uri, 
+    @SuppressWarnings("unchecked")
+	public void handleErrorNode(final Node node, final Element element, final String uri, 
             final String localName, final ExtensibleXmlParser parser) throws SAXException {
         FaultNode faultNode = (FaultNode) node;
         org.w3c.dom.Node xmlNode = element.getFirstChild();
@@ -161,22 +164,27 @@
             if ("dataInputAssociation".equals(nodeName)) {
                 readFaultDataInputAssociation(xmlNode, faultNode);
             } else if ("errorEventDefinition".equals(nodeName)) {
-                String faultName = ((Element) xmlNode).getAttribute("errorCode");
-                if (faultName != null && faultName.trim().length() > 0) {
-                    faultNode.setFaultName(faultName);
+                String errorRef = ((Element) xmlNode).getAttribute("errorRef");
+                if (errorRef != null && errorRef.trim().length() > 0) {
+                    Map<String, Error> errors = (Map<String, Error>)
+		                ((ProcessBuildData) parser.getData()).getMetaData("Errors");
+		            if (errors == null) {
+		                throw new IllegalArgumentException("No errors found");
+		            }
+		            Error error = errors.get(errorRef);
+		            if (error == null) {
+		                throw new IllegalArgumentException("Could not find error " + errorRef);
+		            }
+		            faultNode.setFaultName(error.getErrorCode());
+	                faultNode.setTerminateParent(true);
                 }
-                faultNode.setTerminateParent(true);
-            } else if ("escalationEventDefinition".equals(nodeName)) {
-                String faultName = ((Element) xmlNode).getAttribute("escalationCode");
-                if (faultName != null && faultName.trim().length() > 0) {
-                    faultNode.setFaultName(faultName);
-                }
-            } 
+            }
             xmlNode = xmlNode.getNextSibling();
         }
     }
     
-    public void handleEscalationNode(final Node node, final Element element, final String uri, 
+    @SuppressWarnings("unchecked")
+	public void handleEscalationNode(final Node node, final Element element, final String uri, 
             final String localName, final ExtensibleXmlParser parser) throws SAXException {
         FaultNode faultNode = (FaultNode) node;
         org.w3c.dom.Node xmlNode = element.getFirstChild();
@@ -185,9 +193,18 @@
             if ("dataInputAssociation".equals(nodeName)) {
                 readFaultDataInputAssociation(xmlNode, faultNode);
             } else if ("escalationEventDefinition".equals(nodeName)) {
-                String faultName = ((Element) xmlNode).getAttribute("escalationCode");
-                if (faultName != null && faultName.trim().length() > 0) {
-                    faultNode.setFaultName(faultName);
+                String escalationRef = ((Element) xmlNode).getAttribute("escalationRef");
+                if (escalationRef != null && escalationRef.trim().length() > 0) {
+                    Map<String, Escalation> escalations = (Map<String, Escalation>)
+		                ((ProcessBuildData) parser.getData()).getMetaData("Escalations");
+		            if (escalations == null) {
+		                throw new IllegalArgumentException("No escalations found");
+		            }
+		            Escalation escalation = escalations.get(escalationRef);
+		            if (escalation == null) {
+		                throw new IllegalArgumentException("Could not find escalation " + escalationRef);
+		            }
+		            faultNode.setFaultName(escalation.getEscalationCode());
                 }
             } 
             xmlNode = xmlNode.getNextSibling();

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ErrorHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ErrorHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ErrorHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,70 @@
+package org.drools.bpmn2.xml;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Error;
+import org.drools.bpmn2.core.Escalation;
+import org.drools.bpmn2.core.Interface;
+import org.drools.bpmn2.core.ItemDefinition;
+import org.drools.bpmn2.core.Message;
+import org.drools.compiler.xml.ProcessBuildData;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class ErrorHandler extends BaseAbstractHandler implements Handler {
+	
+	@SuppressWarnings("unchecked")
+	public ErrorHandler() {
+		if ((this.validParents == null) && (this.validPeers == null)) {
+			this.validParents = new HashSet();
+			this.validParents.add(Definitions.class);
+
+			this.validPeers = new HashSet();
+			this.validPeers.add(null);
+            this.validPeers.add(ItemDefinition.class);
+            this.validPeers.add(Message.class);
+            this.validPeers.add(Interface.class);
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
+
+			this.allowNesting = false;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+    public Object start(final String uri, final String localName,
+			            final Attributes attrs, final ExtensibleXmlParser parser)
+			throws SAXException {
+		parser.startElementBuilder(localName, attrs);
+
+		String id = attrs.getValue("id");
+		String errorCode = attrs.getValue("errorCode");
+
+		ProcessBuildData buildData = (ProcessBuildData) parser.getData();
+		Map<String, Error> errors = (Map<String, Error>) buildData.getMetaData("Errors");
+        if (errors == null) {
+        	errors = new HashMap<String, Error>();
+            buildData.setMetaData("Errors", errors);
+        }
+        Error e = new Error(id, errorCode); 
+        errors.put(id, e);
+		return e;
+	}
+
+	public Object end(final String uri, final String localName,
+			          final ExtensibleXmlParser parser) throws SAXException {
+		parser.endElementBuilder();
+		return parser.getCurrent();
+	}
+
+	public Class<?> generateNodeFor() {
+		return Error.class;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EscalationHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EscalationHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EscalationHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,69 @@
+package org.drools.bpmn2.xml;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Escalation;
+import org.drools.bpmn2.core.Interface;
+import org.drools.bpmn2.core.ItemDefinition;
+import org.drools.bpmn2.core.Message;
+import org.drools.compiler.xml.ProcessBuildData;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class EscalationHandler extends BaseAbstractHandler implements Handler {
+	
+	@SuppressWarnings("unchecked")
+	public EscalationHandler() {
+		if ((this.validParents == null) && (this.validPeers == null)) {
+			this.validParents = new HashSet();
+			this.validParents.add(Definitions.class);
+
+			this.validPeers = new HashSet();
+			this.validPeers.add(null);
+            this.validPeers.add(ItemDefinition.class);
+            this.validPeers.add(Message.class);
+            this.validPeers.add(Interface.class);
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
+
+			this.allowNesting = false;
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+    public Object start(final String uri, final String localName,
+			            final Attributes attrs, final ExtensibleXmlParser parser)
+			throws SAXException {
+		parser.startElementBuilder(localName, attrs);
+
+		String id = attrs.getValue("id");
+		String escalationCode = attrs.getValue("escalationCode");
+
+		ProcessBuildData buildData = (ProcessBuildData) parser.getData();
+		Map<String, Escalation> escalations = (Map<String, Escalation>) buildData.getMetaData("Escalations");
+        if (escalations == null) {
+        	escalations = new HashMap<String, Escalation>();
+            buildData.setMetaData("Escalations", escalations);
+        }
+        Escalation e = new Escalation(id, escalationCode); 
+        escalations.put(id, e);
+		return e;
+	}
+
+	public Object end(final String uri, final String localName,
+			          final ExtensibleXmlParser parser) throws SAXException {
+		parser.endElementBuilder();
+		return parser.getCurrent();
+	}
+
+	public Class<?> generateNodeFor() {
+		return Escalation.class;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventBasedGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventBasedGatewayHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventBasedGatewayHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,31 @@
+package org.drools.bpmn2.xml;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.Split;
+import org.xml.sax.Attributes;
+
+public class EventBasedGatewayHandler extends AbstractNodeHandler {
+    
+    protected Node createNode(Attributes attrs) {
+        final String type = attrs.getValue("gatewayDirection");
+        if ("Diverging".equals(type)) {
+        	Split split = new Split();
+        	split.setType(Split.TYPE_XAND);
+        	split.setMetaData("EventBased", "true");
+        	return split;
+        } else {
+        	throw new IllegalArgumentException(
+    			"Unknown gateway direction: " + type);
+        }
+    }
+    
+    @SuppressWarnings("unchecked")
+	public Class generateNodeFor() {
+        return Node.class;
+    }
+
+	public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
+		throw new IllegalArgumentException("Writing out should be handled by split / join handler");
+	}
+
+}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/EventNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -55,14 +55,14 @@
     		        xmlDump.append("cancelActivity=\"false\" ");
     		    }
     		    xmlDump.append(">" + EOL);
-    		    xmlDump.append("      <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
+    		    xmlDump.append("      <escalationEventDefinition escalationRef=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
     		    endNode("boundaryEvent", xmlDump);
 		    } else if (type.startsWith("Error-")) {
                 type = type.substring(attachedTo.length() + 7);
                 writeNode("boundaryEvent", eventNode, xmlDump, includeMeta);
                 xmlDump.append("attachedToRef=\"" + attachedTo + "\" ");
                 xmlDump.append(">" + EOL);
-                xmlDump.append("      <errorEventDefinition errorCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
+                xmlDump.append("      <errorEventDefinition errorRef=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
                 endNode("boundaryEvent", xmlDump);
             } else if (type.startsWith("Timer-")) {
                 type = type.substring(attachedTo.length() + 7);

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ExclusiveGatewayHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -9,11 +9,11 @@
     
     protected Node createNode(Attributes attrs) {
         final String type = attrs.getValue("gatewayDirection");
-        if ("converging".equals(type)) {
+        if ("Converging".equals(type)) {
         	Join join = new Join();
         	join.setType(Join.TYPE_XOR);
         	return join;
-        } else if ("diverging".equals(type)) {
+        } else if ("Diverging".equals(type)) {
         	Split split = new Split();
         	split.setType(Split.TYPE_XOR);
         	String isDefault = attrs.getValue("default");

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/FaultNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -32,9 +32,9 @@
             xmlDump.append("      </inputSet>" + EOL);
         }
         if (faultNode.isTerminateParent()) {
-            xmlDump.append("      <errorEventDefinition errorCode=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
+            xmlDump.append("      <errorEventDefinition errorRef=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
         } else {
-            xmlDump.append("      <escalationEventDefinition escalationCode=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
+            xmlDump.append("      <escalationEventDefinition escalationRef=\"" + XmlDumper.replaceIllegalChars(faultNode.getFaultName()) + "\" />" + EOL);
         }
 		endNode("endEvent", xmlDump);
 	}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ForEachNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -27,11 +27,14 @@
 		xmlDump.append(" >" + EOL);
 		// ioSpecification and dataInputAssociation 
         xmlDump.append(
-            "      <ioSpecification>" + EOL +
-            "        <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input\" name=\"MultiInstanceInput\" />" + EOL +
-            "        <inputSet>" + EOL +
-            "          <dataInputRefs>" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</dataInputRefs>" + EOL +
-            "        </inputSet>" + EOL +
+            "      <ioSpecification>" + EOL);
+        String parameterName = forEachNode.getVariableName();
+        if (parameterName != null) {
+        	xmlDump.append(
+    			"        <dataInput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input\" name=\"MultiInstanceInput\" />" + EOL);
+        }
+        xmlDump.append(
+    		"        <inputSet/>" + EOL +
             "        <outputSet/>" + EOL +
             "      </ioSpecification>" + EOL);
         String collectionExpression = forEachNode.getCollectionExpression();
@@ -46,7 +49,6 @@
         xmlDump.append(
     		"      <multiInstanceLoopCharacteristics>" + EOL +
             "        <loopDataInputRef>" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_input</loopDataInputRef>" + EOL);
-        String parameterName = forEachNode.getVariableName();
         if (parameterName != null) {
         	xmlDump.append("        <inputDataItem id=\"" + XmlDumper.replaceIllegalChars(parameterName) + "\" itemSubjectRef=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\"/>" + EOL);
         }

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InclusiveGatewayHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -8,7 +8,7 @@
     
     protected Node createNode(Attributes attrs) {
         final String type = attrs.getValue("gatewayDirection");
-        if ("diverging".equals(type)) {
+        if ("Diverging".equals(type)) {
         	Split split = new Split();
         	split.setType(Split.TYPE_OR);
         	String isDefault = attrs.getValue("default");

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/InterfaceHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,6 +5,7 @@
 import java.util.List;
 
 import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Escalation;
 import org.drools.bpmn2.core.Interface;
 import org.drools.bpmn2.core.ItemDefinition;
 import org.drools.bpmn2.core.Message;
@@ -28,7 +29,9 @@
             this.validPeers.add(ItemDefinition.class);
             this.validPeers.add(Message.class);
             this.validPeers.add(Interface.class);
-
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
+            
 			this.allowNesting = false;
 		}
 	}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/IntermediateThrowEventHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -2,6 +2,7 @@
 
 import java.util.Map;
 
+import org.drools.bpmn2.core.Escalation;
 import org.drools.bpmn2.core.Message;
 import org.drools.compiler.xml.ProcessBuildData;
 import org.drools.workflow.core.Node;
@@ -114,7 +115,8 @@
         }
     }
     
-    public void handleEscalationNode(final Node node, final Element element, final String uri, 
+    @SuppressWarnings("unchecked")
+	public void handleEscalationNode(final Node node, final Element element, final String uri, 
             final String localName, final ExtensibleXmlParser parser) throws SAXException {
         ActionNode actionNode = (ActionNode) node;
         org.w3c.dom.Node xmlNode = element.getFirstChild();
@@ -123,8 +125,18 @@
             if ("dataInputAssociation".equals(nodeName)) {
                 readDataInputAssociation(xmlNode, actionNode);
             } else if ("escalationEventDefinition".equals(nodeName)) {
-                String faultName = ((Element) xmlNode).getAttribute("escalationCode");
-                if (faultName != null && faultName.trim().length() > 0) {
+            	String escalationRef = ((Element) xmlNode).getAttribute("escalationRef");
+                if (escalationRef != null && escalationRef.trim().length() > 0) {
+                    Map<String, Escalation> escalations = (Map<String, Escalation>)
+		                ((ProcessBuildData) parser.getData()).getMetaData("Escalations");
+		            if (escalations == null) {
+		                throw new IllegalArgumentException("No escalations found");
+		            }
+		            Escalation escalation = escalations.get(escalationRef);
+		            if (escalation == null) {
+		                throw new IllegalArgumentException("Could not find escalation " + escalationRef);
+		            }
+		            String faultName = escalation.getEscalationCode();
                     actionNode.setAction(new DroolsConsequenceAction("java",
                         "org.drools.process.instance.context.exception.ExceptionScopeInstance scopeInstance = (org.drools.process.instance.context.exception.ExceptionScopeInstance) ((org.drools.workflow.instance.NodeInstance) kcontext.getNodeInstance()).resolveContextInstance(org.drools.process.core.context.exception.ExceptionScope.EXCEPTION_SCOPE, \"" + faultName + "\");" + EOL + 
                         "if (scopeInstance != null) {" + EOL + 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ItemDefinitionHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,6 +5,8 @@
 import java.util.Map;
 
 import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Escalation;
+import org.drools.bpmn2.core.Interface;
 import org.drools.bpmn2.core.ItemDefinition;
 import org.drools.bpmn2.core.Message;
 import org.drools.compiler.xml.ProcessBuildData;
@@ -26,6 +28,9 @@
 			this.validPeers.add(null);
             this.validPeers.add(ItemDefinition.class);
             this.validPeers.add(Message.class);
+            this.validPeers.add(Interface.class);
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
 
 			this.allowNesting = false;
 		}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/JoinHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/JoinHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/JoinHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -27,7 +27,7 @@
 			default:
 				writeNode("complexGateway", node, xmlDump, includeMeta);
 		}
-		xmlDump.append("gatewayDirection=\"converging\" ");
+		xmlDump.append("gatewayDirection=\"Converging\" ");
 		endNode(xmlDump);
 	}
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/MessageHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,6 +5,8 @@
 import java.util.Map;
 
 import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Escalation;
+import org.drools.bpmn2.core.Interface;
 import org.drools.bpmn2.core.ItemDefinition;
 import org.drools.bpmn2.core.Message;
 import org.drools.compiler.xml.ProcessBuildData;
@@ -26,7 +28,10 @@
 			this.validPeers.add(null);
             this.validPeers.add(ItemDefinition.class);
             this.validPeers.add(Message.class);
-
+            this.validPeers.add(Interface.class);
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
+            
 			this.allowNesting = false;
 		}
 	}
@@ -38,16 +43,16 @@
 		parser.startElementBuilder(localName, attrs);
 
 		String id = attrs.getValue("id");
-		String structureRef = attrs.getValue("structureRef");
+		String itemRef = attrs.getValue("itemRef");
 		
 		Map<String, ItemDefinition> itemDefinitions = (Map<String, ItemDefinition>)
             ((ProcessBuildData) parser.getData()).getMetaData("ItemDefinitions");
         if (itemDefinitions == null) {
             throw new IllegalArgumentException("No item definitions found");
         }
-        ItemDefinition itemDefinition = itemDefinitions.get(structureRef);
+        ItemDefinition itemDefinition = itemDefinitions.get(itemRef);
         if (itemDefinition == null) {
-            throw new IllegalArgumentException("Could not find itemDefinition " + structureRef);
+            throw new IllegalArgumentException("Could not find itemDefinition " + itemRef);
         }
         
         ProcessBuildData buildData = (ProcessBuildData) parser.getData();

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ParallelGatewayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ParallelGatewayHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ParallelGatewayHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -9,11 +9,11 @@
     
     protected Node createNode(Attributes attrs) {
         final String type = attrs.getValue("gatewayDirection");
-        if ("converging".equals(type)) {
+        if ("Converging".equals(type)) {
         	Join join = new Join();
         	join.setType(Join.TYPE_AND);
         	return join;
-        } else if ("diverging".equals(type)) {
+        } else if ("Diverging".equals(type)) {
         	Split split = new Split();
         	split.setType(Split.TYPE_AND);
         	return split;

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ProcessHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -7,6 +7,8 @@
 import java.util.Map;
 
 import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.core.Error;
+import org.drools.bpmn2.core.Escalation;
 import org.drools.bpmn2.core.Interface;
 import org.drools.bpmn2.core.ItemDefinition;
 import org.drools.bpmn2.core.Lane;
@@ -50,10 +52,12 @@
 			this.validParents.add(Definitions.class);
 
 			this.validPeers = new HashSet();
+			this.validPeers.add(null);
+            this.validPeers.add(ItemDefinition.class);
+            this.validPeers.add(Message.class);
             this.validPeers.add(Interface.class);
-            this.validPeers.add(Message.class);
-            this.validPeers.add(ItemDefinition.class);
-			this.validPeers.add(null);
+            this.validPeers.add(Escalation.class);
+            this.validPeers.add(Error.class);
 
 			this.allowNesting = false;
 		}
@@ -152,6 +156,7 @@
 					source, NodeImpl.CONNECTION_DEFAULT_TYPE, 
 					target, NodeImpl.CONNECTION_DEFAULT_TYPE);
 				result.setMetaData("bendpoints", connection.getBendpoints());
+				result.setMetaData("UniqueId", connection.getId());
 				if (source instanceof Split) {
 					Split split = (Split) source;
 					Constraint constraint = new ConstraintImpl();

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ReceiveTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ReceiveTaskHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/ReceiveTaskHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -37,6 +37,7 @@
         if (message == null) {
             throw new IllegalArgumentException("Could not find message " + messageRef);
         }
+        workItemNode.getWork().setParameter("MessageId", message.getId());
         workItemNode.getWork().setParameter("MessageType", message.getType());
     }
     

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/SplitHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -49,10 +49,13 @@
 					}
 				}
                 break;
+			case Split.TYPE_XAND:
+				writeNode("eventBasedGateway", node, xmlDump, includeMeta);
+				break;
             default:
 				writeNode("complexGateway", node, xmlDump, includeMeta);
 		}
-		xmlDump.append("gatewayDirection=\"diverging\" ");
+		xmlDump.append("gatewayDirection=\"Diverging\" ");
 		endNode(xmlDump);
 	}
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TaskHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/TaskHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -72,14 +72,7 @@
     protected void readDataInputAssociation(org.w3c.dom.Node xmlNode, WorkItemNode workItemNode, Map<String, String> dataInputs) {
 		// sourceRef
 		org.w3c.dom.Node subNode = xmlNode.getFirstChild();
-		if ("assignment".equals(subNode.getNodeName())) {
-			org.w3c.dom.Node subSubNode = subNode.getFirstChild();
-			String from = subSubNode.getTextContent();
-			subNode = subNode.getNextSibling();
-			subNode = subNode.getNextSibling();
-    		String to = subNode.getTextContent();
-    		workItemNode.getWork().setParameter(dataInputs.get(to), from);
-		} else {
+		if ("sourceRef".equals(subNode.getNodeName())) {
     		String from = subNode.getTextContent();
     		// targetRef
     		subNode = subNode.getNextSibling();
@@ -87,6 +80,14 @@
     		workItemNode.addInMapping(
 				dataInputs.get(to),
 				from);
+		} else {
+			// targetRef
+			String to = subNode.getTextContent();
+			// assignment
+			subNode = subNode.getNextSibling();
+    		org.w3c.dom.Node subSubNode = subNode.getFirstChild();
+			String from = subSubNode.getTextContent();
+    		workItemNode.getWork().setParameter(dataInputs.get(to), from);
 		}
     }
     

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/UserTaskHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -66,14 +66,14 @@
 	public void writeNode(Node node, StringBuilder xmlDump, boolean includeMeta) {
 		HumanTaskNode humanTaskNode = (HumanTaskNode) node;
 		writeNode("userTask", humanTaskNode, xmlDump, includeMeta);
-		xmlDump.append("implementation=\"humanTaskWebService\" >" + EOL);
+		xmlDump.append(">" + EOL);
 		writeIO(humanTaskNode, xmlDump);
 		String ownerString = (String) humanTaskNode.getWork().getParameter("ActorId");
 		if (ownerString != null) {
 			String[] owners = ownerString.split(",");
 			for (String owner: owners) {
 				xmlDump.append(
-					"      <potentialOwner resourceRef=\"tns:Actor\" >" + EOL +
+					"      <potentialOwner>" + EOL +
 					"        <resourceAssignmentExpression>" + EOL +
 					"          <formalExpression>" + owner + "</formalExpression>" + EOL +
 					"        </resourceAssignmentExpression>" + EOL +
@@ -115,12 +115,6 @@
 			"        </outputSet>" + EOL);
 		xmlDump.append(
 			"      </ioSpecification>" + EOL);
-		for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
-			if (!"ActorId".equals(entry.getKey()) && entry.getValue() != null) {
-				xmlDump.append(
-					"      <property id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "\" />" + EOL);
-			}
-		}
 		for (Map.Entry<String, String> entry: workItemNode.getInMappings().entrySet()) {
 			xmlDump.append("      <dataInputAssociation>" + EOL);
 			xmlDump.append(
@@ -132,12 +126,11 @@
 			if (!"ActorId".equals(entry.getKey()) && entry.getValue() != null) {
 				xmlDump.append("      <dataInputAssociation>" + EOL);
 				xmlDump.append(
+					"        <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL +
 					"        <assignment>" + EOL +
 					"          <from xs:type=\"tFormalExpression\">" + entry.getValue().toString() + "</from>" + EOL +
 					"          <to xs:type=\"tFormalExpression\">" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</to>" + EOL +
-					"        </assignment>" + EOL +
-					"        <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "</sourceRef>" + EOL +
-					"        <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + entry.getKey() + "Input</targetRef>" + EOL);
+					"        </assignment>" + EOL);
 				xmlDump.append("      </dataInputAssociation>" + EOL);
 			}
 		}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/WorkItemNodeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -85,8 +85,9 @@
         } 
         if ("Receive Task".equals(type)) {
             writeNode("receiveTask", workItemNode, xmlDump, includeMeta);
+            String messageId = (String) workItemNode.getWork().getParameter("MessageId");
             xmlDump.append("messageRef=\"" + 
-                    XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_Message\" implementation=\"Other\" >" + EOL);
+                    messageId + "\" implementation=\"Other\" >" + EOL);
                 xmlDump.append(
                     "      <ioSpecification>" + EOL +
                     "        <dataOutput id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_result\" name=\"Message\" />" + EOL +
@@ -144,12 +145,6 @@
 			"        </outputSet>" + EOL);
 		xmlDump.append(
 			"      </ioSpecification>" + EOL);
-		for (Map.Entry<String, Object> entry: workItemNode.getWork().getParameters().entrySet()) {
-			if (entry.getValue() != null) {
-				xmlDump.append(
-					"      <property id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "\" />" + EOL);
-			}
-		}
 		writeInputAssociation(workItemNode, xmlDump);
         writeOutputAssociation(workItemNode, xmlDump);
 	}
@@ -166,12 +161,11 @@
 			if (entry.getValue() != null) {
 				xmlDump.append("      <dataInputAssociation>" + EOL);
 				xmlDump.append(
+					"        <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</targetRef>" + EOL +
 					"        <assignment>" + EOL +
 					"          <from xs:type=\"tFormalExpression\">" + XmlDumper.replaceIllegalChars(entry.getValue().toString()) + "</from>" + EOL +
 					"          <to xs:type=\"tFormalExpression\">" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</to>" + EOL +
-					"        </assignment>" + EOL +
-					"        <sourceRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "</sourceRef>" + EOL +
-					"        <targetRef>" + XmlBPMNProcessDumper.getUniqueNodeId(workItemNode) + "_" + XmlDumper.replaceIllegalChars(entry.getKey()) + "Input</targetRef>" + EOL);
+					"        </assignment>" + EOL);
 				xmlDump.append("      </dataInputAssociation>" + EOL);
 			}
 		}

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/XmlBPMNProcessDumper.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -20,11 +20,13 @@
 import org.drools.process.core.event.EventTypeFilter;
 import org.drools.rule.builder.dialect.java.JavaDialect;
 import org.drools.workflow.core.Constraint;
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
 import org.drools.workflow.core.node.ActionNode;
 import org.drools.workflow.core.node.CompositeNode;
 import org.drools.workflow.core.node.EndNode;
 import org.drools.workflow.core.node.EventNode;
 import org.drools.workflow.core.node.EventTrigger;
+import org.drools.workflow.core.node.FaultNode;
 import org.drools.workflow.core.node.ForEachNode;
 import org.drools.workflow.core.node.HumanTaskNode;
 import org.drools.workflow.core.node.Split;
@@ -71,9 +73,9 @@
             "             targetNamespace=\"" + targetNamespace + "\"" + EOL +
             "             typeLanguage=\"http://www.java.com/javaTypes\"" + EOL +
             "             expressionLanguage=\"http://www.mvel.org/2.0\"" + EOL +
-            "             xmlns=\"http://schema.omg.org/spec/BPMN/2.0\"" + EOL +
+            "             xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\"" + EOL +
             "             xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + EOL +
-            "             xs:schemaLocation=\"http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd\"" + EOL +
+            "             xs:schemaLocation=\"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\"" + EOL +
             "             xmlns:g=\"http://www.jboss.org/drools/flow/gpd\"" + EOL +
             "             xmlns:tns=\"http://www.jboss.org/drools\">" + EOL + EOL);
 
@@ -83,13 +85,13 @@
     	visitVariableScope(variableScope, "_", xmlDump);
     	visitSubVariableScopes(process.getNodes(), xmlDump);
         
-	    xmlDump.append(
-    		"  <resource id=\"Actor\" name=\"Human Actor\" />" + EOL + EOL);
-
-	    visitInterfaces(process, xmlDump);
+	    visitInterfaces(process.getNodes(), xmlDump);
+	    
+	    visitEscalations(process.getNodes(), xmlDump, new ArrayList<String>());
+	    visitErrors(process.getNodes(), xmlDump, new ArrayList<String>());
 	       
 	    // the process itself
-		xmlDump.append("  <process processType=\"executable\" ");
+		xmlDump.append("  <process processType=\"Private\" isExecutable=\"true\" ");
         if (process.getId() != null) {
             xmlDump.append("id=\"" + XmlDumper.replaceIllegalChars(process.getId()) + "\" ");
         }
@@ -213,8 +215,8 @@
     	}
     }
     
-    protected void visitInterfaces(WorkflowProcess process, StringBuilder xmlDump) {
-        for (Node node: process.getNodes()) {
+    protected void visitInterfaces(Node[] nodes, StringBuilder xmlDump) {
+        for (Node node: nodes) {
             if (node instanceof WorkItemNode) {
                 Work work = ((WorkItemNode) node).getWork();
                 if (work != null) {
@@ -233,7 +235,7 @@
                         }
                         xmlDump.append(
                             "  <itemDefinition id=\"" + getUniqueNodeId(node) + "_InMessageType\" structureRef=\"" + parameterType + "\"/>" + EOL +
-                            "  <message id=\"" + getUniqueNodeId(node) + "_InMessage\" structureRef=\"" + getUniqueNodeId(node) + "_InMessageType\" />" + EOL +
+                            "  <message id=\"" + getUniqueNodeId(node) + "_InMessage\" itemRef=\"" + getUniqueNodeId(node) + "_InMessageType\" />" + EOL +
                             "  <interface id=\"" + getUniqueNodeId(node) + "_ServiceInterface\" name=\"" + interfaceName + "\">" + EOL +
                             "    <operation id=\"" + getUniqueNodeId(node) + "_ServiceOperation\" name=\"" + operationName + "\">" + EOL + 
                             "      <inMessageRef>" + getUniqueNodeId(node) + "_InMessage</inMessageRef>" + EOL +
@@ -246,15 +248,16 @@
                         }
                         xmlDump.append(
                             "  <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                            "  <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+                            "  <message id=\"" + getUniqueNodeId(node) + "_Message\" itemRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
                     } else if ("Receive Task".equals(work.getName())) {
+                    	String messageId = (String) work.getParameter("MessageId");
                         String messageType = (String) work.getParameter("MessageType");
                         if (messageType == null) {
                             messageType = "";
                         }
                         xmlDump.append(
                             "  <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                            "  <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+                            "  <message id=\"" + messageId + "\" itemRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
                     }
                 }
             } else if (node instanceof EndNode) {
@@ -262,22 +265,26 @@
                 if (messageType != null) {
                     xmlDump.append(
                         "  <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                        "  <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+                        "  <message id=\"" + getUniqueNodeId(node) + "_Message\" itemRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
                 }
             } else if (node instanceof ActionNode) {
                 String messageType = (String) node.getMetaData("MessageType");
                 if (messageType != null) {
                     xmlDump.append(
                         "  <itemDefinition id=\"" + getUniqueNodeId(node) + "_MessageType\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                        "  <message id=\"" + getUniqueNodeId(node) + "_Message\" structureRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
+                        "  <message id=\"" + getUniqueNodeId(node) + "_Message\" itemRef=\"" + getUniqueNodeId(node) + "_MessageType\" />" + EOL + EOL);
                 }
             } else if (node instanceof EventNode) {
-                String messageRef = ((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).getType();
-                messageRef = messageRef.substring(8);
-                String messageType = (String) node.getMetaData("MessageType");
-                xmlDump.append(
-                    "  <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                    "  <message id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" />" + EOL + EOL);
+            	if (node.getMetaData("AttachedTo") == null) {
+	                String messageRef = ((EventTypeFilter) ((EventNode) node).getEventFilters().get(0)).getType();
+	                if (messageRef.startsWith("Message-")) {
+		                messageRef = messageRef.substring(8);
+		                String messageType = (String) node.getMetaData("MessageType");
+		                xmlDump.append(
+		                    "  <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
+		                    "  <message id=\"" + XmlDumper.replaceIllegalChars(messageRef) + "\" itemRef=\"" + XmlDumper.replaceIllegalChars(messageRef) + "Type\" />" + EOL + EOL);
+	                }
+            	}
             } else if (node instanceof StartNode) {
                 StartNode startNode = (StartNode) node;
                 if (startNode.getTriggers() != null && !startNode.getTriggers().isEmpty()) {
@@ -289,7 +296,7 @@
                             String messageType = (String) node.getMetaData("MessageType");
                             xmlDump.append(
                                 "  <itemDefinition id=\"" + XmlDumper.replaceIllegalChars(eventType) + "Type\" structureRef=\"" + XmlDumper.replaceIllegalChars(messageType) + "\"/>" + EOL +
-                                "  <message id=\"" + XmlDumper.replaceIllegalChars(eventType) + "\" structureRef=\"" + XmlDumper.replaceIllegalChars(eventType) + "Type\" />" + EOL + EOL);
+                                "  <message id=\"" + XmlDumper.replaceIllegalChars(eventType) + "\" itemRef=\"" + XmlDumper.replaceIllegalChars(eventType) + "Type\" />" + EOL + EOL);
                         }
                     }
                 }
@@ -297,10 +304,86 @@
             	ForEachNode forEachNode = (ForEachNode) node;
                 xmlDump.append(
                     "  <itemDefinition id=\"" + XmlBPMNProcessDumper.getUniqueNodeId(forEachNode) + "_multiInstanceItemType\" structureRef=\"" + XmlDumper.replaceIllegalChars(((ObjectDataType) forEachNode.getVariableType()).getClassName()) + "\"/>" + EOL + EOL);
-            } 
+            }
+            if (node instanceof CompositeNode) {
+            	visitInterfaces(((CompositeNode) node).getNodes(), xmlDump);
+            }
         }
     }
     
+    protected void visitEscalations(Node[] nodes, StringBuilder xmlDump, List<String> escalations) {
+        for (Node node: nodes) {
+            if (node instanceof FaultNode) {
+            	FaultNode faultNode = (FaultNode) node;
+            	if (!faultNode.isTerminateParent()) {
+            		String escalationCode = faultNode.getFaultName();
+            		if (!escalations.contains(escalationCode)) {
+            			escalations.add(escalationCode);
+	                    xmlDump.append(
+	                        "  <escalation id=\"" + XmlDumper.replaceIllegalChars(escalationCode) + "\" escalationCode=\"" + XmlDumper.replaceIllegalChars(escalationCode) + "\" />" + EOL);
+            		}
+                }
+            } else if (node instanceof ActionNode) {
+            	ActionNode actionNode = (ActionNode) node;
+            	DroolsConsequenceAction action = (DroolsConsequenceAction) actionNode.getAction();
+        		if (action != null) {
+        		    String s = action.getConsequence();
+	            	if (s.startsWith("org.drools.process.instance.context.exception.ExceptionScopeInstance scopeInstance = (org.drools.process.instance.context.exception.ExceptionScopeInstance) ((org.drools.workflow.instance.NodeInstance) kcontext.getNodeInstance()).resolveContextInstance(org.drools.process.core.context.exception.ExceptionScope.EXCEPTION_SCOPE, \"")) {
+	            		s = s.substring(327);
+	                    String type = s.substring(0, s.indexOf("\""));
+	            		if (!escalations.contains(type)) {
+	            			escalations.add(type);
+		                    xmlDump.append(
+	                            "  <escalation id=\"" + XmlDumper.replaceIllegalChars(type) + "\" escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
+	            		}
+	            	}
+        		}
+            } else if (node instanceof EventNode) {
+            	EventNode eventNode = (EventNode) node;
+            	String type = (String) eventNode.getMetaData("EscalationEvent");
+            	if (type != null) {
+            		if (!escalations.contains(type)) {
+            			escalations.add(type);
+		                xmlDump.append(
+		                    "  <escalation id=\"" + XmlDumper.replaceIllegalChars(type) + "\" escalationCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
+            		}
+            	}
+            }
+            if (node instanceof CompositeNode) {
+            	visitEscalations(((CompositeNode) node).getNodes(), xmlDump, escalations);
+            }
+        }
+    }
+    
+    protected void visitErrors(Node[] nodes, StringBuilder xmlDump, List<String> errors) {
+        for (Node node: nodes) {
+            if (node instanceof FaultNode) {
+            	FaultNode faultNode = (FaultNode) node;
+            	if (faultNode.isTerminateParent()) {
+            		String errorCode = faultNode.getFaultName();
+            		if (!errors.contains(errorCode)) {
+            			errors.add(errorCode);
+	                    xmlDump.append(
+	                        "  <error id=\"" + XmlDumper.replaceIllegalChars(errorCode) + "\" errorCode=\"" + XmlDumper.replaceIllegalChars(errorCode) + "\" />" + EOL);
+            		}
+                }
+            } else if (node instanceof EventNode) {
+            	EventNode eventNode = (EventNode) node;
+            	String type = (String) eventNode.getMetaData("ErrorEvent");
+            	if (type != null) {
+            		if (!errors.contains(type)) {
+            			errors.add(type);
+		                xmlDump.append(
+		                    "  <error id=\"" + XmlDumper.replaceIllegalChars(type) + "\" errorCode=\"" + XmlDumper.replaceIllegalChars(type) + "\" />" + EOL);
+            		}
+            	}
+            }
+            if (node instanceof CompositeNode) {
+            	visitErrors(((CompositeNode) node).getNodes(), xmlDump, errors);
+            }
+        }
+    }
+    
     private void visitNodes(WorkflowProcess process, StringBuilder xmlDump, boolean includeMeta) {
     	xmlDump.append("    <!-- nodes -->" + EOL);
         for (Node node: process.getNodes()) {

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNEdgeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNEdgeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNEdgeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,107 @@
+package org.drools.bpmn2.xml.di;
+
+import java.util.HashSet;
+
+import org.drools.bpmn2.xml.di.BPMNPlaneHandler.ProcessInfo;
+import org.drools.bpmn2.xml.di.BPMNShapeHandler.NodeInfo;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class BPMNEdgeHandler extends BaseAbstractHandler implements Handler {
+
+    public BPMNEdgeHandler() {
+        initValidParents();
+        initValidPeers();
+        this.allowNesting = false;
+    }
+    
+    protected void initValidParents() {
+        this.validParents = new HashSet<Class<?>>();
+        this.validParents.add(ProcessInfo.class);
+    }
+    
+    protected void initValidPeers() {
+        this.validPeers = new HashSet<Class<?>>();
+        this.validPeers.add(null);
+        this.validPeers.add(NodeInfo.class);
+        this.validPeers.add(ConnectionInfo.class);
+    }
+    
+    public Object start(final String uri, final String localName,
+                        final Attributes attrs, final ExtensibleXmlParser parser)
+            throws SAXException {
+        parser.startElementBuilder(localName, attrs);
+
+        final String elementRef = attrs.getValue("bpmnElement");
+        ConnectionInfo info = new ConnectionInfo(elementRef);
+        ProcessInfo processInfo = (ProcessInfo) parser.getParent();
+        processInfo.addConnectionInfo(info);
+        return info;
+    }
+
+    public Object end(final String uri, final String localName,
+                      final ExtensibleXmlParser parser) throws SAXException {
+        Element element = parser.endElementBuilder();
+        // now get bendpoints
+        String bendpoints = null;
+        org.w3c.dom.Node xmlNode = element.getFirstChild();
+        while (xmlNode instanceof Element) {
+            String nodeName = xmlNode.getNodeName();
+            if ("waypoint".equals(nodeName)) {
+                // ignore first and last waypoint
+                String x = ((Element) xmlNode).getAttribute("x");
+                String y = ((Element) xmlNode).getAttribute("y");
+                try {
+                    int xValue = new Float(x).intValue();
+                    int yValue = new Float(y).intValue();
+                    if (bendpoints == null) {
+                        bendpoints = "[";
+                    } else if (xmlNode.getNextSibling() != null) {
+                        bendpoints += xValue + "," + yValue;
+                        bendpoints += ";";
+                    }
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException("Invalid bendpoint value", e);
+                }
+            }
+            xmlNode = xmlNode.getNextSibling();
+        }
+        ConnectionInfo connectionInfo = (ConnectionInfo) parser.getCurrent();
+        if (bendpoints != null && bendpoints.length() > 1) {
+            connectionInfo.setBendpoints(bendpoints + "]");
+        }
+        return connectionInfo;
+    }
+
+    public Class<?> generateNodeFor() {
+        return ConnectionInfo.class;
+    }
+    
+    public static class ConnectionInfo {
+        
+        private String elementRef;
+        private String bendpoints;
+
+        public ConnectionInfo(String elementRef) {
+            this.elementRef = elementRef;
+        }
+        
+        public String getElementRef() {
+            return elementRef;
+        }
+
+        public String getBendpoints() {
+            return bendpoints;
+        }
+
+        public void setBendpoints(String bendpoints) {
+            this.bendpoints = bendpoints;
+        }
+        
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNPlaneHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNPlaneHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNPlaneHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,171 @@
+package org.drools.bpmn2.xml.di;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.drools.bpmn2.core.Definitions;
+import org.drools.bpmn2.xml.di.BPMNEdgeHandler.ConnectionInfo;
+import org.drools.bpmn2.xml.di.BPMNShapeHandler.NodeInfo;
+import org.drools.compiler.xml.ProcessBuildData;
+import org.drools.definition.process.Connection;
+import org.drools.definition.process.Node;
+import org.drools.definition.process.NodeContainer;
+import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class BPMNPlaneHandler extends BaseAbstractHandler implements Handler {
+
+    public BPMNPlaneHandler() {
+        initValidParents();
+        initValidPeers();
+        this.allowNesting = false;
+    }
+    
+    protected void initValidParents() {
+        this.validParents = new HashSet<Class<?>>();
+        this.validParents.add(Definitions.class);
+    }
+    
+    protected void initValidPeers() {
+        this.validPeers = new HashSet<Class<?>>();
+		this.validPeers.add(null);
+        this.validPeers.add(org.drools.definition.process.Process.class);
+    }
+    
+    public Object start(final String uri, final String localName,
+                        final Attributes attrs, final ExtensibleXmlParser parser)
+            throws SAXException {
+        parser.startElementBuilder(localName, attrs);
+
+        final String processRef = attrs.getValue("bpmnElement");
+        ProcessInfo info = new ProcessInfo(processRef);
+        return info;
+    }
+
+    public Object end(final String uri, final String localName,
+                      final ExtensibleXmlParser parser) throws SAXException {
+        parser.endElementBuilder();
+        ProcessInfo processInfo = (ProcessInfo) parser.getCurrent();
+        RuleFlowProcess process = (RuleFlowProcess)
+            ((ProcessBuildData) parser.getData()).getProcess();
+        for (NodeInfo nodeInfo: processInfo.getNodeInfos()) {
+        	boolean found = processNodeInfo(nodeInfo, process.getNodes());
+            if (!found) {
+                throw new IllegalArgumentException(
+                    "Could not find node " + nodeInfo.getNodeRef());
+            }
+        }
+        postProcessNodeOffset(process.getNodes(), 0, 0);
+        for (ConnectionInfo connectionInfo: processInfo.getConnectionInfos()) {
+            if (connectionInfo.getBendpoints() != null) {
+            	boolean found = processConnectionInfo(connectionInfo, process.getNodes());
+                if (!found) {
+                    throw new IllegalArgumentException(
+                        "Could not find connection " + connectionInfo.getElementRef());
+                }
+            }
+        }
+        return processInfo;
+    }
+    
+    private boolean processNodeInfo(NodeInfo nodeInfo, Node[] nodes) {
+        for (Node node: nodes) {
+            String id = (String) node.getMetaData("UniqueId");
+            if (nodeInfo.getNodeRef().equals(id)) {
+                ((org.drools.workflow.core.Node) node).setMetaData("x", nodeInfo.getX());
+                ((org.drools.workflow.core.Node) node).setMetaData("y", nodeInfo.getY());
+                ((org.drools.workflow.core.Node) node).setMetaData("width", nodeInfo.getWidth());
+                ((org.drools.workflow.core.Node) node).setMetaData("height", nodeInfo.getHeight());
+                return true;
+            }
+        	if (node instanceof NodeContainer) {
+        		boolean found = processNodeInfo(nodeInfo, ((NodeContainer) node).getNodes());
+        		if (found) {
+        			return true;
+        		}
+            }
+        }
+        return false;
+    }
+    
+    private void postProcessNodeOffset(Node[] nodes, int xOffset, int yOffset) {
+    	for (Node node: nodes) {
+    		Integer x = (Integer) node.getMetaData("x");
+    		if (x != null) {
+    			((org.drools.workflow.core.Node) node).setMetaData("x", x - xOffset);
+    		}
+    		Integer y = (Integer) node.getMetaData("y");
+    		if (y != null) {
+    			((org.drools.workflow.core.Node) node).setMetaData("y", y - yOffset);
+    		}
+    		if (node instanceof NodeContainer) {
+    			postProcessNodeOffset(((NodeContainer) node).getNodes(), xOffset + (x == null ? 0 : x), yOffset + (y == null ? 0 : y));
+    		}
+    	}
+    }
+    
+    private boolean processConnectionInfo(ConnectionInfo connectionInfo, Node[] nodes) {
+        for (Node node: nodes) {
+        	for (List<Connection> connections: node.getOutgoingConnections().values()) {
+        		for (Connection connection: connections) {
+                    String id = (String) connection.getMetaData("UniqueId");
+                    if (id != null && id.equals(connectionInfo.getElementRef())) {
+                        ((ConnectionImpl) connection).setMetaData(
+                            "bendpoints", connectionInfo.getBendpoints());
+                        return true;
+                    }
+        		}
+        	}
+        	if (node instanceof NodeContainer) {
+        		boolean found = processConnectionInfo(connectionInfo, ((NodeContainer) node).getNodes());
+        		if (found) {
+        			return true;
+        		}
+        	}
+		}
+        return false;
+    }
+
+    public Class<?> generateNodeFor() {
+        return ProcessInfo.class;
+    }
+    
+    public static class ProcessInfo {
+        
+        private String processRef;
+        private List<NodeInfo> nodeInfos = new ArrayList<NodeInfo>();
+        private List<ConnectionInfo> connectionInfos = new ArrayList<ConnectionInfo>();
+
+        public ProcessInfo(String processRef) {
+            this.processRef = processRef;
+        }
+        
+        public String getProcessRef() {
+            return processRef;
+        }
+        
+        public void addNodeInfo(NodeInfo nodeInfo) {
+            this.nodeInfos.add(nodeInfo);
+        }
+        
+        public List<NodeInfo> getNodeInfos() {
+            return nodeInfos;
+        }
+        
+        public void addConnectionInfo(ConnectionInfo connectionInfo) {
+            connectionInfos.add(connectionInfo);
+        }
+        
+        public List<ConnectionInfo> getConnectionInfos() {
+            return connectionInfos;
+        }
+        
+    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNShapeHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNShapeHandler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/java/org/drools/bpmn2/xml/di/BPMNShapeHandler.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,130 @@
+package org.drools.bpmn2.xml.di;
+
+import java.util.HashSet;
+
+import org.drools.bpmn2.xml.di.BPMNEdgeHandler.ConnectionInfo;
+import org.drools.bpmn2.xml.di.BPMNPlaneHandler.ProcessInfo;
+import org.drools.xml.BaseAbstractHandler;
+import org.drools.xml.ExtensibleXmlParser;
+import org.drools.xml.Handler;
+import org.w3c.dom.Element;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class BPMNShapeHandler extends BaseAbstractHandler implements Handler {
+
+    public BPMNShapeHandler() {
+        initValidParents();
+        initValidPeers();
+        this.allowNesting = true;
+    }
+    
+    protected void initValidParents() {
+        this.validParents = new HashSet<Class<?>>();
+        this.validParents.add(ProcessInfo.class);
+    }
+    
+    protected void initValidPeers() {
+        this.validPeers = new HashSet<Class<?>>();
+        this.validPeers.add(null);
+        this.validPeers.add(NodeInfo.class);
+        this.validPeers.add(ConnectionInfo.class);
+    }
+    
+    public Object start(final String uri, final String localName,
+                        final Attributes attrs, final ExtensibleXmlParser parser)
+            throws SAXException {
+        parser.startElementBuilder(localName, attrs);
+        final String elementRef = attrs.getValue("bpmnElement");
+        NodeInfo nodeInfo = new NodeInfo(elementRef);
+        ProcessInfo processInfo = (ProcessInfo) parser.getParent();
+        processInfo.addNodeInfo(nodeInfo);
+        return nodeInfo;
+    }
+    
+    public Object end(final String uri, final String localName,
+                      final ExtensibleXmlParser parser) throws SAXException {
+        Element element = parser.endElementBuilder();
+        NodeInfo nodeInfo = (NodeInfo) parser.getCurrent();
+        org.w3c.dom.Node xmlNode = element.getFirstChild();
+        while (xmlNode instanceof Element) {
+            String nodeName = xmlNode.getNodeName();
+            if ("Bounds".equals(nodeName)) {
+                // ignore first and last waypoint
+                String x = ((Element) xmlNode).getAttribute("x");
+                String y = ((Element) xmlNode).getAttribute("y");
+                String width = ((Element) xmlNode).getAttribute("width");
+                String height = ((Element) xmlNode).getAttribute("height");
+                try {
+                    int xValue = new Float(x).intValue();
+                    int yValue = new Float(y).intValue();
+                    int widthValue = new Float(width).intValue();
+                    int heightValue = new Float(height).intValue();
+                    nodeInfo.setX(xValue);
+                    nodeInfo.setY(yValue);
+                    nodeInfo.setWidth(widthValue);
+                    nodeInfo.setHeight(heightValue);
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException("Invalid bounds for node " + nodeInfo.getNodeRef(), e);
+                }
+            }
+            xmlNode = xmlNode.getNextSibling();
+        }
+        return parser.getCurrent();
+    }
+
+    public Class<?> generateNodeFor() {
+        return NodeInfo.class;
+    }
+    
+    public static class NodeInfo {
+        
+        private String nodeRef;
+        private Integer x;
+        private Integer y;
+        private Integer width;
+        private Integer height;
+
+        public NodeInfo(String nodeRef) {
+            this.nodeRef = nodeRef;
+        }
+        
+        public String getNodeRef() {
+            return nodeRef;
+        }
+        
+        public Integer getX() {
+            return x;
+        }
+
+        public void setX(Integer x) {
+            this.x = x;
+        }
+
+        public Integer getY() {
+            return y;
+        }
+
+        public void setY(Integer y) {
+            this.y = y;
+        }
+
+        public Integer getWidth() {
+            return width;
+        }
+
+        public void setWidth(Integer width) {
+            this.width = width;
+        }
+
+        public Integer getHeight() {
+            return height;
+        }
+
+        public void setHeight(Integer height) {
+            this.height = height;
+        }
+        
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BPMN20.xsd
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BPMN20.xsd	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BPMN20.xsd	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"	
-	xmlns="http://schema.omg.org/spec/BPMN/2.0"
+	xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
 	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	xmlns:di="http://bpmndi.org"
-	targetNamespace="http://schema.omg.org/spec/BPMN/2.0">
+	xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/BPMNDI"
+	targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL">
 
-	<xsd:import namespace="http://bpmndi.org" schemaLocation="BpmnDi.xsd"/>
+	<xsd:import namespace="http://www.omg.org/spec/BPMN/20100524/BPMNDI" schemaLocation="BPMNDI.xsd"/>
 	<xsd:include schemaLocation="Semantic.xsd"/>
 
 	<xsd:element name="definitions" type="tDefinitions"/>
@@ -14,13 +14,16 @@
 			<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="bpmndi:BPMNDiagram" 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="name" type="xsd:string"/>
 		<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:attribute name="exporter" type="xsd:string"/>
+		<xsd:attribute name="exporterVersion" type="xsd:string"/>
 		<xsd:anyAttribute namespace="##other" processContents="lax"/>
 	</xsd:complexType>
 	

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BpmnDi.xsd
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BpmnDi.xsd	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/BpmnDi.xsd	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,273 +1,100 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by Bruce Silver (private) -->
-<xs:schema xmlns="http://bpmndi.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://bpmndi.org" elementFormDefault="qualified" attributeFormDefault="unqualified">
-	<xs:element name="bpmndi">
-		<xs:annotation>
-			<xs:documentation>Comment describing your root element</xs:documentation>
-		</xs:annotation>
-		<xs:complexType>
-			<xs:sequence>
-				<xs:element ref="diagram" maxOccurs="unbounded"/>
-			</xs:sequence>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="diagram" type="diagramType"/>
-	<xs:complexType name="diagramType">
-		<xs:attribute name="id" type="xs:ID" use="required"/>
-		<xs:attribute name="name" type="xs:string"/>
-		<xs:anyAttribute namespace="##other"/>
-	</xs:complexType>
-	<xs:element name="processDiagram" type="processDiagramType" substitutionGroup="diagram"/>
-	<xs:complexType name="processDiagramType">
-		<xs:complexContent>
-			<xs:extension base="diagramType">
-				<xs:sequence>
-					<xs:element ref="laneCompartment" maxOccurs="unbounded"/>
-					<xs:element ref="sequenceFlowConnector" minOccurs="0" maxOccurs="unbounded"/>
-					<xs:element ref="associationConnector" minOccurs="0" maxOccurs="unbounded"/>
-					<xs:element ref="dataAssociationConnector" minOccurs="0" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:attribute name="processRef" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="collaborationDiagram" type="collaborationDiagramType" substitutionGroup="diagram"/>
-	<xs:complexType name="collaborationDiagramType">
-		<xs:complexContent>
-			<xs:extension base="diagramType">
-				<xs:sequence>
-					<xs:element name="pool" type="poolCompartmentType" minOccurs="2" maxOccurs="unbounded"/>
-					<xs:element ref="messageFlowConnector" minOccurs="0" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:attribute name="collaborationRef" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="bpmnNode" type="bpmnNodeType"/>
-	<xs:complexType name="bpmnNodeType">
-		<xs:attribute name="id" type="xs:ID" use="required"/>
-		<xs:attribute name="name" type="xs:string"/>
-		<xs:attribute name="x"/>
-		<xs:attribute name="y"/>
-		<xs:attribute name="width"/>
-		<xs:attribute name="height"/>
-	</xs:complexType>
-	<xs:element name="bpmnCompartment" type="bpmnCompartmentType" substitutionGroup="bpmnNode"/>
-	<xs:complexType name="bpmnCompartmentType">
-		<xs:complexContent>
-			<xs:extension base="bpmnNodeType">
-				<xs:attribute name="isVisible" type="xs:boolean"/>
-				<xs:attribute name="orientation">
-					<xs:simpleType>
-						<xs:restriction base="xs:string">
-							<xs:enumeration value="horizontal"/>
-							<xs:enumeration value="vertical"/>
-						</xs:restriction>
-					</xs:simpleType>
-				</xs:attribute>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="laneCompartment" type="laneCompartmentType_1" substitutionGroup="bpmnCompartment"/>
-	<xs:complexType name="laneCompartmentType">
-		<xs:complexContent>
-			<xs:extension base="bpmnCompartmentType">
-				<xs:sequence>
-					<xs:element ref="bpmnShape" minOccurs="0" maxOccurs="unbounded"/>
-					<xs:element name="subLane" type="laneCompartmentType_1" minOccurs="0" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:attribute name="laneRef" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="poolCompartment" type="poolCompartmentType" substitutionGroup="bpmnCompartment"/>
-	<xs:complexType name="poolCompartmentType">
-		<xs:complexContent>
-			<xs:extension base="bpmnCompartmentType">
-				<xs:sequence>
-					<xs:element name="laneCompRef" type="xs:IDREF" minOccurs="0" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:attribute name="participantRef" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="bpmnShape" type="bpmnNodeType" substitutionGroup="bpmnNode"/>
-	<xs:element name="bpmnLabel" substitutionGroup="bpmnNode"/>
-	<xs:element name="activityShape" type="activityShapeType_1" substitutionGroup="bpmnShape"/>
-	<xs:complexType name="activityShapeType">
-		<xs:attribute name="activityRef" type="xs:IDREF"/>
-	</xs:complexType>
-	<xs:complexType name="activityShapeType_1">
-		<xs:complexContent>
-			<xs:extension base="bpmnNodeType">
-				<xs:attribute name="activityRef"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="subprocessShape" type="subprocessShapeType" substitutionGroup="activityShape"/>
-	<xs:complexType name="subprocessShapeType">
-		<xs:complexContent>
-			<xs:extension base="activityShapeType_1">
-				<xs:sequence>
-					<xs:element name="laneCompRef" type="xs:IDREF" minOccurs="0" maxOccurs="unbounded"/>
-				</xs:sequence>
-				<xs:attribute name="isExpanded" type="xs:boolean"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="calledSubprocessShape" type="calledSubprocessShapeType" substitutionGroup="activityShape"/>
-	<xs:complexType name="calledSubprocessShapeType">
-		<xs:complexContent>
-			<xs:extension base="activityShapeType_1">
-				<xs:attribute name="isExpanded" type="xs:boolean"/>
-				<xs:attribute name="diagramLink" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="taskShape" type="activityShapeType_1" substitutionGroup="activityShape"/>
-	<xs:element name="gatewayShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="gatewayRef"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="eventShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="eventRef"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="dataObjectShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="dataObjectRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="dataStoreShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="dataStoreRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="dataInputShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="dataInputRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="dataOutputShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="dataOutputRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="messageShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="messageRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="groupShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="categoryRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="textAnnotationShape" substitutionGroup="bpmnShape">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnNodeType">
-					<xs:attribute name="annotationRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="bpmnConnector" type="bpmnConnectorType"/>
-	<xs:complexType name="bpmnConnectorType">
-		<xs:sequence>
-			<xs:element name="bendpoint" minOccurs="0" maxOccurs="unbounded">
-				<xs:complexType>
-					<xs:attribute name="x" type="xs:double"/>
-					<xs:attribute name="y" type="xs:double"/>
-				</xs:complexType>
-			</xs:element>
-		</xs:sequence>
-		<xs:attribute name="id" type="xs:ID" use="required"/>
-		<xs:attribute name="sourceRef" type="xs:IDREF" use="required"/>
-		<xs:attribute name="targetRef" type="xs:IDREF" use="required"/>
-		<xs:attribute name="label" type="xs:string"/>
-	</xs:complexType>
-	<xs:element name="sequenceFlowConnector" substitutionGroup="bpmnConnector">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnConnectorType">
-					<xs:attribute name="sequenceFlowRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="messageFlowConnector">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="bpmnConnectorType">
-					<xs:attribute name="messageFlowRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="dataAssociationConnector" substitutionGroup="bpmnConnector">
-		<xs:complexType>
-			<xs:complexContent>
-				<xs:extension base="associationConnectorType">
-					<xs:attribute name="dataAssociationRef" type="xs:IDREF"/>
-				</xs:extension>
-			</xs:complexContent>
-		</xs:complexType>
-	</xs:element>
-	<xs:element name="associationConnector" type="associationConnectorType_1" substitutionGroup="bpmnConnector"/>
-	<xs:complexType name="associationConnectorType">
-		<xs:complexContent>
-			<xs:extension base="bpmnConnectorType">
-				<xs:attribute name="isDirectional" type="xs:boolean"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:element name="compensationFlowConnector" type="associationConnectorType_1" substitutionGroup="associationConnector"/>
-	<xs:element name="lane" type="laneCompartmentType"/>
-	<xs:complexType name="laneCompartmentType_1">
-		<xs:complexContent>
-			<xs:extension base="laneCompartmentType"/>
-		</xs:complexContent>
-	</xs:complexType>
-	<xs:complexType name="associationConnectorType_1">
-		<xs:complexContent>
-			<xs:extension base="associationConnectorType">
-				<xs:attribute name="associationRef" type="xs:IDREF"/>
-			</xs:extension>
-		</xs:complexContent>
-	</xs:complexType>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/BPMNDI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" targetNamespace="http://www.omg.org/spec/BPMN/20100524/BPMNDI"  elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+	<xsd:import namespace="http://www.omg.org/spec/DD/20100524/DC" schemaLocation="DC.xsd" />
+	<xsd:import namespace="http://www.omg.org/spec/DD/20100524/DI" schemaLocation="DI.xsd" />
+	
+	<xsd:element name="BPMNDiagram" type="bpmndi:BPMNDiagram" />
+	<xsd:element name="BPMNPlane" type="bpmndi:BPMNPlane" />
+	<xsd:element name="BPMNLabelStyle" type="bpmndi:BPMNLabelStyle" />
+	<xsd:element name="BPMNShape" type="bpmndi:BPMNShape" substitutionGroup="di:DiagramElement" />
+	<xsd:element name="BPMNLabel" type="bpmndi:BPMNLabel" />
+	<xsd:element name="BPMNEdge" type="bpmndi:BPMNEdge" substitutionGroup="di:DiagramElement" />
+	
+	<xsd:complexType name="BPMNDiagram">
+		<xsd:complexContent>
+			<xsd:extension base="di:Diagram">
+				<xsd:sequence>
+					<xsd:element ref="bpmndi:BPMNPlane" />
+					<xsd:element ref="bpmndi:BPMNLabelStyle" maxOccurs="unbounded" minOccurs="0" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="BPMNPlane">
+		<xsd:complexContent>
+			<xsd:extension base="di:Plane">
+				<xsd:attribute name="bpmnElement" type="xsd:QName" />
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="BPMNEdge">
+		<xsd:complexContent>
+			<xsd:extension base="di:LabeledEdge">
+				<xsd:sequence>
+					<xsd:element ref="bpmndi:BPMNLabel" minOccurs="0" />
+				</xsd:sequence>
+				<xsd:attribute name="bpmnElement" type="xsd:QName" />
+				<xsd:attribute name="sourceElement" type="xsd:QName" />
+				<xsd:attribute name="targetElement" type="xsd:QName" />
+				<xsd:attribute name="messageVisibleKind" type="bpmndi:MessageVisibleKind" />
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="BPMNShape">
+		<xsd:complexContent>
+			<xsd:extension base="di:LabeledShape">
+				<xsd:sequence>
+					<xsd:element ref="bpmndi:BPMNLabel" minOccurs="0" />
+				</xsd:sequence>
+				<xsd:attribute name="bpmnElement" type="xsd:QName" />
+				<xsd:attribute name="isHorizontal" type="xsd:boolean" />
+				<xsd:attribute name="isExpanded" type="xsd:boolean" />
+				<xsd:attribute name="isMarkerVisible" type="xsd:boolean" />
+				<xsd:attribute name="isMessageVisible" type="xsd:boolean" />
+				<xsd:attribute name="participantBandKind" type="bpmndi:ParticipantBandKind" />
+        		<xsd:attribute name="choreographyActivityShape" type="xsd:QName"/>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="BPMNLabel">
+		<xsd:complexContent>
+			<xsd:extension base="di:Label">
+				<xsd:attribute name="labelStyle" type="xsd:QName" />
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType name="BPMNLabelStyle">
+		<xsd:complexContent>
+			<xsd:extension base="di:Style">
+				<xsd:sequence>
+					<xsd:element ref="dc:Font" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:simpleType name="ParticipantBandKind">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="top_initiating" />
+			<xsd:enumeration value="middle_initiating" />
+			<xsd:enumeration value="bottom_initiating" />
+			<xsd:enumeration value="top_non_initiating" />
+			<xsd:enumeration value="middle_non_initiating" />
+			<xsd:enumeration value="bottom_non_initiating" />
+		</xsd:restriction>
+	</xsd:simpleType>
+	
+	<xsd:simpleType name="MessageVisibleKind">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="initiating" />
+			<xsd:enumeration value="non_initiating" />
+		</xsd:restriction>
+	</xsd:simpleType>
+
+</xsd:schema>

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DC.xsd
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DC.xsd	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DC.xsd	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" targetNamespace="http://www.omg.org/spec/DD/20100524/DC" elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+	<xsd:element name="Font" type="dc:Font" />
+	<xsd:element name="Point" type="dc:Point" />
+	<xsd:element name="Bounds" type="dc:Bounds" />
+	
+	<xsd:complexType name="Font">
+		<xsd:attribute name="name" type="xsd:string" />
+		<xsd:attribute name="size" type="xsd:double" />
+		<xsd:attribute name="isBold" type="xsd:boolean" />
+		<xsd:attribute name="isItalic" type="xsd:boolean" />
+		<xsd:attribute name="isUnderline" type="xsd:boolean" />
+		<xsd:attribute name="isStrikeThrough" type="xsd:boolean" />
+	</xsd:complexType>
+	
+	<xsd:complexType name="Point">
+		<xsd:attribute name="x" type="xsd:double" use="required" />
+		<xsd:attribute name="y" type="xsd:double" use="required" />
+	</xsd:complexType>
+	
+	<xsd:complexType name="Bounds">
+		<xsd:attribute name="x" type="xsd:double" use="required" />
+		<xsd:attribute name="y" type="xsd:double" use="required" />
+		<xsd:attribute name="width" type="xsd:double" use="required" />
+		<xsd:attribute name="height" type="xsd:double" use="required" />
+	</xsd:complexType>
+
+</xsd:schema>

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DI.xsd
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DI.xsd	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/DI.xsd	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" targetNamespace="http://www.omg.org/spec/DD/20100524/DI" elementFormDefault="qualified" attributeFormDefault="unqualified">
+
+	<xsd:import namespace="http://www.omg.org/spec/DD/20100524/DC" schemaLocation="DC.xsd" />
+	
+	<xsd:element name="DiagramElement" type="di:DiagramElement" />
+	<xsd:element name="Diagram" type="di:Diagram" />
+	<xsd:element name="Style" type="di:Style" />
+	<xsd:element name="Node" type="di:Node" />
+	<xsd:element name="Edge" type="di:Edge" />
+	<xsd:element name="Shape" type="di:Shape" />
+	<xsd:element name="Plane" type="di:Plane" />
+	<xsd:element name="LabeledEdge" type="di:LabeledEdge" />
+	<xsd:element name="Label" type="di:Label" />
+	<xsd:element name="LabeledShape" type="di:LabeledShape" />
+	
+	<xsd:complexType abstract="true" name="DiagramElement">
+		<xsd:sequence>
+			<xsd:element name="extension" minOccurs="0">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+		<xsd:attribute name="id" type="xsd:ID" />
+		<xsd:anyAttribute namespace="##other" processContents="lax" />
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Diagram">
+		<xsd:attribute name="name" type="xsd:string" />
+		<xsd:attribute name="documentation" type="xsd:string" />
+		<xsd:attribute name="resolution" type="xsd:double" />
+		<xsd:attribute name="id" type="xsd:ID" />
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Node">
+		<xsd:complexContent>
+			<xsd:extension base="di:DiagramElement" />
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Edge">
+		<xsd:complexContent>
+			<xsd:extension base="di:DiagramElement">
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" minOccurs="2" name="waypoint" type="dc:Point" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="LabeledEdge">
+		<xsd:complexContent>
+			<xsd:extension base="di:Edge" />
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Shape">
+		<xsd:complexContent>
+			<xsd:extension base="di:Node">
+				<xsd:sequence>
+					<xsd:element ref="dc:Bounds" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="LabeledShape">
+		<xsd:complexContent>
+			<xsd:extension base="di:Shape" />
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Label">
+		<xsd:complexContent>
+			<xsd:extension base="di:Node">
+				<xsd:sequence>
+					<xsd:element ref="dc:Bounds" minOccurs="0" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Plane">
+		<xsd:complexContent>
+			<xsd:extension base="di:Node">
+				<xsd:sequence>
+					<xsd:element ref="di:DiagramElement" maxOccurs="unbounded" minOccurs="0" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	
+	<xsd:complexType abstract="true" name="Style">
+		<xsd:attribute name="id" type="xsd:ID" />
+	</xsd:complexType>
+	
+</xsd:schema>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/Semantic.xsd
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/Semantic.xsd	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/main/resources/META-INF/Semantic.xsd	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
-	xmlns="http://schema.omg.org/spec/BPMN/2.0" 
+	xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
 	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-	targetNamespace="http://schema.omg.org/spec/BPMN/2.0">
+	targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL">
 	
 	<xsd:element name="activity" type="tActivity"/>
 	<xsd:complexType name="tActivity" abstract="true">
@@ -13,7 +13,7 @@
 					<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="resourceRole" minOccurs="0" maxOccurs="unbounded"/>
 					<xsd:element ref="loopCharacteristics" minOccurs="0"/>
 				</xsd:sequence>
 				<xsd:attribute name="isForCompensation" type="xsd:boolean" default="false"/>
@@ -24,19 +24,6 @@
 		</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>
@@ -52,8 +39,8 @@
 	
 	<xsd:simpleType name="tAdHocOrdering">
 		<xsd:restriction base="xsd:string">
-			<xsd:enumeration value="parallel"/>
-			<xsd:enumeration value="sequential"/>
+			<xsd:enumeration value="Parallel"/>
+			<xsd:enumeration value="Sequential"/>
 		</xsd:restriction>
 	</xsd:simpleType>	
 
@@ -69,10 +56,9 @@
 		<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:element name="from" type="tExpression" minOccurs="1" maxOccurs="1"/>
+					<xsd:element name="to" type="tExpression" minOccurs="1" maxOccurs="1"/>
 				</xsd:sequence>
-				<xsd:attribute name="language" type="xsd:anyURI"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>	
@@ -83,16 +69,16 @@
 			<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: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:enumeration value="None"/>
+			<xsd:enumeration value="One"/>
+			<xsd:enumeration value="Both"/>
 		</xsd:restriction>
 	</xsd:simpleType>
 
@@ -107,7 +93,7 @@
 	<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:element ref="extensionElements" minOccurs="0" maxOccurs="1" /> 
 		</xsd:sequence>
 		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
 		<xsd:anyAttribute namespace="##other" processContents="lax"/>
@@ -117,8 +103,7 @@
 	<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:element ref="extensionElements" minOccurs="0" maxOccurs="1" /> 
 		</xsd:sequence>
 		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
 		<xsd:anyAttribute namespace="##other" processContents="lax"/>
@@ -137,7 +122,9 @@
 	<xsd:element name="businessRuleTask" type="tBusinessRuleTask" substitutionGroup="flowElement"/>
 	<xsd:complexType name="tBusinessRuleTask">
 		<xsd:complexContent>
-			<xsd:extension base="tTask"/>
+			<xsd:extension base="tTask">
+				<xsd:attribute name="implementation" type="tImplementation" default="##unspecified"/>
+			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
 
@@ -170,8 +157,8 @@
 			<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:sequence>
+				<xsd:attribute name="calledChoreographyRef" type="xsd:QName" use="optional"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -183,7 +170,7 @@
 				<xsd:sequence>
 					<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
-				<xsd:attribute name="calledElementRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="calledCollaborationRef" type="xsd:QName" use="optional"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -218,6 +205,7 @@
 				<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>
@@ -230,22 +218,14 @@
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
-	
-	<xsd:element name="choreography" type="tChoreography" substitutionGroup="rootElement"/>
+
+	<xsd:element name="choreography" type="tChoreography" substitutionGroup="collaboration"/>
 	<xsd:complexType name="tChoreography">
 		<xsd:complexContent>
-			<xsd:extension base="tCallableElement">
+			<xsd:extension base="tCollaboration">
 				<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>
@@ -256,31 +236,30 @@
 			<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="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: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="unbounded"/>
-				</xsd:sequence>			
+					<xsd:element name="messageFlowRef" type="xsd:QName" maxOccurs="unbounded"/>
+				</xsd:sequence>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -293,30 +272,20 @@
 					<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="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: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>
@@ -344,7 +313,7 @@
 		<xsd:complexContent>
 			<xsd:extension base="tGateway">
 				<xsd:sequence>
-					<xsd:element name="activationCondition"  type="tExpression" minOccurs="0" maxOccurs="1"/>
+					<xsd:element name="activationCondition" type="tExpression" minOccurs="0" maxOccurs="1"/>
 				</xsd:sequence>
 				<xsd:attribute name="default" type="xsd:IDREF"/>
 			</xsd:extension>
@@ -361,20 +330,11 @@
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
-
-	<xsd:element name="conversation" type="tConversation" substitutionGroup="rootElement"/>
+	
+	<xsd:element name="conversation" type="tConversation" substitutionGroup="conversationNode"/>
 	<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:extension base="tConversationNode"/>
 		</xsd:complexContent>
 	</xsd:complexType>
 	
@@ -382,21 +342,31 @@
 	<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: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="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="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>
@@ -410,6 +380,7 @@
 				<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>
@@ -421,6 +392,8 @@
 				<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>
@@ -456,17 +429,18 @@
 				<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: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>
@@ -491,12 +465,7 @@
 	<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:extension base="tDataAssociation"/>
 		</xsd:complexContent>
 	</xsd:complexType>
 
@@ -513,6 +482,19 @@
 		</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="dataOutput" type="tDataOutput" />
 	<xsd:complexType name="tDataOutput">
 		<xsd:complexContent>
@@ -530,12 +512,7 @@
 	<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:extension base="tDataAssociation"/>
 		</xsd:complexContent>
 	</xsd:complexType>
 
@@ -582,6 +559,7 @@
 			<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="endEvent" type="tEndEvent" substitutionGroup="flowElement"/>
@@ -602,6 +580,8 @@
 	<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>
@@ -611,7 +591,6 @@
 	<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>
@@ -621,6 +600,8 @@
 	<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>
@@ -630,7 +611,6 @@
 	<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>
@@ -639,7 +619,11 @@
 	<xsd:element name="event" type="tEvent" substitutionGroup="flowElement"/>
 	<xsd:complexType name="tEvent" abstract="true">
 		<xsd:complexContent>
-			<xsd:extension base="tFlowNode"/>
+			<xsd:extension base="tFlowNode">
+				<xsd:sequence>
+					<xsd:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
+				</xsd:sequence>
+			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>	
 	
@@ -692,6 +676,13 @@
 		<xsd:attribute name="mustUnderstand" type="xsd:boolean" use="optional" default="false"/>
 	</xsd:complexType>
 	
+	<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="flowElement" type="tFlowElement"/>
 	<xsd:complexType name="tFlowElement" abstract="true">
 		<xsd:complexContent>
@@ -719,7 +710,7 @@
 	</xsd:complexType>	
 
 	<xsd:element name="formalExpression" type="tFormalExpression" substitutionGroup="expression"/>
-	<xsd:complexType name="tFormalExpression" mixed="true">
+	<xsd:complexType name="tFormalExpression">
 		<xsd:complexContent>
 			<xsd:extension base="tExpression">
 				<xsd:attribute name="language" type="xsd:anyURI" use="optional"/>
@@ -732,50 +723,41 @@
 	<xsd:complexType name="tGateway">
 		<xsd:complexContent>
 			<xsd:extension base="tFlowNode">
-				<xsd:attribute name="gatewayDirection" type="tGatewayDirection" default="unspecified"/>
+				<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: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:extension base="tGlobalTask">
+				<xsd:attribute name="implementation" type="tImplementation" default="##unspecified"/>
+			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
-	
-	<xsd:element name="globalChoreographyTask" type="tGlobalChoreographyTask" substitutionGroup="rootElement"/>
+
+	<xsd:element name="globalChoreographyTask" type="tGlobalChoreographyTask" substitutionGroup="choreography"/>
 	<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:extension base="tChoreography">
 				<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:complexType>
+	<xsd:element name="globalConversation" type="tGlobalConversation" substitutionGroup="collaboration"/>
+	<xsd:complexType name="tGlobalConversation">
 		<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:extension base="tCollaboration"/>
 		</xsd:complexContent>
 	</xsd:complexType>
 	
@@ -803,7 +785,7 @@
 		<xsd:complexContent>
 			<xsd:extension base="tCallableElement">
 				<xsd:sequence>
-					<xsd:element ref="performer" minOccurs="0" maxOccurs="unbounded"/>
+					<xsd:element ref="resourceRole" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
 			</xsd:extension>
 		</xsd:complexContent>
@@ -816,7 +798,7 @@
 				<xsd:sequence>
 					<xsd:element ref="rendering" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
-				<xsd:attribute name="implementation" type="tUserTaskImplementation" default="unspecified"/>
+				<xsd:attribute name="implementation" type="tImplementation" default="##unspecified"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -825,7 +807,7 @@
 	<xsd:complexType name="tGroup">
 		<xsd:complexContent>
 			<xsd:extension base="tArtifact">
-				<xsd:attribute name="categoryRef" type="xsd:QName" use="optional"/>
+				<xsd:attribute name="categoryValueRef" type="xsd:QName" use="optional"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -837,6 +819,17 @@
 		</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="implicitThrowEvent" type="tImplicitThrowEvent" substitutionGroup="flowElement"/>
 	<xsd:complexType name="tImplicitThrowEvent">
 		<xsd:complexContent>
@@ -876,6 +869,7 @@
 					<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>
@@ -943,11 +937,11 @@
 			<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="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:IDREF"/>
+				<xsd:attribute name="partitionElementRef" type="xsd:QName"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -959,6 +953,7 @@
 				<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>
@@ -967,6 +962,10 @@
 	<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>
@@ -991,7 +990,7 @@
 		<xsd:complexContent>
 			<xsd:extension base="tRootElement">
 				<xsd:attribute name="name" type="xsd:string"/>
-				<xsd:attribute name="structureRef" type="xsd:QName"/>
+				<xsd:attribute name="itemRef" type="xsd:QName"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>		
@@ -1045,13 +1044,13 @@
 					<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="tProperty" minOccurs="0" maxOccurs="1"/>
-					<xsd:element name="outputDataItem" type="tProperty" 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="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>
@@ -1060,12 +1059,12 @@
 	
 	<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:enumeration value="None"/>
+			<xsd:enumeration value="One"/>
+			<xsd:enumeration value="All"/>
+			<xsd:enumeration value="Complex"/>
 		</xsd:restriction>
-	</xsd:simpleType>	
+	</xsd:simpleType>
 	
 	<xsd:element name="operation" type="tOperation"/>
 	<xsd:complexType name="tOperation">
@@ -1077,6 +1076,7 @@
 					<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>
@@ -1113,8 +1113,6 @@
 					<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>
@@ -1136,8 +1134,8 @@
 	<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:attribute name="minimum" type="xsd:int" default="0"/>
+				<xsd:attribute name="maximum" type="xsd:int" default="1"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1146,6 +1144,9 @@
 	<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>
@@ -1155,15 +1156,18 @@
 	<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="performer" type="tPerformer" substitutionGroup="activityResource"/>
+	<xsd:element name="performer" type="tPerformer" substitutionGroup="resourceRole"/>
 	<xsd:complexType name="tPerformer">
 		<xsd:complexContent>
-			<xsd:extension base="tActivityResource"/>
+			<xsd:extension base="tResourceRole"/>
 		</xsd:complexContent>
 	</xsd:complexType>	
 	
@@ -1185,10 +1189,13 @@
 					<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="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>
@@ -1196,10 +1203,9 @@
 	
 	<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:enumeration value="None"/>
+			<xsd:enumeration value="Public"/>
+			<xsd:enumeration value="Private"/>
 		</xsd:restriction>
 	</xsd:simpleType>
 
@@ -1220,7 +1226,7 @@
 	<xsd:complexType name="tReceiveTask">
 		<xsd:complexContent>
 			<xsd:extension base="tTask">
-				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<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"/>
@@ -1244,10 +1250,10 @@
 
 	<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:enumeration value="None"/>
+			<xsd:enumeration value="Forward"/>
+			<xsd:enumeration value="Backward"/>
+			<xsd:enumeration value="Both"/>
 		</xsd:restriction>
 	</xsd:simpleType>
 	
@@ -1304,6 +1310,22 @@
 		</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="rootElement" type="tRootElement"/>
 	<xsd:complexType name="tRootElement" abstract="true">
 		<xsd:complexContent>
@@ -1318,7 +1340,7 @@
 				<xsd:sequence>
 					<xsd:element ref="script" minOccurs="0" maxOccurs="1"/>
 				</xsd:sequence>
-				<xsd:attribute name="scriptLanguage" type="xsd:anyURI"/>
+				<xsd:attribute name="scriptFormat" type="xsd:string"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>		
@@ -1334,7 +1356,7 @@
 	<xsd:complexType name="tSendTask">
 		<xsd:complexContent>
 			<xsd:extension base="tTask">
-				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<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>
@@ -1350,7 +1372,7 @@
 				</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:attribute name="isImmediate" type="xsd:boolean" use="optional"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1359,20 +1381,12 @@
 	<xsd:complexType name="tServiceTask">
 		<xsd:complexContent>
 			<xsd:extension base="tTask">
-				<xsd:attribute name="implementation" type="tServiceImplementation" default="WebService"/>
+				<xsd:attribute name="implementation" type="tImplementation" 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>
@@ -1409,20 +1423,30 @@
 	<xsd:complexType name="tStartEvent">
 		<xsd:complexContent>
 			<xsd:extension base="tCatchEvent">
-				<xsd:attribute name="isInterrupting" type="xsd:boolean" default="false"/>
+				<xsd:attribute name="isInterrupting" type="xsd:boolean" default="true"/>
 			</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:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
-				<xsd:attribute name="correlationKeyRef" type="xsd:QName" use="optional"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1432,6 +1456,7 @@
 		<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>
@@ -1461,6 +1486,7 @@
 				<xsd:sequence>
 					<xsd:element ref="text" minOccurs="0" maxOccurs="1"/>
 				</xsd:sequence>
+				<xsd:attribute name="textFormat" type="xsd:string" default="text/plain"/>
 			</xsd:extension>
 		</xsd:complexContent>
 	</xsd:complexType>
@@ -1493,6 +1519,7 @@
 			<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>
@@ -1502,20 +1529,24 @@
 	<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 base="tSubProcess">
+				<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: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="userTask" type="tUserTask" substitutionGroup="flowElement"/>
 	<xsd:complexType name="tUserTask">
 		<xsd:complexContent>
@@ -1523,18 +1554,9 @@
 				<xsd:sequence>
 					<xsd:element ref="rendering" minOccurs="0" maxOccurs="unbounded"/>
 				</xsd:sequence>
-				<xsd:attribute name="implementation" type="tUserTaskImplementation" default="unspecified"/>
+				<xsd:attribute name="implementation" type="tImplementation" 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

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/Person.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/Person.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,6 +1,8 @@
 package org.drools.bpmn2;
 
-public class Person {
+import java.io.Serializable;
+
+public class Person implements Serializable {
     
     private String name;
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/java/org/drools/bpmn2/SimpleBPMNProcessTest.java	2010-05-17 18:51:11 UTC (rev 32924)
@@ -1,11 +1,15 @@
 package org.drools.bpmn2;
 
 import java.io.StringReader;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
 import junit.framework.TestCase;
 
 import org.drools.KnowledgeBase;
@@ -13,7 +17,6 @@
 import org.drools.bpmn2.handler.ReceiveTaskHandler;
 import org.drools.bpmn2.handler.SendTaskHandler;
 import org.drools.bpmn2.handler.ServiceTaskHandler;
-import org.drools.bpmn2.xml.BPMN2SemanticModule;
 import org.drools.bpmn2.xml.BPMNDISemanticModule;
 import org.drools.bpmn2.xml.BPMNSemanticModule;
 import org.drools.bpmn2.xml.XmlBPMNProcessDumper;
@@ -26,37 +29,90 @@
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.compiler.xml.XmlProcessReader;
 import org.drools.io.ResourceFactory;
+import org.drools.persistence.jpa.JPAKnowledgeService;
 import org.drools.process.instance.impl.demo.DoNothingWorkItemHandler;
 import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
 import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 import org.drools.runtime.process.WorkItem;
 import org.drools.runtime.process.WorkItemHandler;
 import org.drools.runtime.process.WorkItemManager;
 import org.drools.runtime.process.WorkflowProcessInstance;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
 
+import bitronix.tm.TransactionManagerServices;
 import bitronix.tm.resource.jdbc.PoolingDataSource;
 
 public class SimpleBPMNProcessTest extends TestCase {
 
-	public void testMinimalProcess() throws Exception {
+	private PoolingDataSource ds1;
+	private EntityManagerFactory emf;
+	private static Server h2Server;
+    
+    static {
+    	try {
+			DeleteDbFiles.execute("", "JPADroolsFlow", true);
+			h2Server = Server.createTcpServer(new String[0]);
+			h2Server.start();
+		} catch (SQLException e) {
+			throw new RuntimeException("can't start h2 server db",e);
+		}
+    }
+    
+    protected void setUp() {
+    	ds1 = new PoolingDataSource();
+        ds1.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");
+    	ds1.setUniqueName("jdbc/testDS1");
+    	ds1.setMaxPoolSize(5);
+    	ds1.setAllowLocalTransactions(true);
+    	ds1.getDriverProperties().setProperty("driverClassName", "org.h2.Driver");
+    	ds1.getDriverProperties().setProperty("url", "jdbc:h2:tcp://localhost/JPADroolsFlow");
+    	ds1.getDriverProperties().setProperty("user", "sa");
+    	ds1.getDriverProperties().setProperty("password", "");
+        ds1.init();
+        emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+    }
+
+    protected void tearDown() {
+    	emf.close();
+        ds1.close();
+    }
+    
+    public void testMinimalProcess() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-MinimalProcess.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ProcessInstance processInstance = ksession.startProcess("Minimal");
 		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
 	}
 
 	public void testMinimalProcessWithGraphical() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-MinimalProcessWithGraphical.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ProcessInstance processInstance = ksession.startProcess("Minimal");
 		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
 	}
 
+	public void testMinimalProcessWithDIGraphical() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-MinimalProcessWithDIGraphical.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ProcessInstance processInstance = ksession.startProcess("Minimal");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+	}
+
+	public void testCompositeProcessWithDIGraphical() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-CompositeProcessWithDIGraphical.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ProcessInstance processInstance = ksession.startProcess("Composite");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+	}
+
     public void testDataObject() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-DataObject.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("employee", "UserId-12345");
         ProcessInstance processInstance = ksession.startProcess("Evaluation", params);
@@ -65,7 +121,7 @@
 
 	public void testEvaluationProcess() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EvaluationProcess.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
 		ksession.getWorkItemManager().registerWorkItemHandler("RegisterRequest", new SystemOutWorkItemHandler());
 		Map<String, Object> params = new HashMap<String, Object>();
@@ -76,7 +132,7 @@
 
 	public void testEvaluationProcess2() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EvaluationProcess2.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
 		Map<String, Object> params = new HashMap<String, Object>();
 		params.put("employee", "UserId-12345");
@@ -86,7 +142,7 @@
 
 	public void testEvaluationProcess3() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EvaluationProcess3.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
 		ksession.getWorkItemManager().registerWorkItemHandler("RegisterRequest", new SystemOutWorkItemHandler());
 		Map<String, Object> params = new HashMap<String, Object>();
@@ -97,21 +153,22 @@
 	
     public void testUserTask() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-UserTask.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
         ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ProcessInstance processInstance = ksession.startProcess("UserTask");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+        ksession = restoreSession(ksession);
         WorkItem workItem = workItemHandler.getWorkItem();
         assertNotNull(workItem);
         assertEquals("john", workItem.getParameter("ActorId"));
         ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+        assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
 	public void testExclusiveSplit() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplit.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Email", new SystemOutWorkItemHandler());
 		Map<String, Object> params = new HashMap<String, Object>();
 		params.put("x", "First");
@@ -122,7 +179,7 @@
 	
 	public void testExclusiveSplitDefault() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-ExclusiveSplitDefault.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Email", new SystemOutWorkItemHandler());
 		Map<String, Object> params = new HashMap<String, Object>();
 		params.put("x", "NotFirst");
@@ -133,7 +190,7 @@
 	
     public void testInclusiveSplit() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-InclusiveSplit.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", 15);
         ProcessInstance processInstance = ksession.startProcess("com.sample.test", params);
@@ -142,7 +199,7 @@
     
     public void testInclusiveSplitDefault() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-InclusiveSplitDefault.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", -5);
         ProcessInstance processInstance = ksession.startProcess("com.sample.test", params);
@@ -163,15 +220,187 @@
 //        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
 //    }
 
+	public void testEventBasedSplit() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.signalEvent("Yes", "YesValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+		// No
+		processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.signalEvent("No", "NoValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+	}
+	
+	public void testEventBasedSplitBefore() throws Exception {
+		// signaling before the split is reached should have no effect
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new DoNothingWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new DoNothingWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+        ksession.signalEvent("Yes", "YesValue", processInstance.getId());
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		// No
+		processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new DoNothingWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+        ksession.signalEvent("No", "NoValue", processInstance.getId());
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+	}
+	
+	public void testEventBasedSplitAfter() throws Exception {
+		// signaling the other alternative after one has been selected should have no effect
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+        ksession.signalEvent("Yes", "YesValue", processInstance.getId());
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new DoNothingWorkItemHandler());
+        // No
+		ksession.signalEvent("No", "NoValue", processInstance.getId());
+	}
+	
+	public void testEventBasedSplit2() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit2.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.signalEvent("Yes", "YesValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+		Thread.sleep(800);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.fireAllRules();
+        ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        // Timer
+		processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		Thread.sleep(800);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.fireAllRules();
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+	}
+	
+	public void testEventBasedSplit3() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit3.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		Person jack = new Person();
+		jack.setName("Jack");
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.signalEvent("Yes", "YesValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+		// Condition
+		processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.insert(jack);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+	}
+	
+	public void testEventBasedSplit4() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit4.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ksession.signalEvent("Message-YesMessage", "YesValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		// No
+		processInstance = ksession.startProcess("com.sample.test");
+		ksession.signalEvent("Message-NoMessage", "NoValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+	}
+	
+	public void testEventBasedSplit5() throws Exception {
+		KnowledgeBase kbase = createKnowledgeBase("BPMN2-EventBasedSplit5.xml");
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+        ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Receive Task", receiveTaskHandler);
+		// Yes
+		ProcessInstance processInstance = ksession.startProcess("com.sample.test");
+		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		receiveTaskHandler.setKnowledgeRuntime(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Receive Task", receiveTaskHandler);
+        receiveTaskHandler.messageReceived("YesMessage", "YesValue");
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+        receiveTaskHandler.messageReceived("NoMessage", "NoValue");
+		ksession = restoreSession(ksession);
+		ksession.getWorkItemManager().registerWorkItemHandler("Email1", new SystemOutWorkItemHandler());
+		ksession.getWorkItemManager().registerWorkItemHandler("Email2", new SystemOutWorkItemHandler());
+		receiveTaskHandler.setKnowledgeRuntime(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Receive Task", receiveTaskHandler);
+		// No
+		processInstance = ksession.startProcess("com.sample.test");
+		receiveTaskHandler.messageReceived("NoMessage", "NoValue");
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
+		receiveTaskHandler.messageReceived("YesMessage", "YesValue");
+	}
+	
 	public void testCallActivity() throws Exception {
-		KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
-		((PackageBuilderConfiguration) conf).initSemanticModules();
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
-		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
-		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivity.xml"), ResourceType.DRF);
-		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivitySubProcess.xml"), ResourceType.DRF);
+		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivity.xml"), ResourceType.BPMN2);
+		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivitySubProcess.xml"), ResourceType.BPMN2);
 		if (!kbuilder.getErrors().isEmpty()) {
 			for (KnowledgeBuilderError error: kbuilder.getErrors()) {
 				System.err.println(error);
@@ -179,7 +408,8 @@
 			throw new IllegalArgumentException("Errors while parsing knowledge base");
 		}
 		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		Map<String, Object> params = new HashMap<String, Object>();
 		params.put("x", "oldValue");
 		ProcessInstance processInstance = ksession.startProcess("ParentProcess", params);
@@ -189,14 +419,14 @@
 
 	public void testSubProcess() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-SubProcess.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ProcessInstance processInstance = ksession.startProcess("SubProcess");
 		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
 	}
 
 	public void testMultiInstanceLoopCharacteristicsProcess() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-MultiInstanceLoopCharacteristicsProcess.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		Map<String, Object> params = new HashMap<String, Object>();
 		List<String> myList = new ArrayList<String>();
 		myList.add("First Item");
@@ -208,66 +438,68 @@
 
     public void testEscalationBoundaryEvent() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-EscalationBoundaryEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("EscalationBoundaryEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
     }
 
     public void testEscalationBoundaryEventInterrupting() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-EscalationBoundaryEventInterrupting.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("MyTask", new DoNothingWorkItemHandler());
         ProcessInstance processInstance = ksession.startProcess("EscalationBoundaryEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+        // TODO: check for cancellation of task
     }
 
     public void testErrorBoundaryEvent() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-ErrorBoundaryEventInterrupting.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("MyTask", new DoNothingWorkItemHandler());
         ProcessInstance processInstance = ksession.startProcess("ErrorBoundaryEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testTimerBoundaryEvent() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerBoundaryEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("MyTask", new DoNothingWorkItemHandler());
         ProcessInstance processInstance = ksession.startProcess("TimerBoundaryEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
         Thread.sleep(1000);
+        ksession = restoreSession(ksession);
         System.out.println("Firing timer");
         ksession.fireAllRules();
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testTimerBoundaryEventInterrupting() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerBoundaryEventInterrupting.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("MyTask", new DoNothingWorkItemHandler());
         ProcessInstance processInstance = ksession.startProcess("TimerBoundaryEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
         Thread.sleep(1000);
+        ksession = restoreSession(ksession);
         System.out.println("Firing timer");
         ksession.fireAllRules();
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testAdHocSubProcess() throws Exception {
 		KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
 		((PackageBuilderConfiguration) conf).initSemanticModules();
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
-		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
         ((PackageBuilderConfiguration) conf).addDialect("XPath", new XPathDialectConfiguration());
 		XmlProcessReader processReader = new XmlProcessReader(
 	        ((PackageBuilderConfiguration) conf).getSemanticModules());
 		RuleFlowProcess p = (RuleFlowProcess)
 		    processReader.read(SimpleBPMNProcessTest.class.getResourceAsStream("/BPMN2-AdHocSubProcess.xml"));
 		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
-		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
+//		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
 		kbuilder.add(ResourceFactory.newReaderResource(
-            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.DRF);
+            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.BPMN2);
 		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-AdHocSubProcess.drl"), ResourceType.DRL);
 		if (!kbuilder.getErrors().isEmpty()) {
 			for (KnowledgeBuilderError error: kbuilder.getErrors()) {
@@ -277,37 +509,39 @@
 		}
 		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
         ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ProcessInstance processInstance = ksession.startProcess("AdHocSubProcess");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
         WorkItem workItem = workItemHandler.getWorkItem();
         assertNull(workItem);
+        ksession = restoreSession(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ksession.fireAllRules();
         System.out.println("Signaling Hello2");
-        processInstance.signalEvent("Hello2", null);
+        ksession.signalEvent("Hello2", null, processInstance.getId());
         workItem = workItemHandler.getWorkItem();
         assertNotNull(workItem);
+        ksession = restoreSession(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
-//        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
     }
 
     public void testAdHocSubProcessAutoComplete() throws Exception {
 		KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
 		((PackageBuilderConfiguration) conf).initSemanticModules();
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
-		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
         ((PackageBuilderConfiguration) conf).addDialect("XPath", new XPathDialectConfiguration());
 		XmlProcessReader processReader = new XmlProcessReader(
 	        ((PackageBuilderConfiguration) conf).getSemanticModules());
 		RuleFlowProcess p = (RuleFlowProcess)
 		    processReader.read(SimpleBPMNProcessTest.class.getResourceAsStream("/BPMN2-AdHocSubProcessAutoComplete.xml"));
 		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
-		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
+//		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
 		kbuilder.add(ResourceFactory.newReaderResource(
-            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.DRF);
+            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.BPMN2);
 		kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-AdHocSubProcess.drl"), ResourceType.DRL);
 		if (!kbuilder.getErrors().isEmpty()) {
 			for (KnowledgeBuilderError error: kbuilder.getErrors()) {
@@ -317,153 +551,157 @@
 		}
 		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         TestWorkItemHandler workItemHandler = new TestWorkItemHandler();
         ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ProcessInstance processInstance = ksession.startProcess("AdHocSubProcess");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
         WorkItem workItem = workItemHandler.getWorkItem();
         assertNull(workItem);
+        ksession = restoreSession(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ksession.fireAllRules();
         workItem = workItemHandler.getWorkItem();
         assertNotNull(workItem);
+        ksession = restoreSession(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler);
         ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
     
     public void testIntermediateCatchEventSignal() throws Exception {
 		KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventSignal.xml");
-		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
 		ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler());
 		ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent");
 		assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
-		// now signal process instance
-		processInstance.signalEvent("MyMessage", "SomeValue");
-		assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		ksession = restoreSession(ksession);
+        // now signal process instance
+		ksession.signalEvent("MyMessage", "SomeValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
 	}
 
     public void testIntermediateCatchEventMessage() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventMessage.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler());
         ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+        ksession = restoreSession(ksession);
         // now signal process instance
-        processInstance.signalEvent("Message-HelloMessage", "SomeValue");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+        ksession.signalEvent("Message-HelloMessage", "SomeValue", processInstance.getId());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testIntermediateCatchEventTimer() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventTimer.xml");
-        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler());
-        new Thread(new Runnable() {
-            public void run() {
-                ksession.fireUntilHalt();
-            }
-        }).start();
         ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
         // now wait for 1 second for timer to trigger
         Thread.sleep(1000);
-        assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
-        ksession.halt();
+        ksession = restoreSession(ksession);
+        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler());
+        ksession.fireAllRules();
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testIntermediateCatchEventCondition() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventCondition.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent");
         assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE);
+        ksession = restoreSession(ksession);
         // now activate condition
         Person person = new Person();
         person.setName("Jack");
         ksession.insert(person);
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
-    public void testErrorEventProcess() throws Exception {
+    public void testErrorEndEventProcess() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-ErrorEndEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("ErrorEndEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_ABORTED);
+		assertProcessInstanceAborted(processInstance.getId(), ksession);
     }
 
     public void testEscalationEndEventProcess() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-EscalationEndEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("EscalationEndEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_ABORTED);
+		assertProcessInstanceAborted(processInstance.getId(), ksession);
     }
 
     public void testEscalationIntermediateThrowEventProcess() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateThrowEventEscalation.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("EscalationIntermediateThrowEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_ABORTED);
+		assertProcessInstanceAborted(processInstance.getId(), ksession);
     }
 
     public void testCompensateIntermediateThrowEventProcess() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateThrowEventCompensate.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("CompensateIntermediateThrowEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testCompensateEndEventProcess() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-CompensateEndEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("CompensateEndEvent");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
-    public void testGraphicalInformation() throws Exception {
-        KnowledgeBase kbase = createKnowledgeBase("BPMN2-OryxExportedExample.xml");
-        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
-        ProcessInstance processInstance = ksession.startProcess("testProzess");
-        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
-    }
+//    public void testGraphicalInformation() throws Exception {
+//        KnowledgeBase kbase = createKnowledgeBase("BPMN2-OryxExportedExample.xml");
+//		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
+//        ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler());
+//        ProcessInstance processInstance = ksession.startProcess("testProzess");
+//        assertTrue(processInstance.getState() == ProcessInstance.STATE_COMPLETED);
+//    }
 
     public void testServiceTask() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-ServiceProcess.xml");
-        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler());
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("s", "john");
         WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
             ksession.startProcess("ServiceProcess", params);
-        assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
         assertEquals("Hello john!", processInstance.getVariable("s"));
     }
 
     public void testSendTask() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-SendTask.xml");
-        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Send Task", new SendTaskHandler());
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("s", "john");
         WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
             ksession.startProcess("SendTask", params);
-        assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testReceiveTask() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-ReceiveTask.xml");
-        final StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler(ksession);
         ksession.getWorkItemManager().registerWorkItemHandler("Receive Task", receiveTaskHandler);
         WorkflowProcessInstance processInstance = (WorkflowProcessInstance)
             ksession.startProcess("ReceiveTask");
         assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState());
-        receiveTaskHandler.messageReceived("java.lang.String", "Hello john!");
-        assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
-        assertEquals("Hello john!", processInstance.getVariable("s"));
+        ksession = restoreSession(ksession);
+        receiveTaskHandler.messageReceived("HelloMessage", "Hello john!");
+		assertProcessInstanceCompleted(processInstance.getId(), ksession);
     }
 
     public void testConditionalStart() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-ConditionalStart.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Person person = new Person();
         person.setName("jack");
         ksession.insert(person);
@@ -476,23 +714,23 @@
     
     public void testTimerStart() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-TimerStart.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Thread.sleep(600);
         for (int i = 0; i < 5; i++) {
-	        ksession.fireAllRules();
+//	        ksession.fireAllRules();
 	        Thread.sleep(500);
         }
     }
     
     public void testSignalStart() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-SignalStart.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.signalEvent("MyStartSignal", "NewValue");
     }
     
     public void testSignalEnd() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-SignalEndEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", "MyValue");
         ksession.startProcess("SignalEndEvent", params);
@@ -500,13 +738,13 @@
     
     public void testMessageStart() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-MessageStart.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.signalEvent("Message-HelloMessage", "NewValue");
     }
     
     public void testMessageEnd() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-MessageEndEvent.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Send Task", new SendTaskHandler());
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", "MyValue");
@@ -516,7 +754,7 @@
     
     public void testMessageIntermediateThrow() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateThrowEventMessage.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ksession.getWorkItemManager().registerWorkItemHandler("Send Task", new SendTaskHandler());
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", "MyValue");
@@ -526,7 +764,7 @@
     
     public void testSignalIntermediateThrow() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateThrowEventSignal.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         Map<String, Object> params = new HashMap<String, Object>();
         params.put("x", "MyValue");
         ProcessInstance processInstance = ksession.startProcess("SignalIntermediateEvent", params);
@@ -535,7 +773,7 @@
     
     public void testNoneIntermediateThrow() throws Exception {
         KnowledgeBase kbase = createKnowledgeBase("BPMN2-IntermediateThrowEventNone.xml");
-        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+		StatefulKnowledgeSession ksession = createKnowledgeSession(kbase);
         ProcessInstance processInstance = ksession.startProcess("NoneIntermediateEvent", null);
         assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
     }
@@ -570,18 +808,17 @@
 	private KnowledgeBase createKnowledgeBase(String process) throws Exception {
 		KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
 		((PackageBuilderConfiguration) conf).initSemanticModules();
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
-		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMN2SemanticModule());
-        ((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNSemanticModule());
+		((PackageBuilderConfiguration) conf).addSemanticModule(new BPMNDISemanticModule());
         ((PackageBuilderConfiguration) conf).addDialect("XPath", new XPathDialectConfiguration());
 		XmlProcessReader processReader = new XmlProcessReader(
 	        ((PackageBuilderConfiguration) conf).getSemanticModules());
 		RuleFlowProcess p = (RuleFlowProcess)
 		    processReader.read(SimpleBPMNProcessTest.class.getResourceAsStream("/" + process));
 		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
-		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
+//		System.out.println(XmlBPMNProcessDumper.INSTANCE.dump(p));
 		kbuilder.add(ResourceFactory.newReaderResource(
-            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.DRF);
+            new StringReader(XmlBPMNProcessDumper.INSTANCE.dump(p))), ResourceType.BPMN2);
 		if (!kbuilder.getErrors().isEmpty()) {
 			for (KnowledgeBuilderError error: kbuilder.getErrors()) {
 				System.err.println(error);
@@ -593,21 +830,31 @@
 		return kbase;
 	}
 	
-	private static void setupDataSource() {
-	    PoolingDataSource ds1 = new PoolingDataSource();
-        ds1.setUniqueName( "jdbc/testDS1" );
-        ds1.setClassName( "org.h2.jdbcx.JdbcDataSource" );
-        ds1.setMaxPoolSize( 3 );
-        ds1.setAllowLocalTransactions( true );
-        ds1.getDriverProperties().put( "user",
-                                       "sa" );
-        ds1.getDriverProperties().put( "password",
-                                       "sasa" );
-        ds1.getDriverProperties().put( "URL",
-                                       "jdbc:h2:mem:mydb" );
-        ds1.init();
+	private StatefulKnowledgeSession createKnowledgeSession(KnowledgeBase kbase) {
+//		return kbase.newStatefulKnowledgeSession();
+	    Environment env = KnowledgeBaseFactory.newEnvironment();
+	    env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
+	    env.set(EnvironmentName.TRANSACTION_MANAGER,
+	        TransactionManagerServices.getTransactionManager());
+		return JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);
 	}
 	
+	private StatefulKnowledgeSession restoreSession(StatefulKnowledgeSession ksession) {
+//		return ksession;
+		int id = ksession.getId();
+		KnowledgeBase kbase = ksession.getKnowledgeBase();
+		Environment env = ksession.getEnvironment();
+		return JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
+	}
+	
+	private void assertProcessInstanceCompleted(long processInstanceId, StatefulKnowledgeSession ksession) {
+		assertNull(ksession.getProcessInstance(processInstanceId));
+	}
+	
+	private void assertProcessInstanceAborted(long processInstanceId, StatefulKnowledgeSession ksession) {
+		assertNull(ksession.getProcessInstance(processInstanceId));
+	}
+	
 	private static class TestWorkItemHandler implements WorkItemHandler {
 	    private WorkItem workItem;
         public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.drl
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.drl	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.drl	2010-05-17 18:51:11 UTC (rev 32924)
@@ -5,5 +5,8 @@
 rule "Auto-activate Hello1" ruleflow-group "Hello"
   when
   then
+    System.out.println(drools);
+    System.out.println(drools.getContext(ProcessContext.class));
+    System.out.println(drools.getContext(ProcessContext.class).getProcessInstance());
     drools.getContext(ProcessContext.class).getProcessInstance().signalEvent("Hello1", null);
 end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <process id="AdHocSubProcess" name="AdHoc SubProcess">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcessAutoComplete.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcessAutoComplete.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-AdHocSubProcessAutoComplete.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <process id="AdHocSubProcess" name="AdHoc SubProcess">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-BuyerProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-BuyerProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-BuyerProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,7 +3,7 @@
              targetNamespace="http://www.example.org/UserTaskExample"
              typeLanguage="http://www.w3.org/2001/XMLSchema"
              expressionLanguage="http://www.w3.org/1999/XPath"
-             xmlns="http://www.omg.org/bpmn20"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:tns="http://www.example.org/UserTaskExample">
 
   <resource id="regionalManager" name="Regional Manager">
@@ -32,7 +32,7 @@
       </potentialOwner>
     </userTask>
     <sequenceFlow sourceRef="ApproveOrder" targetRef="OrderApprovedDecision"/>
-    <exclusiveGateway id="OrderApprovedDecision" gatewayDirection="diverging"/>
+    <exclusiveGateway id="OrderApprovedDecision" gatewayDirection="Diverging"/>
     <sequenceFlow sourceRef="OrderApprovedDecision" targetRef="OrderAndShipment">
       <conditionExpression>Was the Order Approved?</conditionExpression>
     </sequenceFlow>
@@ -42,14 +42,14 @@
     <endEvent id="TerminateProcess">
       <terminateEventDefinition id="TerminateEvent"/>
     </endEvent>
-    <parallelGateway id="OrderAndShipment" gatewayDirection="diverging"/>
+    <parallelGateway id="OrderAndShipment" gatewayDirection="Diverging"/>
     <sequenceFlow sourceRef="OrderAndShipment" targetRef="OrderHandling"/>
     <sequenceFlow sourceRef="OrderAndShipment" targetRef="ShipmentHandling"/>
     <task id="OrderHandling" name="Order Handling"/>
     <task id="ShipmentHandling" name="Shipment Handling"/>
     <sequenceFlow sourceRef="OrderHandling" targetRef="OrderAndShipmentMerge"/>
     <sequenceFlow sourceRef="ShipmentHandling" targetRef="OrderAndShipmentMerge"/>
-    <parallelGateway id="OrderAndShipmentMerge" gatewayDirection="converging"/>
+    <parallelGateway id="OrderAndShipmentMerge" gatewayDirection="Converging"/>
     <userTask id="ReviewOrder" name="Review Order">
       <potentialOwner resourceRef="tns:departmentalReviewer">
         <resourceParameterBinding parameterRef="tns:buyerName">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivity.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivity.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivity.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivitySubProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivitySubProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CallActivitySubProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="subXType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompensateEndEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompositeProcessWithDIGraphical.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompositeProcessWithDIGraphical.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-CompositeProcessWithDIGraphical.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+             targetNamespace="http://www.example.org/MinimalExample"
+             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:bpmndi="http://www.omg.org/spec/BPMN/20100524/BPMNDI"
+             xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
+             xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
+             xmlns:g="http://www.jboss.org/drools/flow/gpd"
+             xmlns:tns="http://www.example.org/MinimalExample">
+
+  <process id="Composite" name="Composite Process" >
+
+    <!-- nodes -->
+    <startEvent id="_1" name="StartProcess" />
+    <subProcess id="_2" name="Sub-Process" >
+      <!-- nodes -->
+      <startEvent id="_2-1" name="Start" />
+      <scriptTask id="_2-2" name="Script" >
+        <script>System.out.println("Hello World");</script>
+      </scriptTask>
+      <endEvent id="_2-3" name="End" />
+      <!-- connections -->
+      <sequenceFlow id="_2-1-_2-2" sourceRef="_2-1" targetRef="_2-2" />
+      <sequenceFlow id="_2-2-_2-3" sourceRef="_2-2" targetRef="_2-3" />
+    </subProcess>
+    <endEvent id="_3" name="EndProcess" >
+        <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2" />
+    <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
+
+  </process>
+
+  <bpmndi:BPMNDiagram id="MinimalDiagram">
+    <bpmndi:BPMNPlane bpmnElement="Minimal">
+      <bpmndi:BPMNShape bpmnElement="_1">
+        <dc:Bounds x="16" y="101" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="_2">
+        <dc:Bounds x="96" y="16" width="243" height="218"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="_2-1">
+        <dc:Bounds x="113" y="54" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="_2-2">
+        <dc:Bounds x="207" y="55" width="80" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="_2-3">
+        <dc:Bounds x="118" y="147" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="_3">
+        <dc:Bounds x="371" y="101" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="_1-_2">
+        <di:waypoint x="40" y="125"/>
+        <di:waypoint x="217" y="125"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="_2-1-_2-2">
+        <di:waypoint x="137" y="78"/>
+        <di:waypoint x="247" y="79"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="_2-2-_2-3">
+        <di:waypoint x="247" y="79"/>
+        <di:waypoint x="247" y="171"/>
+        <di:waypoint x="142" y="171"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="_2-_3">
+        <di:waypoint x="217" y="125"/>
+        <di:waypoint x="395" y="125"/>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+
+</definitions>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ConditionalStart.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ConditionalStart.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ConditionalStart.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,12 +3,12 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.jboss.org/drools">
 
-  <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+  <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
     <startEvent id="_1" name="StartProcess">
       <conditionalEventDefinition>
         <condition>org.drools.bpmn2.Person(name == "john")</condition>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-DataObject.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-DataObject.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-DataObject.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/EvaluationExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/EvaluationExample">
 
   <!-- item definitions -->

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorBoundaryEventInterrupting.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorBoundaryEventInterrupting.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorBoundaryEventInterrupting.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,21 +3,23 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <error id="MyError" errorCode="MyError" />
+
   <process id="ErrorBoundaryEvent" name="Error Boundary Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <subProcess id="_2" name="Hello" >
       <startEvent id="_2-1" name="StartSubProcess"/>
       <sequenceFlow sourceRef="_2-1" targetRef="_2-2"/>
-      <parallelGateway id="_2-2" gatewayDirection="diverging"/>
+      <parallelGateway id="_2-2" gatewayDirection="Diverging"/>
       <sequenceFlow sourceRef="_2-2" targetRef="_2-3"/>
       <endEvent id="_2-3" name="ErrorEvent">
-        <errorEventDefinition errorCode="MyError"/>
+        <errorEventDefinition errorRef="MyError"/>
       </endEvent>
       <sequenceFlow sourceRef="_2-2" targetRef="_2-4"/>
       <task id="_2-4" name="Task" tns:taskName="MyTask" />
@@ -29,7 +31,7 @@
       <terminateEventDefinition/>
     </endEvent>
     <boundaryEvent id="_4" name="ErrorEvent" attachedToRef="_2" >
-      <errorEventDefinition errorCode="MyError" />
+      <errorEventDefinition errorRef="MyError" />
     </boundaryEvent>
     <sequenceFlow sourceRef="_4" targetRef="_5"/>
     <scriptTask id="_5" name="Goodbye">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorEndEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ErrorEndEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,16 +3,18 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <error id="error" errorCode="error" />
+
   <process id="ErrorEndEvent" name="Error End Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <endEvent id="_2" name="ErrorEvent">
-      <errorEventDefinition errorCode="error"/>
+      <errorEventDefinition errorRef="error"/>
     </endEvent>
   </process>
 </definitions>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,11 +3,13 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <escalation id="MyEscalation" escalationCode="MyEscalation" />
+
   <process id="EscalationBoundaryEvent" name="Escalation Boundary Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
@@ -15,7 +17,7 @@
       <startEvent id="_2-1" name="StartSubProcess"/>
       <sequenceFlow sourceRef="_2-1" targetRef="_2-2"/>
       <endEvent id="_2-2" name="EscalationEvent">
-        <escalationEventDefinition escalationCode="MyEscalation"/>
+        <escalationEventDefinition escalationRef="MyEscalation"/>
       </endEvent>
     </subProcess>
     <sequenceFlow sourceRef="_2" targetRef="_3"/>
@@ -23,7 +25,7 @@
       <terminateEventDefinition/>
     </endEvent>
     <boundaryEvent id="_4" name="EscalationEvent" attachedToRef="_2" cancelActivity="false">
-      <escalationEventDefinition escalationCode="MyEscalation" />
+      <escalationEventDefinition escalationRef="MyEscalation" />
     </boundaryEvent>
     <sequenceFlow sourceRef="_4" targetRef="_5"/>
     <scriptTask id="_5" name="Goodbye">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEventInterrupting.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEventInterrupting.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationBoundaryEventInterrupting.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,21 +3,23 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <escalation id="MyEscalation" escalationCode="MyEscalation" />
+
   <process id="EscalationBoundaryEvent" name="Escalation Boundary Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <subProcess id="_2" name="Hello" >
       <startEvent id="_2-1" name="StartSubProcess"/>
       <sequenceFlow sourceRef="_2-1" targetRef="_2-2"/>
-      <parallelGateway id="_2-2" gatewayDirection="diverging"/>
+      <parallelGateway id="_2-2" gatewayDirection="Diverging"/>
       <sequenceFlow sourceRef="_2-2" targetRef="_2-3"/>
       <endEvent id="_2-3" name="EscalationEvent">
-        <escalationEventDefinition escalationCode="MyEscalation"/>
+        <escalationEventDefinition escalationRef="MyEscalation"/>
       </endEvent>
       <sequenceFlow sourceRef="_2-2" targetRef="_2-4"/>
       <task id="_2-4" name="Task" tns:taskName="MyTask" />
@@ -29,7 +31,7 @@
       <terminateEventDefinition/>
     </endEvent>
     <boundaryEvent id="_4" name="EscalationEvent" attachedToRef="_2" >
-      <escalationEventDefinition escalationCode="MyEscalation" />
+      <escalationEventDefinition escalationRef="MyEscalation" />
     </boundaryEvent>
     <sequenceFlow sourceRef="_4" targetRef="_5"/>
     <scriptTask id="_5" name="Goodbye">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationEndEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EscalationEndEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,16 +3,18 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <escalation id="MyEscalation" escalationCode="MyEscalation" />
+
   <process id="EscalationEndEvent" name="Escalation End Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <endEvent id="_2" name="EscalationEvent">
-      <escalationEventDefinition escalationCode="MyEscalation"/>
+      <escalationEventDefinition escalationRef="MyEscalation"/>
     </endEvent>
   </process>
 </definitions>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/EvaluationExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/EvaluationExample">
 
   <!-- resources -->
@@ -25,7 +25,7 @@
     <scriptTask id="_2" name="Log">
       <script>System.out.println("Processing evaluation for employee " + employee);</script>
     </scriptTask>
-    <parallelGateway id="_3" name="Diverge" gatewayDirection="diverging"/>
+    <parallelGateway id="_3" name="Diverge" gatewayDirection="Diverging"/>
     <task id="_4" name="RegisterRequest" tns:taskName="RegisterRequest">
       <ioSpecification>
         <dataInput id="_4_employeeIdInput" name="employeeId" />
@@ -41,7 +41,7 @@
     </task>
     <userTask id="_5" name="Two">
     </userTask>
-    <parallelGateway id="_6" name="Converge" gatewayDirection="converging"/>
+    <parallelGateway id="_6" name="Converge" gatewayDirection="Converging"/>
     <endEvent id="_7" name="EndProcess">
       <terminateEventDefinition/>
     </endEvent>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess2.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess2.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess2.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,16 +3,14 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
   <itemDefinition id="employeeItem" structureRef="java.lang.Object" />
 
-  <resource id="Actor" name="Human Actor" />
-
   <process id="com.sample.evaluation" name="Evaluation" >
 
     <!-- process variables -->
@@ -37,63 +35,48 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_2_Comment" />
-      <property id="_2_TaskName" />
-      <property id="_2_Priority" />
-      <property id="_2_Content" />
-      <property id="_2_Skippable" />
       <dataInputAssociation>
+        <targetRef>_2_CommentInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">You need to perform a self evaluation</from>
           <to xs:type="tFormalExpression">_2_CommentInput</to>
         </assignment>
-        <sourceRef>_2_Comment</sourceRef>
-        <targetRef>_2_CommentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_2_TaskNameInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Performance Evaluation</from>
           <to xs:type="tFormalExpression">_2_TaskNameInput</to>
         </assignment>
-        <sourceRef>_2_TaskName</sourceRef>
-        <targetRef>_2_TaskNameInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_2_PriorityInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">1</from>
           <to xs:type="tFormalExpression">_2_PriorityInput</to>
         </assignment>
-        <sourceRef>_2_Priority</sourceRef>
-        <targetRef>_2_PriorityInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
-        <assignment>org.w3c.dom.Node nameNode = xmlNode.getAttributes().getNamedItem("name");
-        		if (nameNode != null) {
-        			String name = nameNode.getNodeValue();
-        			sequenceFlow.setName(name);
-        		}
-        		
+        <targetRef>_2_ContentInput</targetRef>
+        <assignment>
           <from xs:type="tFormalExpression"></from>
           <to xs:type="tFormalExpression">_2_ContentInput</to>
         </assignment>
-        <sourceRef>_2_Content</sourceRef>
-        <targetRef>_2_ContentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_2_SkippableInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">false</from>
           <to xs:type="tFormalExpression">_2_SkippableInput</to>
         </assignment>
-        <sourceRef>_2_Skippable</sourceRef>
-        <targetRef>_2_SkippableInput</targetRef>
       </dataInputAssociation>
-      <potentialOwner resourceRef="tns:Actor" >
+      <potentialOwner>
         <resourceAssignmentExpression>
           <formalExpression>#{employee}</formalExpression>
         </resourceAssignmentExpression>
       </potentialOwner>
     </userTask>
-    <parallelGateway id="_3" name="Diverge" g:x="228" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" />
+    <parallelGateway id="_3" name="Diverge" g:x="228" g:y="56" g:width="49" g:height="49" gatewayDirection="Diverging" />
     <userTask id="_4" name="Project Manager" g:x="309" g:y="16" g:width="122" g:height="48" >
       <ioSpecification>
         <dataInput id="_4_CommentInput" name="Comment" />
@@ -111,57 +94,42 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_4_Comment" />
-      <property id="_4_TaskName" />
-      <property id="_4_Priority" />
-      <property id="_4_Content" />
-      <property id="_4_Skippable" />
       <dataInputAssociation>
+        <targetRef>_4_CommentInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">You need to perform an evaluation for employee #{employee}</from>
           <to xs:type="tFormalExpression">_4_CommentInput</to>
         </assignment>
-        <sourceRef>_4_Comment</sourceRef>
-        <targetRef>_4_CommentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_4_TaskNameInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Performance Evaluation</from>
           <to xs:type="tFormalExpression">_4_TaskNameInput</to>
         </assignment>
-        <sourceRef>_4_TaskName</sourceRef>
-        <targetRef>_4_TaskNameInput</targetRef>
-      </dataInputAssociation>org.w3c.dom.Node nameNode = xmlNode.getAttributes().getNamedItem("name");
-        		if (nameNode != null) {
-        			String name = nameNode.getNodeValue();
-        			sequenceFlow.setName(name);
-        		}
-        		
+      </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_4_PriorityInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">1</from>
           <to xs:type="tFormalExpression">_4_PriorityInput</to>
         </assignment>
-        <sourceRef>_4_Priority</sourceRef>
-        <targetRef>_4_PriorityInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_4_ContentInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression"></from>
           <to xs:type="tFormalExpression">_4_ContentInput</to>
         </assignment>
-        <sourceRef>_4_Content</sourceRef>
-        <targetRef>_4_ContentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_4_SkippableInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">false</from>
           <to xs:type="tFormalExpression">_4_SkippableInput</to>
         </assignment>
-        <sourceRef>_4_Skippable</sourceRef>
-        <targetRef>_4_SkippableInput</targetRef>
       </dataInputAssociation>
-      <potentialOwner resourceRef="tns:Actor" >
+      <potentialOwner>
         <resourceAssignmentExpression>
           <formalExpression>john</formalExpression>
         </resourceAssignmentExpression>
@@ -184,58 +152,48 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_5_Comment" />
-      <property id="_5_TaskName" />
-      <property id="_5_Priority" />
-      <property id="_5_Content" />
-      <property id="_5_Skippable" />
       <dataInputAssociation>
+        <targetRef>_5_CommentInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">You need to perform an evaluation for employee #{employee}</from>
           <to xs:type="tFormalExpression">_5_CommentInput</to>
         </assignment>
-        <sourceRef>_5_Comment</sourceRef>
-        <targetRef>_5_CommentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_5_TaskNameInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Performance Evaluation</from>
           <to xs:type="tFormalExpression">_5_TaskNameInput</to>
         </assignment>
-        <sourceRef>_5_TaskName</sourceRef>
-        <targetRef>_5_TaskNameInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_5_PriorityInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">1</from>
           <to xs:type="tFormalExpression">_5_PriorityInput</to>
         </assignment>
-        <sourceRef>_5_Priority</sourceRef>
-        <targetRef>_5_PriorityInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_5_ContentInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression"></from>
           <to xs:type="tFormalExpression">_5_ContentInput</to>
         </assignment>
-        <sourceRef>_5_Content</sourceRef>
-        <targetRef>_5_ContentInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_5_SkippableInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">false</from>
           <to xs:type="tFormalExpression">_5_SkippableInput</to>
         </assignment>
-        <sourceRef>_5_Skippable</sourceRef>
-        <targetRef>_5_SkippableInput</targetRef>
       </dataInputAssociation>
-      <potentialOwner resourceRef="tns:Actor" >
+      <potentialOwner>
         <resourceAssignmentExpression>
           <formalExpression>mary</formalExpression>
         </resourceAssignmentExpression>
       </potentialOwner>
     </userTask>
-    <parallelGateway id="_6" name="Converge" g:x="463" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" />
+    <parallelGateway id="_6" name="Converge" g:x="463" g:y="56" g:width="49" g:height="49" gatewayDirection="Converging" />
     <endEvent id="_7" name="EndProcess" g:x="547" g:y="56" g:width="48" g:height="48" >
       <terminateEventDefinition/>
     </endEvent>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess3.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess3.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EvaluationProcess3.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/EvaluationExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/EvaluationExample">
 
   <!-- resources -->
@@ -25,7 +25,7 @@
     <scriptTask id="_2" name="Log">
       <script>System.out.println("Processing evaluation for employee " + employee);</script>
     </scriptTask>
-    <exclusiveGateway id="_3" name="Diverge" gatewayDirection="diverging"/>
+    <exclusiveGateway id="_3" name="Diverge" gatewayDirection="Diverging"/>
     <sequenceFlow sourceRef="_3" targetRef="_4">
       <conditionExpression>return employee == "john";</conditionExpression>
     </sequenceFlow>
@@ -42,23 +42,21 @@
         </inputSet>
         <outputSet/>
       </ioSpecification>
-      <property id="_4_actorId" itemSubjectRef="java.lang.String" />
       <dataInputAssociation>
         <sourceRef>employee</sourceRef>
         <targetRef>_4_employeeIdInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_4_actorIdInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">John</from>
           <to xs:type="tFormalExpression">_4_actorId</to>
         </assignment>
-        <sourceRef>_4_actorId</sourceRef>
-        <targetRef>_4_actorIdInput</targetRef>
       </dataInputAssociation>
     </task>
     <userTask id="_5" name="Two">
     </userTask>
-    <exclusiveGateway id="_6" name="Converge" gatewayDirection="converging"/>
+    <exclusiveGateway id="_6" name="Converge" gatewayDirection="Converging"/>
     <endEvent id="_7" name="EndProcess">
       <terminateEventDefinition/>
     </endEvent>

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<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">
+
+  <itemDefinition id="xItem" structureRef="java.lang.String" />
+
+  <process id="com.sample.test" name="Test" >
+
+    <!-- process variables -->
+    <property id="x" itemSubjectRef="xItem"/>
+
+    <!-- nodes -->
+    <startEvent id="_1" name="Start" />
+    <task id="_11" name="Email1" tns:taskName="Email1">
+    </task>
+    <eventBasedGateway id="_2" name="Split" gatewayDirection="Diverging" />
+    <intermediateCatchEvent id="_3" name="event">
+      <dataOutput id="_3_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_3_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_3_Output</dataOutputRefs>
+      </outputSet>
+      <signalEventDefinition signalRef="Yes" />
+    </intermediateCatchEvent>
+    <scriptTask id="_9" name="Script" >
+      <script>System.out.println("Executing Yes");</script>
+    </scriptTask>
+    <intermediateCatchEvent id="_4" name="event">
+      <dataOutput id="_4_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_4_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_4_Output</dataOutputRefs>
+      </outputSet>
+      <signalEventDefinition signalRef="No" />
+    </intermediateCatchEvent>
+    <scriptTask id="_10" name="Script" >
+      <script>System.out.println("Executing No");</script>
+    </scriptTask>
+    <exclusiveGateway id="_5" name="Join" gatewayDirection="Converging" />
+    <scriptTask id="_6" name="Script" >
+      <script>System.out.println("x=" + x);</script>
+    </scriptTask>
+    <task id="_7" name="Email2" tns:taskName="Email2">
+    </task>
+    <endEvent id="_8" name="End" >
+      <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow sourceRef="_1" targetRef="_11" />
+    <sequenceFlow sourceRef="_11" targetRef="_2" />
+    <sequenceFlow sourceRef="_2" targetRef="_3" name="Yes" >
+      <conditionExpression>return x == "First";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_2" targetRef="_4" name="No" >
+      <conditionExpression>return x == "Second";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_3" targetRef="_9" />
+    <sequenceFlow sourceRef="_9" targetRef="_5" />
+    <sequenceFlow sourceRef="_4" targetRef="_10" />
+    <sequenceFlow sourceRef="_10" targetRef="_5" />
+    <sequenceFlow sourceRef="_5" targetRef="_6" />
+    <sequenceFlow sourceRef="_6" targetRef="_7" />
+    <sequenceFlow sourceRef="_7" targetRef="_8" />
+
+  </process>
+
+</definitions>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit2.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit2.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit2.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<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">
+
+  <itemDefinition id="xItem" structureRef="java.lang.String" />
+
+  <process id="com.sample.test" name="Test" >
+
+    <!-- process variables -->
+    <property id="x" itemSubjectRef="xItem"/>
+
+    <!-- nodes -->
+    <startEvent id="_1" name="Start" />
+    <task id="_11" name="Email1" tns:taskName="Email1">
+    </task>
+    <eventBasedGateway id="_2" name="Split" gatewayDirection="Diverging" />
+    <intermediateCatchEvent id="_3" name="event">
+      <dataOutput id="_3_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_3_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_3_Output</dataOutputRefs>
+      </outputSet>
+      <signalEventDefinition signalRef="Yes" />
+    </intermediateCatchEvent>
+    <scriptTask id="_9" name="Script" >
+      <script>System.out.println("Executing Yes");</script>
+    </scriptTask>
+    <intermediateCatchEvent id="_4" name="timer">
+      <timerEventDefinition>
+        <timeCycle xs:type="tFormalExpression">500ms</timeCycle>
+      </timerEventDefinition>
+    </intermediateCatchEvent>
+    <scriptTask id="_10" name="Script" >
+      <script>System.out.println("Executing Timer");</script>
+    </scriptTask>
+    <exclusiveGateway id="_5" name="Join" gatewayDirection="Converging" />
+    <scriptTask id="_6" name="Script" >
+      <script>System.out.println("x=" + x);</script>
+    </scriptTask>
+    <task id="_7" name="Email2" tns:taskName="Email2">
+    </task>
+    <endEvent id="_8" name="End" >
+      <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow sourceRef="_1" targetRef="_11" />
+    <sequenceFlow sourceRef="_11" targetRef="_2" />
+    <sequenceFlow sourceRef="_2" targetRef="_3" name="Yes" >
+      <conditionExpression>return x == "First";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_2" targetRef="_4" name="No" >
+      <conditionExpression>return x == "Second";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_3" targetRef="_9" />
+    <sequenceFlow sourceRef="_9" targetRef="_5" />
+    <sequenceFlow sourceRef="_4" targetRef="_10" />
+    <sequenceFlow sourceRef="_10" targetRef="_5" />
+    <sequenceFlow sourceRef="_5" targetRef="_6" />
+    <sequenceFlow sourceRef="_6" targetRef="_7" />
+    <sequenceFlow sourceRef="_7" targetRef="_8" />
+
+  </process>
+
+</definitions>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit3.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit3.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit3.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<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">
+
+  <itemDefinition id="xItem" structureRef="java.lang.String" />
+
+  <process id="com.sample.test" name="Test" >
+
+    <!-- process variables -->
+    <property id="x" itemSubjectRef="xItem"/>
+
+    <!-- nodes -->
+    <startEvent id="_1" name="Start" />
+    <task id="_11" name="Email1" tns:taskName="Email1">
+    </task>
+    <eventBasedGateway id="_2" name="Split" gatewayDirection="Diverging" />
+    <intermediateCatchEvent id="_3" name="event">
+      <dataOutput id="_3_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_3_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_3_Output</dataOutputRefs>
+      </outputSet>
+      <signalEventDefinition signalRef="Yes" />
+    </intermediateCatchEvent>
+    <scriptTask id="_9" name="Script" >
+      <script>System.out.println("Executing Yes");</script>
+    </scriptTask>
+    <intermediateCatchEvent id="_4" name="condition">
+      <conditionalEventDefinition>
+        <condition>org.drools.bpmn2.Person(name == "Jack")</condition>
+      </conditionalEventDefinition>
+    </intermediateCatchEvent>
+    <scriptTask id="_10" name="Script" >
+      <script>System.out.println("Executing Condition");</script>
+    </scriptTask>
+    <exclusiveGateway id="_5" name="Join" gatewayDirection="Converging" />
+    <scriptTask id="_6" name="Script" >
+      <script>System.out.println("x=" + x);</script>
+    </scriptTask>
+    <task id="_7" name="Email2" tns:taskName="Email2">
+    </task>
+    <endEvent id="_8" name="End" >
+      <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow sourceRef="_1" targetRef="_11" />
+    <sequenceFlow sourceRef="_11" targetRef="_2" />
+    <sequenceFlow sourceRef="_2" targetRef="_3" name="Yes" >
+      <conditionExpression>return x == "First";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_2" targetRef="_4" name="No" >
+      <conditionExpression>return x == "Second";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_3" targetRef="_9" />
+    <sequenceFlow sourceRef="_9" targetRef="_5" />
+    <sequenceFlow sourceRef="_4" targetRef="_10" />
+    <sequenceFlow sourceRef="_10" targetRef="_5" />
+    <sequenceFlow sourceRef="_5" targetRef="_6" />
+    <sequenceFlow sourceRef="_6" targetRef="_7" />
+    <sequenceFlow sourceRef="_7" targetRef="_8" />
+
+  </process>
+
+</definitions>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit4.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit4.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit4.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<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">
+
+  <itemDefinition id="xItem" structureRef="java.lang.String" />
+
+  <itemDefinition id="StringType" structureRef="java.lang.String" />
+  <message id="YesMessage" itemRef="StringType"/>
+  <message id="NoMessage" itemRef="StringType"/>
+
+  <process id="com.sample.test" name="Test" >
+
+    <!-- process variables -->
+    <property id="x" itemSubjectRef="xItem"/>
+
+    <!-- nodes -->
+    <startEvent id="_1" name="Start" />
+    <task id="_11" name="Email1" tns:taskName="Email1">
+    </task>
+    <eventBasedGateway id="_2" name="Split" gatewayDirection="Diverging" />
+    <intermediateCatchEvent id="_3" name="Yes">
+      <dataOutput id="_3_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_3_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_3_Output</dataOutputRefs>
+      </outputSet>
+      <messageEventDefinition messageRef="YesMessage" />
+    </intermediateCatchEvent>
+    <scriptTask id="_9" name="Script" >
+      <script>System.out.println("Executing Yes");</script>
+    </scriptTask>
+    <intermediateCatchEvent id="_4" name="No">
+      <dataOutput id="_4_Output" />
+      <dataOutputAssociation>
+        <sourceRef>_4_Output</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+      <outputSet>
+        <dataOutputRefs>_4_Output</dataOutputRefs>
+      </outputSet>
+      <messageEventDefinition messageRef="NoMessage" />
+    </intermediateCatchEvent>
+    <scriptTask id="_10" name="Script" >
+      <script>System.out.println("Executing No");</script>
+    </scriptTask>
+    <exclusiveGateway id="_5" name="Join" gatewayDirection="Converging" />
+    <scriptTask id="_6" name="Script" >
+      <script>System.out.println("x=" + x);</script>
+    </scriptTask>
+    <task id="_7" name="Email2" tns:taskName="Email2">
+    </task>
+    <endEvent id="_8" name="End" >
+      <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow sourceRef="_1" targetRef="_11" />
+    <sequenceFlow sourceRef="_11" targetRef="_2" />
+    <sequenceFlow sourceRef="_2" targetRef="_3" name="Yes" >
+      <conditionExpression>return x == "First";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_2" targetRef="_4" name="No" >
+      <conditionExpression>return x == "Second";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_3" targetRef="_9" />
+    <sequenceFlow sourceRef="_9" targetRef="_5" />
+    <sequenceFlow sourceRef="_4" targetRef="_10" />
+    <sequenceFlow sourceRef="_10" targetRef="_5" />
+    <sequenceFlow sourceRef="_5" targetRef="_6" />
+    <sequenceFlow sourceRef="_6" targetRef="_7" />
+    <sequenceFlow sourceRef="_7" targetRef="_8" />
+
+  </process>
+
+</definitions>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit5.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit5.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-EventBasedSplit5.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<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">
+
+  <itemDefinition id="xItem" structureRef="java.lang.String" />
+
+  <itemDefinition id="StringType" structureRef="java.lang.String" />
+  <message id="YesMessage" itemRef="StringType"/>
+  <message id="NoMessage" itemRef="StringType"/>
+
+  <process id="com.sample.test" name="Test" >
+
+    <!-- process variables -->
+    <property id="x" itemSubjectRef="xItem"/>
+
+    <!-- nodes -->
+    <startEvent id="_1" name="Start" />
+    <task id="_11" name="Email1" tns:taskName="Email1">
+    </task>
+    <eventBasedGateway id="_2" name="Split" gatewayDirection="Diverging" />
+    <receiveTask id="_3" name="Yes" messageRef="YesMessage">
+      <ioSpecification>
+        <dataOutput id="_3_param" name="Message" />
+        <inputSet/>
+        <outputSet>
+          <dataOutputRefs>_3_param</dataOutputRefs>
+        </outputSet>
+      </ioSpecification>
+      <dataOutputAssociation>
+        <sourceRef>_3_param</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+    </receiveTask>
+    <scriptTask id="_9" name="Script" >
+      <script>System.out.println("Executing Yes");</script>
+    </scriptTask>
+    <receiveTask id="_4" name="No" messageRef="NoMessage">
+      <ioSpecification>
+        <dataOutput id="_4_param" name="Message" />
+        <inputSet/>
+        <outputSet>
+          <dataOutputRefs>_4_param</dataOutputRefs>
+        </outputSet>
+      </ioSpecification>
+      <dataOutputAssociation>
+        <sourceRef>_4_param</sourceRef>
+        <targetRef>x</targetRef>
+      </dataOutputAssociation>
+    </receiveTask>
+    <scriptTask id="_10" name="Script" >
+      <script>System.out.println("Executing No");</script>
+    </scriptTask>
+    <exclusiveGateway id="_5" name="Join" gatewayDirection="Converging" />
+    <scriptTask id="_6" name="Script" >
+      <script>System.out.println("x=" + x);</script>
+    </scriptTask>
+    <task id="_7" name="Email2" tns:taskName="Email2">
+    </task>
+    <endEvent id="_8" name="End" >
+      <terminateEventDefinition/>
+    </endEvent>
+
+    <!-- connections -->
+    <sequenceFlow sourceRef="_1" targetRef="_11" />
+    <sequenceFlow sourceRef="_11" targetRef="_2" />
+    <sequenceFlow sourceRef="_2" targetRef="_3" name="Yes" >
+      <conditionExpression>return x == "First";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_2" targetRef="_4" name="No" >
+      <conditionExpression>return x == "Second";</conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow sourceRef="_3" targetRef="_9" />
+    <sequenceFlow sourceRef="_9" targetRef="_5" />
+    <sequenceFlow sourceRef="_4" targetRef="_10" />
+    <sequenceFlow sourceRef="_10" targetRef="_5" />
+    <sequenceFlow sourceRef="_5" targetRef="_6" />
+    <sequenceFlow sourceRef="_6" targetRef="_7" />
+    <sequenceFlow sourceRef="_7" targetRef="_8" />
+
+  </process>
+
+</definitions>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplit.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplit.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplit.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
@@ -20,14 +20,14 @@
 
     <!-- nodes -->
     <startEvent id="_1" name="Start" g:x="16" g:y="56" g:width="48" g:height="48" />
-    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" />
+    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="Diverging" />
     <scriptTask id="_3" name="Script1" g:x="177" g:y="16" g:width="80" g:height="48">
       <script>System.out.println("x=" + x);</script>
     </scriptTask>
     <scriptTask id="_4" name="Script2" g:x="177" g:y="96" g:width="80" g:height="48">
       <script>System.out.println("y=" + y);</script>
     </scriptTask>
-    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" />
+    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="Converging" />
     <task id="_6" name="Email" g:x="163" g:y="180" g:width="100" g:height="48" tns:taskName="Email">
       <ioSpecification>
         <dataInput id="_6_FromInput" name="From" />
@@ -43,41 +43,33 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_6_From" />
-      <property id="_6_Subject" />
-      <property id="_6_To" />
-      <property id="_6_Body" />
       <dataInputAssociation>
+        <targetRef>_6_FromInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">me at mail.com</from>
           <to xs:type="tFormalExpression">_6_From</to>
         </assignment>
-        <sourceRef>_6_From</sourceRef>
-        <targetRef>_6_FromInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_SubjectInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Urgent email !</from>
           <to xs:type="tFormalExpression">_6_Subject</to>
         </assignment>
-        <sourceRef>_6_Subject</sourceRef>
-        <targetRef>_6_SubjectInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_ToInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">you at mail.com</from>
           <to xs:type="tFormalExpression">_6_To</to>
         </assignment>
-        <sourceRef>_6_To</sourceRef>
-        <targetRef>_6_ToInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_BodyInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">This is an urgent email #{x}</from>
           <to xs:type="tFormalExpression">_6_Body</to>
         </assignment>
-        <sourceRef>_6_Body</sourceRef>
-        <targetRef>_6_BodyInput</targetRef>
       </dataInputAssociation>
     </task>
     <endEvent id="_7" name="End" g:x="370" g:y="56" g:width="48" g:height="48" >

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitDefault.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
@@ -20,14 +20,14 @@
 
     <!-- nodes -->
     <startEvent id="_1" name="Start" g:x="16" g:y="56" g:width="48" g:height="48" />
-    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" default="_2-4"/>
+    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="Diverging" default="_2-4"/>
     <scriptTask id="_3" name="Script1" g:x="177" g:y="16" g:width="80" g:height="48">
       <script>System.out.println("x=" + x);</script>
     </scriptTask>
     <scriptTask id="_4" name="Script2" g:x="177" g:y="96" g:width="80" g:height="48">
       <script>System.out.println("y=" + y);</script>
     </scriptTask>
-    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" />
+    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="Converging" />
     <task id="_6" name="Email" g:x="163" g:y="180" g:width="100" g:height="48" tns:taskName="Email">
       <ioSpecification>
         <dataInput id="_6_FromInput" name="From" />
@@ -43,41 +43,33 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_6_From" />
-      <property id="_6_Subject" />
-      <property id="_6_To" />
-      <property id="_6_Body" />
       <dataInputAssociation>
+        <targetRef>_6_FromInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">me at mail.com</from>
           <to xs:type="tFormalExpression">_6_From</to>
         </assignment>
-        <sourceRef>_6_From</sourceRef>
-        <targetRef>_6_FromInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_SubjectInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Urgent email !</from>
           <to xs:type="tFormalExpression">_6_Subject</to>
         </assignment>
-        <sourceRef>_6_Subject</sourceRef>
-        <targetRef>_6_SubjectInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_ToInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">you at mail.com</from>
           <to xs:type="tFormalExpression">_6_To</to>
         </assignment>
-        <sourceRef>_6_To</sourceRef>
-        <targetRef>_6_ToInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_BodyInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">This is an urgent email #{x}</from>
           <to xs:type="tFormalExpression">_6_Body</to>
         </assignment>
-        <sourceRef>_6_Body</sourceRef>
-        <targetRef>_6_BodyInput</targetRef>
       </dataInputAssociation>
     </task>
     <endEvent id="_7" name="End" g:x="370" g:y="56" g:width="48" g:height="48" >

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitXPath.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitXPath.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ExclusiveSplitXPath.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
@@ -20,14 +20,14 @@
 
     <!-- nodes -->
     <startEvent id="_1" name="Start" g:x="16" g:y="56" g:width="48" g:height="48" />
-    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="diverging" />
+    <exclusiveGateway id="_2" name="Split" g:x="96" g:y="56" g:width="49" g:height="49" gatewayDirection="Diverging" />
     <scriptTask id="_3" name="Script1" g:x="177" g:y="16" g:width="80" g:height="48">
       <script>System.out.println("x=" + x);</script>
     </scriptTask>
     <scriptTask id="_4" name="Script2" g:x="177" g:y="96" g:width="80" g:height="48">
       <script>System.out.println("y=" + y);</script>
     </scriptTask>
-    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="converging" />
+    <exclusiveGateway id="_5" name="Join" g:x="289" g:y="56" g:width="49" g:height="49" gatewayDirection="Converging" />
     <task id="_6" name="Email" g:x="163" g:y="180" g:width="100" g:height="48" tns:taskName="Email">
       <ioSpecification>
         <dataInput id="_6_FromInput" name="From" />
@@ -43,41 +43,33 @@
         <outputSet>
         </outputSet>
       </ioSpecification>
-      <property id="_6_From" />
-      <property id="_6_Subject" />
-      <property id="_6_To" />
-      <property id="_6_Body" />
       <dataInputAssociation>
+        <targetRef>_6_FromInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">me at mail.com</from>
           <to xs:type="tFormalExpression">_6_From</to>
         </assignment>
-        <sourceRef>_6_From</sourceRef>
-        <targetRef>_6_FromInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_SubjectInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">Urgent email !</from>
           <to xs:type="tFormalExpression">_6_Subject</to>
         </assignment>
-        <sourceRef>_6_Subject</sourceRef>
-        <targetRef>_6_SubjectInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_ToInput</targetRef>
         <assignment>
           <from xs:type="tFormalExpression">you at mail.com</from>
           <to xs:type="tFormalExpression">_6_To</to>
         </assignment>
-        <sourceRef>_6_To</sourceRef>
-        <targetRef>_6_ToInput</targetRef>
       </dataInputAssociation>
       <dataInputAssociation>
+        <targetRef>_6_BodyInput</targetRef>
         <assignment>
-          <from xs:type="tFormalExpression">This is an urgent email #{x}</from>
-          <to xs:type="tFormalExpression">_6_Body</to>
+          <from xs:type="tFormalExpression">you at mail.com</from>
+          <to xs:type="tFormalExpression">_6_To</to>
         </assignment>
-        <sourceRef>_6_Body</sourceRef>
-        <targetRef>_6_BodyInput</targetRef>
       </dataInputAssociation>
     </task>
     <endEvent id="_7" name="End" g:x="370" g:y="56" g:width="48" g:height="48" >

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplit.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplit.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplit.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
@@ -18,7 +18,7 @@
 
     <!-- nodes -->
     <startEvent id="_1" name="Start" />
-    <inclusiveGateway id="_2" name="Split" gatewayDirection="diverging" />
+    <inclusiveGateway id="_2" name="Split" gatewayDirection="Diverging" />
     <scriptTask id="_3" name="Script1" >
       <script>System.out.println("path1");</script>
     </scriptTask>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-InclusiveSplitDefault.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.jboss.org/drools"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             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">
 
@@ -18,7 +18,7 @@
 
     <!-- nodes -->
     <startEvent id="_1" name="Start" />
-    <inclusiveGateway id="_2" name="Split" gatewayDirection="diverging" default="_2-5" />
+    <inclusiveGateway id="_2" name="Split" gatewayDirection="Diverging" default="_2-5" />
     <scriptTask id="_3" name="Script1" >
       <script>System.out.println("path1");</script>
     </scriptTask>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,12 +3,14 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
+  
+  <signal id="MyMessage" name="MyMessage" />
 
   <process id="IntermediateCatchEvent" name="IntermediateCatchEvent Process">
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventCondition.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventCondition.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventCondition.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventMessage.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventMessage.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventMessage.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,15 +3,15 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
   <process id="IntermediateCatchEvent" name="IntermediateCatchEvent Process">
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventSignal.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventSignal.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventSignal.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventTimer.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventTimer.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateCatchEventTimer.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventCompensate.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventCompensate.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventCompensate.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventEscalation.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventEscalation.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventEscalation.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,16 +3,18 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
+  <escalation id="MyEscalation" escalationCode="MyEscalation" />
+
   <process id="EscalationIntermediateThrowEvent" name="Escalation Intermediate Throw Event Process">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <intermediateThrowEvent id="_2" name="EscalationEvent">
-      <escalationEventDefinition escalationCode="MyEscalation"/>
+      <escalationEventDefinition escalationRef="MyEscalation"/>
     </intermediateThrowEvent>
     <sequenceFlow sourceRef="_2" targetRef="_3"/>
     <endEvent id="_3" name="EndEvent"/>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventMessage.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventMessage.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventMessage.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,15 +3,15 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
   <process id="MessageIntermediateEvent" name="Message Intermediate Throw Event Process">
   

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventNone.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventNone.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventNone.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventSignal.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventSignal.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-IntermediateThrowEventSignal.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageEndEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageEndEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,15 +3,15 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
   <process id="MessageEndEvent" name="Message End Event Process">
   

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageStart.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageStart.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MessageStart.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,17 +3,17 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.jboss.org/drools">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
-  <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+  <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
   
     <property id="x" itemSubjectRef="tns:xType" />
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,12 +3,12 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.jboss.org/drools">
 
-  <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+  <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <scriptTask id="_2" name="Hello">

Added: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithDIGraphical.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithDIGraphical.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithDIGraphical.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions id="Definition"
+             targetNamespace="http://www.example.org/MinimalExample"
+             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:bpmndi="http://www.omg.org/spec/BPMN/20100524/BPMNDI"
+             xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
+             xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
+             xmlns:g="http://www.jboss.org/drools/flow/gpd"
+             xmlns:tns="http://www.example.org/MinimalExample">
+
+  <process id="Minimal" name="Minimal Process">
+    <startEvent id="_1" name="StartProcess" />
+    <sequenceFlow id="_1-_2" sourceRef="_1" targetRef="_2"/>
+    <scriptTask id="_2" name="Hello">
+      <script>System.out.println("Hello World");</script>
+    </scriptTask>
+    <sequenceFlow id="_2-_3" sourceRef="_2" targetRef="_3" />
+    <endEvent id="_3" name="EndProcess">
+      <terminateEventDefinition/>
+    </endEvent>
+  </process>
+  
+  <bpmndi:BPMNDiagram id="MinimalDiagram">
+    <bpmndi:BPMNPlane bpmnElement="Minimal">
+      <bpmndi:BPMNShape bpmnElement="_1">
+        <dc:Bounds x="16" y="16" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="_1-_2">
+        <di:waypoint x="40" y="40"/>
+        <di:waypoint x="0" y="0"/>
+        <di:waypoint x="120" y="40"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape bpmnElement="_2">
+        <dc:Bounds x="96" y="16" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="_2-_3">
+        <di:waypoint x="120" y="40"/>
+        <di:waypoint x="240" y="240"/>
+        <di:waypoint x="232" y="40"/>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape bpmnElement="_3">
+        <dc:Bounds x="208" y="16" width="48" height="48"/>
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+
+</definitions>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithGraphical.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithGraphical.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MinimalProcessWithGraphical.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:di="http://www.omg.com/di/1.0.0"
              xmlns:g="http://www.jboss.org/drools/flow/gpd"
              xmlns:tns="http://www.example.org/MinimalExample">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MultiInstanceLoopCharacteristicsProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MultiInstanceLoopCharacteristicsProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-MultiInstanceLoopCharacteristicsProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="itemType" structureRef="java.lang.String" />
@@ -20,7 +20,7 @@
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <subProcess id="_2" name="Hello" >
       <ioSpecification>
-        <dataInput id="_2_input" name="MultiInstanceLoopDataInput" itemSubjectRef="listType" />
+        <dataInput id="_2_input" name="MultiInstanceLoopDataInput" />
         <inputSet>
           <dataInputRefs>_2_input</dataInputRefs>
         </inputSet>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-OryxExportedExample.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-OryxExportedExample.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-OryxExportedExample.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -19,7 +19,7 @@
             <incoming>oryx_2B4B9F00-745A-49D5-A409-B0308C963893</incoming>
             <outgoing>oryx_AE244892-DEB6-42CE-B766-0331903EFB82</outgoing>
         </userTask>
-        <parallelGateway gatewayDirection="diverging" name="" process="oryx_bbd78367-e494-4d9c-96fe-c3f28901735b" id="oryx_C43F8AA0-0A0D-4CC4-AAA2-0F3EBFC31BAF">
+        <parallelGateway gatewayDirection="Diverging" name="" process="oryx_bbd78367-e494-4d9c-96fe-c3f28901735b" id="oryx_C43F8AA0-0A0D-4CC4-AAA2-0F3EBFC31BAF">
             <incoming>oryx_AE244892-DEB6-42CE-B766-0331903EFB82</incoming>
             <outgoing>oryx_713E11D3-2CE7-4FE8-B7FA-729E2CF2F10A</outgoing>
             <outgoing>oryx_7BC15988-7BD4-4657-8198-60C23B5B98D4</outgoing>
@@ -28,7 +28,7 @@
             <incoming>oryx_713E11D3-2CE7-4FE8-B7FA-729E2CF2F10A</incoming>
             <outgoing>oryx_D2ACCE6F-8375-478C-A4DD-F4A4B073C396</outgoing>
         </userTask>
-        <parallelGateway gatewayDirection="converging" name="" process="oryx_bbd78367-e494-4d9c-96fe-c3f28901735b" id="oryx_3632D983-1DEF-468C-9AB3-EB0824A46E5E">
+        <parallelGateway gatewayDirection="Converging" name="" process="oryx_bbd78367-e494-4d9c-96fe-c3f28901735b" id="oryx_3632D983-1DEF-468C-9AB3-EB0824A46E5E">
             <incoming>oryx_3D6B23E8-5173-4984-A059-649FA46C7404</incoming>
             <incoming>oryx_D2ACCE6F-8375-478C-A4DD-F4A4B073C396</incoming>
             <outgoing>oryx_A0AF4CED-F68C-47D5-AF4D-CCDE1BE1E6AC</outgoing>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ReceiveTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ReceiveTask.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ReceiveTask.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,13 +3,13 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
   <process id="ReceiveTask" name="Receive Task">
     <!-- process variables -->
@@ -20,7 +20,7 @@
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <receiveTask id="_2" name="Hello" messageRef="HelloMessage">
       <ioSpecification>
-        <dataOutput id="_2_param" name="Message" itemSubjectRef="HelloMessage"/>
+        <dataOutput id="_2_param" name="Message" />
         <inputSet/>
         <outputSet>
           <dataOutputRefs>_2_param</dataOutputRefs>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SendTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SendTask.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SendTask.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,13 +3,13 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloMessage" structureRef="StringType"/>
+  <message id="HelloMessage" itemRef="StringType"/>
   
   <process id="SendTask" name="Send Task">
     <!-- process variables -->

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ServiceProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ServiceProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-ServiceProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,14 +3,14 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="StringType" structureRef="java.lang.String" />
-  <message id="HelloService.hello.in" structureRef="StringType"/>
-  <message id="HelloService.hello.out" structureRef="StringType"/>
+  <message id="HelloService.hello.in" itemRef="StringType"/>
+  <message id="HelloService.hello.out" itemRef="StringType"/>
   <interface id="HelloService" name="org.drools.bpmn2.HelloService">
     <operation id="HelloService.hello" name="hello">
       <inMessageRef>HelloService.hello.in</inMessageRef>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalEndEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalEndEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalEndEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalStart.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalStart.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SignalStart.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,14 +3,14 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.jboss.org/drools">
 
   <itemDefinition id="xType" structureRef="java.lang.String" />
 
-  <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+  <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
   
     <property id="x" itemSubjectRef="tns:xType" />
 

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SimpleXMLProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -4,13 +4,12 @@
   targetNamespace="http://www.example.org/MinimalExample"
   typeLanguage="http://www.java.com/javaTypes"
   expressionLanguage="http://www.mvel.org/2.0"
-  xmlns="http://schema.omg.org/spec/BPMN/2.0"
+  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
   xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-  xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+  xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
   xmlns:tns="http://www.jboss.org/drools">
 
-  <resource id="Actor" name="Human Actor" />
-  <process id="Minimal" name="&lt; &amp; &gt;" processType="executable" tns:packageName="com.sample">
+  <process processType="Private" isExecutable="true" id="Minimal" name="&lt; &amp; &gt;" tns:packageName="com.sample">
     <startEvent id="Node1" name="StartProcess"/>
     <sequenceFlow id="Node1-_2" sourceRef="Node1" targetRef="_2"/>
     <scriptTask id="_2" name="Hello">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SubProcess.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SubProcess.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-SubProcess.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <itemDefinition id="_2-xType" structureRef="java.lang.String" />

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEvent.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEvent.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEvent.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <process id="TimerBoundaryEvent" name="Timer Boundary Event Process">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEventInterrupting.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEventInterrupting.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerBoundaryEventInterrupting.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,9 +3,9 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
   <process id="TimerBoundaryEvent" name="Timer Boundary Event Process">

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-TimerStart.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,12 +3,12 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.jboss.org/drools">
 
-  <process id="Minimal" name="Minimal Process" processType="executable" tns:packageName="com.sample">
+  <process id="Minimal" name="Minimal Process" tns:packageName="com.sample">
     <startEvent id="_1" name="StartProcess">
       <timerEventDefinition>
         <timeCycle xs:type="tFormalExpression">500ms</timeCycle>

Modified: labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-UserTask.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-UserTask.xml	2010-05-17 18:45:15 UTC (rev 32923)
+++ labs/jbossrules/trunk/drools-process/drools-bpmn2/src/test/resources/BPMN2-UserTask.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -3,18 +3,16 @@
              targetNamespace="http://www.example.org/MinimalExample"
              typeLanguage="http://www.java.com/javaTypes"
              expressionLanguage="http://www.mvel.org/2.0"
-             xmlns="http://schema.omg.org/spec/BPMN/2.0"
+             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
              xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
-             xs:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 BPMN20.xsd"
+             xs:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
              xmlns:tns="http://www.example.org/MinimalExample">
 
-  <resource id="Actor" name="Human Actor" />
-  
   <process id="UserTask" name="User Task">
     <startEvent id="_1" name="StartProcess"/>
     <sequenceFlow sourceRef="_1" targetRef="_2"/>
     <userTask id="_2" name="Hello">
-      <potentialOwner resourceRef="tns:Actor" >
+      <potentialOwner>
         <resourceAssignmentExpression>
           <formalExpression>john</formalExpression>
         </resourceAssignmentExpression>

Added: labs/jbossrules/trunk/drools-process/drools-gwt-server-war/src/main/resources/META-INF/hibernate.cfg.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-server-war/src/main/resources/META-INF/hibernate.cfg.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-server-war/src/main/resources/META-INF/hibernate.cfg.xml	2010-05-17 18:51:11 UTC (rev 32924)
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+    <session-factory>
+
+        <!-- Database connection settings -->
+        <property name="connection.driver_class">org.h2.Driver</property>
+        <property name="connection.url">jdbc:h2:tcp://localhost/~/test</property>
+        <!--property name="connection.url">jdbc:h2:file:/NotBackedUp/data/mydb</property-->
+        <property name="connection.username">sa</property>
+        <property name="connection.password"></property>
+
+        <!-- JDBC connection pool (use the built-in) -->
+        <property name="connection.pool_size">1</property>
+
+        <!-- SQL dialect -->
+        <property name="dialect">org.hibernate.dialect.H2Dialect</property>
+
+        <!-- Enable Hibernate's automatic session context management -->
+        <property name="current_session_context_class">thread</property>
+
+        <!-- Disable the second-level cache  -->
+        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+        <!-- Echo all executed SQL to stdout -->
+        <property name="show_sql">false</property>
+
+        <!-- Drop and re-create the database schema on startup -->
+        <property name="hbm2ddl.auto">create</property>
+
+        <mapping resource="AuditLog.hbm.xml"/>
+
+    </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file



More information about the jboss-svn-commits mailing list