Merge branch 'develop' into X-multipage

Conflicts
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
index a93d49d..27b4294 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
@@ -224,6 +224,7 @@
 				allAdapters.add((InsertionAdapter)adapter);
 			}
 		}
+		value.eAdapters().removeAll(allAdapters);
 		for (InsertionAdapter adapter : allAdapters)
 			adapter.execute();
 	}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
index 271774f..b31947d 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
@@ -4,6 +4,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
 
 public class ReadonlyTextObjectEditor extends TextAndButtonObjectEditor {
 
@@ -16,8 +17,10 @@
 	protected void buttonClicked() {
 		Object value = object.eGet(feature);
 		if (value == null || value instanceof EObject) {
-			ObjectEditingDialog dialog = new FeatureEditingDialog(getDiagramEditor(), object, feature, (EObject)value);
-			dialog.open();
+			FeatureEditingDialog dialog = new FeatureEditingDialog(getDiagramEditor(), object, feature, (EObject)value);
+			if (dialog.open()==Window.OK){
+				updateObject(dialog.getNewObject());
+			}
 		}
 		else {
 			String msg = "Can not display "+feature.getName()+" for "+object.eClass().getName();
diff --git a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
index ab79328..197e009 100644
--- a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
+++ b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
@@ -80,7 +80,7 @@
 	int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;
 
 	/**
-	 * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+	 * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' mapDiagramToViewer.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -89,7 +89,7 @@
 	int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;
 
 	/**
-	 * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+	 * The feature id for the '<em><b>XSI Schema Location</b></em>' mapDiagramToViewer.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
index c7af3e6..6032094 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
@@ -1,2190 +1,2190 @@
-/**

- * <copyright>

- * </copyright>

- *

- * $Id$

- */

-package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model;

-

-import org.eclipse.bpmn2.Bpmn2Package;

-import org.eclipse.emf.ecore.EAttribute;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.EDataType;

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.EReference;

-

-/**

- * <!-- begin-user-doc -->

- * The <b>Package</b> for the model.

- * It contains accessors for the meta objects to represent

- * <ul>

- *   <li>each class,</li>

- *   <li>each feature of each class,</li>

- *   <li>each enum,</li>

- *   <li>and each data type</li>

- * </ul>

- * <!-- end-user-doc -->

- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory

- * @model kind="package"

- * @generated

- */

-public interface ModelPackage extends EPackage {

-	/**

-	 * The package name.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNAME = "model";

-

-	/**

-	 * The package namespace URI.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNS_URI = "http://www.jboss.org/drools";

-

-	/**

-	 * The package namespace name.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	String eNS_PREFIX = "tns";

-

-	/**

-	 * The singleton instance of the package.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	ModelPackage eINSTANCE = org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl.init();

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()

-	 * @generated

-	 */

-	int DOCUMENT_ROOT = 0;

-

-	/**

-	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;

-

-	/**

-	 * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;

-

-	/**

-	 * The feature id for the '<em><b>XSI Schema Location</b></em>' map.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = Bpmn2Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION;

-

-	/**

-	 * The feature id for the '<em><b>Activity</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__ACTIVITY;

-

-	/**

-	 * The feature id for the '<em><b>Ad Hoc Sub Process</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__AD_HOC_SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__AD_HOC_SUB_PROCESS;

-

-	/**

-	 * The feature id for the '<em><b>Flow Element</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__FLOW_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__FLOW_ELEMENT;

-

-	/**

-	 * The feature id for the '<em><b>Artifact</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ARTIFACT = Bpmn2Package.DOCUMENT_ROOT__ARTIFACT;

-

-	/**

-	 * The feature id for the '<em><b>Assignment</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ASSIGNMENT = Bpmn2Package.DOCUMENT_ROOT__ASSIGNMENT;

-

-	/**

-	 * The feature id for the '<em><b>Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Auditing</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__AUDITING = Bpmn2Package.DOCUMENT_ROOT__AUDITING;

-

-	/**

-	 * The feature id for the '<em><b>Base Element</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__BASE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT;

-

-	/**

-	 * The feature id for the '<em><b>Base Element With Mixed Content</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT;

-

-	/**

-	 * The feature id for the '<em><b>Boundary Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__BOUNDARY_EVENT = Bpmn2Package.DOCUMENT_ROOT__BOUNDARY_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Business Rule Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__BUSINESS_RULE_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Callable Element</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CALLABLE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__CALLABLE_ELEMENT;

-

-	/**

-	 * The feature id for the '<em><b>Call Activity</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CALL_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CALL_ACTIVITY;

-

-	/**

-	 * The feature id for the '<em><b>Call Choreography</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CALL_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CALL_CHOREOGRAPHY;

-

-	/**

-	 * The feature id for the '<em><b>Call Conversation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CALL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CALL_CONVERSATION;

-

-	/**

-	 * The feature id for the '<em><b>Conversation Node</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CONVERSATION_NODE = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_NODE;

-

-	/**

-	 * The feature id for the '<em><b>Cancel Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Root Element</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ROOT_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__ROOT_ELEMENT;

-

-	/**

-	 * The feature id for the '<em><b>Catch Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__CATCH_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Category</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CATEGORY = Bpmn2Package.DOCUMENT_ROOT__CATEGORY;

-

-	/**

-	 * The feature id for the '<em><b>Category Value</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CATEGORY_VALUE = Bpmn2Package.DOCUMENT_ROOT__CATEGORY_VALUE;

-

-	/**

-	 * The feature id for the '<em><b>Choreography</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY;

-

-	/**

-	 * The feature id for the '<em><b>Collaboration</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__COLLABORATION = Bpmn2Package.DOCUMENT_ROOT__COLLABORATION;

-

-	/**

-	 * The feature id for the '<em><b>Choreography Activity</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY;

-

-	/**

-	 * The feature id for the '<em><b>Choreography Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Compensate Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Complex Behavior Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Complex Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__COMPLEX_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Conditional Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Conversation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION;

-

-	/**

-	 * The feature id for the '<em><b>Conversation Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CONVERSATION_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Conversation Link</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CONVERSATION_LINK = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_LINK;

-

-	/**

-	 * The feature id for the '<em><b>Correlation Key</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CORRELATION_KEY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_KEY;

-

-	/**

-	 * The feature id for the '<em><b>Correlation Property</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CORRELATION_PROPERTY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY;

-

-	/**

-	 * The feature id for the '<em><b>Correlation Property Binding</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING;

-

-	/**

-	 * The feature id for the '<em><b>Correlation Property Retrieval Expression</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION;

-

-	/**

-	 * The feature id for the '<em><b>Correlation Subscription</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION;

-

-	/**

-	 * The feature id for the '<em><b>Data Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Data Input</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_INPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT;

-

-	/**

-	 * The feature id for the '<em><b>Data Input Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Data Object</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_OBJECT = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT;

-

-	/**

-	 * The feature id for the '<em><b>Data Object Reference</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_OBJECT_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT_REFERENCE;

-

-	/**

-	 * The feature id for the '<em><b>Data Output</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_OUTPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT;

-

-	/**

-	 * The feature id for the '<em><b>Data Output Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Data State</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_STATE = Bpmn2Package.DOCUMENT_ROOT__DATA_STATE;

-

-	/**

-	 * The feature id for the '<em><b>Data Store</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_STORE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE;

-

-	/**

-	 * The feature id for the '<em><b>Data Store Reference</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DATA_STORE_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE_REFERENCE;

-

-	/**

-	 * The feature id for the '<em><b>Definitions</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DEFINITIONS = Bpmn2Package.DOCUMENT_ROOT__DEFINITIONS;

-

-	/**

-	 * The feature id for the '<em><b>Documentation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__DOCUMENTATION = Bpmn2Package.DOCUMENT_ROOT__DOCUMENTATION;

-

-	/**

-	 * The feature id for the '<em><b>End Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__END_EVENT = Bpmn2Package.DOCUMENT_ROOT__END_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>End Point</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__END_POINT = Bpmn2Package.DOCUMENT_ROOT__END_POINT;

-

-	/**

-	 * The feature id for the '<em><b>Error</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ERROR = Bpmn2Package.DOCUMENT_ROOT__ERROR;

-

-	/**

-	 * The feature id for the '<em><b>Error Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ERROR_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ERROR_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Escalation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ESCALATION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION;

-

-	/**

-	 * The feature id for the '<em><b>Escalation Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EVENT = Bpmn2Package.DOCUMENT_ROOT__EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Event Based Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EVENT_BASED_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EVENT_BASED_GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Exclusive Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EXCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EXCLUSIVE_GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Expression</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__EXPRESSION;

-

-	/**

-	 * The feature id for the '<em><b>Extension</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EXTENSION = Bpmn2Package.DOCUMENT_ROOT__EXTENSION;

-

-	/**

-	 * The feature id for the '<em><b>Extension Elements</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__EXTENSION_ELEMENTS = Bpmn2Package.DOCUMENT_ROOT__EXTENSION_ELEMENTS;

-

-	/**

-	 * The feature id for the '<em><b>Flow Node</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__FLOW_NODE = Bpmn2Package.DOCUMENT_ROOT__FLOW_NODE;

-

-	/**

-	 * The feature id for the '<em><b>Formal Expression</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__FORMAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__FORMAL_EXPRESSION;

-

-	/**

-	 * The feature id for the '<em><b>Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GATEWAY = Bpmn2Package.DOCUMENT_ROOT__GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Global Business Rule Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global Choreography Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global Conversation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CONVERSATION;

-

-	/**

-	 * The feature id for the '<em><b>Global Manual Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_MANUAL_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global Script Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global User Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL_USER_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_USER_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Group</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GROUP = Bpmn2Package.DOCUMENT_ROOT__GROUP;

-

-	/**

-	 * The feature id for the '<em><b>Human Performer</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__HUMAN_PERFORMER = Bpmn2Package.DOCUMENT_ROOT__HUMAN_PERFORMER;

-

-	/**

-	 * The feature id for the '<em><b>Performer</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PERFORMER = Bpmn2Package.DOCUMENT_ROOT__PERFORMER;

-

-	/**

-	 * The feature id for the '<em><b>Resource Role</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RESOURCE_ROLE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ROLE;

-

-	/**

-	 * The feature id for the '<em><b>Implicit Throw Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__IMPLICIT_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__IMPLICIT_THROW_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Import</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__IMPORT = Bpmn2Package.DOCUMENT_ROOT__IMPORT;

-

-	/**

-	 * The feature id for the '<em><b>Inclusive Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__INCLUSIVE_GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Input Set</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INPUT_SET = Bpmn2Package.DOCUMENT_ROOT__INPUT_SET;

-

-	/**

-	 * The feature id for the '<em><b>Interface</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INTERFACE = Bpmn2Package.DOCUMENT_ROOT__INTERFACE;

-

-	/**

-	 * The feature id for the '<em><b>Intermediate Catch Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Intermediate Throw Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Io Binding</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__IO_BINDING = Bpmn2Package.DOCUMENT_ROOT__IO_BINDING;

-

-	/**

-	 * The feature id for the '<em><b>Io Specification</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__IO_SPECIFICATION = Bpmn2Package.DOCUMENT_ROOT__IO_SPECIFICATION;

-

-	/**

-	 * The feature id for the '<em><b>Item Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ITEM_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ITEM_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Lane</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__LANE = Bpmn2Package.DOCUMENT_ROOT__LANE;

-

-	/**

-	 * The feature id for the '<em><b>Lane Set</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__LANE_SET = Bpmn2Package.DOCUMENT_ROOT__LANE_SET;

-

-	/**

-	 * The feature id for the '<em><b>Link Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__LINK_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__LINK_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Loop Characteristics</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__LOOP_CHARACTERISTICS;

-

-	/**

-	 * The feature id for the '<em><b>Manual Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__MANUAL_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Message</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MESSAGE = Bpmn2Package.DOCUMENT_ROOT__MESSAGE;

-

-	/**

-	 * The feature id for the '<em><b>Message Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Message Flow</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MESSAGE_FLOW = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW;

-

-	/**

-	 * The feature id for the '<em><b>Message Flow Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Monitoring</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MONITORING = Bpmn2Package.DOCUMENT_ROOT__MONITORING;

-

-	/**

-	 * The feature id for the '<em><b>Multi Instance Loop Characteristics</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS;

-

-	/**

-	 * The feature id for the '<em><b>Operation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__OPERATION = Bpmn2Package.DOCUMENT_ROOT__OPERATION;

-

-	/**

-	 * The feature id for the '<em><b>Output Set</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__OUTPUT_SET = Bpmn2Package.DOCUMENT_ROOT__OUTPUT_SET;

-

-	/**

-	 * The feature id for the '<em><b>Parallel Gateway</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARALLEL_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__PARALLEL_GATEWAY;

-

-	/**

-	 * The feature id for the '<em><b>Participant</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARTICIPANT = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT;

-

-	/**

-	 * The feature id for the '<em><b>Participant Association</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION;

-

-	/**

-	 * The feature id for the '<em><b>Participant Multiplicity</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY;

-

-	/**

-	 * The feature id for the '<em><b>Partner Entity</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARTNER_ENTITY = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ENTITY;

-

-	/**

-	 * The feature id for the '<em><b>Partner Role</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PARTNER_ROLE = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ROLE;

-

-	/**

-	 * The feature id for the '<em><b>Potential Owner</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__POTENTIAL_OWNER = Bpmn2Package.DOCUMENT_ROOT__POTENTIAL_OWNER;

-

-	/**

-	 * The feature id for the '<em><b>Process</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PROCESS = Bpmn2Package.DOCUMENT_ROOT__PROCESS;

-

-	/**

-	 * The feature id for the '<em><b>Property</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PROPERTY = Bpmn2Package.DOCUMENT_ROOT__PROPERTY;

-

-	/**

-	 * The feature id for the '<em><b>Receive Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RECEIVE_TASK = Bpmn2Package.DOCUMENT_ROOT__RECEIVE_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Relationship</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RELATIONSHIP = Bpmn2Package.DOCUMENT_ROOT__RELATIONSHIP;

-

-	/**

-	 * The feature id for the '<em><b>Rendering</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RENDERING = Bpmn2Package.DOCUMENT_ROOT__RENDERING;

-

-	/**

-	 * The feature id for the '<em><b>Resource</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RESOURCE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE;

-

-	/**

-	 * The feature id for the '<em><b>Resource Assignment Expression</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION;

-

-	/**

-	 * The feature id for the '<em><b>Resource Parameter</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RESOURCE_PARAMETER = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER;

-

-	/**

-	 * The feature id for the '<em><b>Resource Parameter Binding</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING;

-

-	/**

-	 * The feature id for the '<em><b>Script</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SCRIPT = Bpmn2Package.DOCUMENT_ROOT__SCRIPT;

-

-	/**

-	 * The feature id for the '<em><b>Script Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__SCRIPT_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Send Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SEND_TASK = Bpmn2Package.DOCUMENT_ROOT__SEND_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Sequence Flow</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SEQUENCE_FLOW = Bpmn2Package.DOCUMENT_ROOT__SEQUENCE_FLOW;

-

-	/**

-	 * The feature id for the '<em><b>Service Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SERVICE_TASK = Bpmn2Package.DOCUMENT_ROOT__SERVICE_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Signal</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SIGNAL = Bpmn2Package.DOCUMENT_ROOT__SIGNAL;

-

-	/**

-	 * The feature id for the '<em><b>Signal Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Standard Loop Characteristics</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS;

-

-	/**

-	 * The feature id for the '<em><b>Start Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__START_EVENT = Bpmn2Package.DOCUMENT_ROOT__START_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Sub Choreography</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SUB_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__SUB_CHOREOGRAPHY;

-

-	/**

-	 * The feature id for the '<em><b>Sub Conversation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SUB_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__SUB_CONVERSATION;

-

-	/**

-	 * The feature id for the '<em><b>Sub Process</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__SUB_PROCESS;

-

-	/**

-	 * The feature id for the '<em><b>Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TASK = Bpmn2Package.DOCUMENT_ROOT__TASK;

-

-	/**

-	 * The feature id for the '<em><b>Terminate Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Text</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TEXT = Bpmn2Package.DOCUMENT_ROOT__TEXT;

-

-	/**

-	 * The feature id for the '<em><b>Text Annotation</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TEXT_ANNOTATION = Bpmn2Package.DOCUMENT_ROOT__TEXT_ANNOTATION;

-

-	/**

-	 * The feature id for the '<em><b>Throw Event</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__THROW_EVENT;

-

-	/**

-	 * The feature id for the '<em><b>Timer Event Definition</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TIMER_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TIMER_EVENT_DEFINITION;

-

-	/**

-	 * The feature id for the '<em><b>Transaction</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TRANSACTION = Bpmn2Package.DOCUMENT_ROOT__TRANSACTION;

-

-	/**

-	 * The feature id for the '<em><b>User Task</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__USER_TASK = Bpmn2Package.DOCUMENT_ROOT__USER_TASK;

-

-	/**

-	 * The feature id for the '<em><b>Global</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__GLOBAL = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 0;

-

-	/**

-	 * The feature id for the '<em><b>Import Type</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__IMPORT_TYPE = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 1;

-

-	/**

-	 * The feature id for the '<em><b>On Entry Script</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ON_ENTRY_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 2;

-

-	/**

-	 * The feature id for the '<em><b>On Exit Script</b></em>' containment reference.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__ON_EXIT_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 3;

-

-	/**

-	 * The feature id for the '<em><b>Package Name</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PACKAGE_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 4;

-

-	/**

-	 * The feature id for the '<em><b>Priority</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__PRIORITY = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 5;

-

-	/**

-	 * The feature id for the '<em><b>Rule Flow Group</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__RULE_FLOW_GROUP = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 6;

-

-	/**

-	 * The feature id for the '<em><b>Task Name</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__TASK_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 7;

-

-	/**

-	 * The feature id for the '<em><b>Version</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__VERSION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 8;

-

-	/**

-	 * The feature id for the '<em><b>Wait For Completion</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__WAIT_FOR_COMPLETION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 9;

-

-	/**

-	 * The feature id for the '<em><b>Independent</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT__INDEPENDENT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 10;

-

-	/**

-	 * The number of structural features of the '<em>Document Root</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int DOCUMENT_ROOT_FEATURE_COUNT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 11;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()

-	 * @generated

-	 */

-	int GLOBAL_TYPE = 1;

-

-	/**

-	 * The feature id for the '<em><b>Identifier</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int GLOBAL_TYPE__IDENTIFIER = 0;

-

-	/**

-	 * The feature id for the '<em><b>Type</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int GLOBAL_TYPE__TYPE = 1;

-

-	/**

-	 * The number of structural features of the '<em>Global Type</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int GLOBAL_TYPE_FEATURE_COUNT = 2;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()

-	 * @generated

-	 */

-	int IMPORT_TYPE = 2;

-

-	/**

-	 * The feature id for the '<em><b>Name</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int IMPORT_TYPE__NAME = 0;

-

-	/**

-	 * The number of structural features of the '<em>Import Type</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int IMPORT_TYPE_FEATURE_COUNT = 1;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()

-	 * @generated

-	 */

-	int ON_ENTRY_SCRIPT_TYPE = 3;

-

-	/**

-	 * The feature id for the '<em><b>Script</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_ENTRY_SCRIPT_TYPE__SCRIPT = 0;

-

-	/**

-	 * The feature id for the '<em><b>Script Format</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = 1;

-

-	/**

-	 * The number of structural features of the '<em>On Entry Script Type</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_ENTRY_SCRIPT_TYPE_FEATURE_COUNT = 2;

-

-	/**

-	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()

-	 * @generated

-	 */

-	int ON_EXIT_SCRIPT_TYPE = 4;

-

-	/**

-	 * The feature id for the '<em><b>Script</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_EXIT_SCRIPT_TYPE__SCRIPT = 0;

-

-	/**

-	 * The feature id for the '<em><b>Script Format</b></em>' attribute.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = 1;

-

-	/**

-	 * The number of structural features of the '<em>On Exit Script Type</em>' class.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @generated

-	 * @ordered

-	 */

-	int ON_EXIT_SCRIPT_TYPE_FEATURE_COUNT = 2;

-

-	/**

-	 * The meta object id for the '<em>Package Name Type</em>' data type.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see java.lang.String

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()

-	 * @generated

-	 */

-	int PACKAGE_NAME_TYPE = 5;

-

-	/**

-	 * The meta object id for the '<em>Priority Type</em>' data type.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see java.math.BigInteger

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()

-	 * @generated

-	 */

-	int PRIORITY_TYPE = 6;

-

-	/**

-	 * The meta object id for the '<em>Rule Flow Group Type</em>' data type.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see java.lang.String

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()

-	 * @generated

-	 */

-	int RULE_FLOW_GROUP_TYPE = 7;

-

-	/**

-	 * The meta object id for the '<em>Task Name Type</em>' data type.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see java.lang.String

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()

-	 * @generated

-	 */

-	int TASK_NAME_TYPE = 8;

-

-	/**

-	 * The meta object id for the '<em>Version Type</em>' data type.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @see java.math.BigInteger

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()

-	 * @generated

-	 */

-	int VERSION_TYPE = 9;

-

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot <em>Document Root</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Document Root</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot

-	 * @generated

-	 */

-	EClass getDocumentRoot();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal <em>Global</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>Global</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EReference getDocumentRoot_Global();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType <em>Import Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>Import Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EReference getDocumentRoot_ImportType();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript <em>On Entry Script</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>On Entry Script</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EReference getDocumentRoot_OnEntryScript();

-

-	/**

-	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript <em>On Exit Script</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the containment reference '<em>On Exit Script</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EReference getDocumentRoot_OnExitScript();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName <em>Package Name</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Package Name</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_PackageName();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority <em>Priority</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Priority</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_Priority();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup <em>Rule Flow Group</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Rule Flow Group</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_RuleFlowGroup();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName <em>Task Name</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Task Name</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_TaskName();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion <em>Version</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Version</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_Version();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion <em>Wait For Completion</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Wait For Completion</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_WaitForCompletion();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent <em>Independent</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Independent</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent()

-	 * @see #getDocumentRoot()

-	 * @generated

-	 */

-	EAttribute getDocumentRoot_Independent();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType <em>Global Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Global Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType

-	 * @generated

-	 */

-	EClass getGlobalType();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier <em>Identifier</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Identifier</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier()

-	 * @see #getGlobalType()

-	 * @generated

-	 */

-	EAttribute getGlobalType_Identifier();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType <em>Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType()

-	 * @see #getGlobalType()

-	 * @generated

-	 */

-	EAttribute getGlobalType_Type();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType <em>Import Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>Import Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType

-	 * @generated

-	 */

-	EClass getImportType();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName <em>Name</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Name</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName()

-	 * @see #getImportType()

-	 * @generated

-	 */

-	EAttribute getImportType_Name();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType <em>On Entry Script Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>On Entry Script Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType

-	 * @generated

-	 */

-	EClass getOnEntryScriptType();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript <em>Script</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Script</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript()

-	 * @see #getOnEntryScriptType()

-	 * @generated

-	 */

-	EAttribute getOnEntryScriptType_Script();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat <em>Script Format</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Script Format</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat()

-	 * @see #getOnEntryScriptType()

-	 * @generated

-	 */

-	EAttribute getOnEntryScriptType_ScriptFormat();

-

-	/**

-	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType <em>On Exit Script Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for class '<em>On Exit Script Type</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType

-	 * @generated

-	 */

-	EClass getOnExitScriptType();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript <em>Script</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Script</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript()

-	 * @see #getOnExitScriptType()

-	 * @generated

-	 */

-	EAttribute getOnExitScriptType_Script();

-

-	/**

-	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat <em>Script Format</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for the attribute '<em>Script Format</em>'.

-	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat()

-	 * @see #getOnExitScriptType()

-	 * @generated

-	 */

-	EAttribute getOnExitScriptType_ScriptFormat();

-

-	/**

-	 * Returns the meta object for data type '{@link java.lang.String <em>Package Name Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for data type '<em>Package Name Type</em>'.

-	 * @see java.lang.String

-	 * @model instanceClass="java.lang.String"

-	 *        extendedMetaData="name='packageName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"

-	 * @generated

-	 */

-	EDataType getPackageNameType();

-

-	/**

-	 * Returns the meta object for data type '{@link java.math.BigInteger <em>Priority Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for data type '<em>Priority Type</em>'.

-	 * @see java.math.BigInteger

-	 * @model instanceClass="java.math.BigInteger"

-	 *        extendedMetaData="name='priority_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='1'"

-	 * @generated

-	 */

-	EDataType getPriorityType();

-

-	/**

-	 * Returns the meta object for data type '{@link java.lang.String <em>Rule Flow Group Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for data type '<em>Rule Flow Group Type</em>'.

-	 * @see java.lang.String

-	 * @model instanceClass="java.lang.String"

-	 *        extendedMetaData="name='ruleFlowGroup_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"

-	 * @generated

-	 */

-	EDataType getRuleFlowGroupType();

-

-	/**

-	 * Returns the meta object for data type '{@link java.lang.String <em>Task Name Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for data type '<em>Task Name Type</em>'.

-	 * @see java.lang.String

-	 * @model instanceClass="java.lang.String"

-	 *        extendedMetaData="name='taskName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"

-	 * @generated

-	 */

-	EDataType getTaskNameType();

-

-	/**

-	 * Returns the meta object for data type '{@link java.math.BigInteger <em>Version Type</em>}'.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the meta object for data type '<em>Version Type</em>'.

-	 * @see java.math.BigInteger

-	 * @model instanceClass="java.math.BigInteger"

-	 *        extendedMetaData="name='version_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='0'"

-	 * @generated

-	 */

-	EDataType getVersionType();

-

-	/**

-	 * Returns the factory that creates the instances of the model.

-	 * <!-- begin-user-doc -->

-	 * <!-- end-user-doc -->

-	 * @return the factory that creates the instances of the model.

-	 * @generated

-	 */

-	ModelFactory getModelFactory();

-

-	/**

-	 * <!-- begin-user-doc -->

-	 * Defines literals for the meta objects that represent

-	 * <ul>

-	 *   <li>each class,</li>

-	 *   <li>each feature of each class,</li>

-	 *   <li>each enum,</li>

-	 *   <li>and each data type</li>

-	 * </ul>

-	 * <!-- end-user-doc -->

-	 * @generated

-	 */

-	interface Literals {

-		/**

-		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()

-		 * @generated

-		 */

-		EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();

-

-		/**

-		 * The meta object literal for the '<em><b>Global</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference DOCUMENT_ROOT__GLOBAL = eINSTANCE.getDocumentRoot_Global();

-

-		/**

-		 * The meta object literal for the '<em><b>Import Type</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference DOCUMENT_ROOT__IMPORT_TYPE = eINSTANCE.getDocumentRoot_ImportType();

-

-		/**

-		 * The meta object literal for the '<em><b>On Entry Script</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference DOCUMENT_ROOT__ON_ENTRY_SCRIPT = eINSTANCE.getDocumentRoot_OnEntryScript();

-

-		/**

-		 * The meta object literal for the '<em><b>On Exit Script</b></em>' containment reference feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EReference DOCUMENT_ROOT__ON_EXIT_SCRIPT = eINSTANCE.getDocumentRoot_OnExitScript();

-

-		/**

-		 * The meta object literal for the '<em><b>Package Name</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__PACKAGE_NAME = eINSTANCE.getDocumentRoot_PackageName();

-

-		/**

-		 * The meta object literal for the '<em><b>Priority</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__PRIORITY = eINSTANCE.getDocumentRoot_Priority();

-

-		/**

-		 * The meta object literal for the '<em><b>Rule Flow Group</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__RULE_FLOW_GROUP = eINSTANCE.getDocumentRoot_RuleFlowGroup();

-

-		/**

-		 * The meta object literal for the '<em><b>Task Name</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__TASK_NAME = eINSTANCE.getDocumentRoot_TaskName();

-

-		/**

-		 * The meta object literal for the '<em><b>Version</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__VERSION = eINSTANCE.getDocumentRoot_Version();

-

-		/**

-		 * The meta object literal for the '<em><b>Wait For Completion</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__WAIT_FOR_COMPLETION = eINSTANCE.getDocumentRoot_WaitForCompletion();

-

-		/**

-		 * The meta object literal for the '<em><b>Independent</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute DOCUMENT_ROOT__INDEPENDENT = eINSTANCE.getDocumentRoot_Independent();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()

-		 * @generated

-		 */

-		EClass GLOBAL_TYPE = eINSTANCE.getGlobalType();

-

-		/**

-		 * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute GLOBAL_TYPE__IDENTIFIER = eINSTANCE.getGlobalType_Identifier();

-

-		/**

-		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute GLOBAL_TYPE__TYPE = eINSTANCE.getGlobalType_Type();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()

-		 * @generated

-		 */

-		EClass IMPORT_TYPE = eINSTANCE.getImportType();

-

-		/**

-		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute IMPORT_TYPE__NAME = eINSTANCE.getImportType_Name();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()

-		 * @generated

-		 */

-		EClass ON_ENTRY_SCRIPT_TYPE = eINSTANCE.getOnEntryScriptType();

-

-		/**

-		 * The meta object literal for the '<em><b>Script</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnEntryScriptType_Script();

-

-		/**

-		 * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnEntryScriptType_ScriptFormat();

-

-		/**

-		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()

-		 * @generated

-		 */

-		EClass ON_EXIT_SCRIPT_TYPE = eINSTANCE.getOnExitScriptType();

-

-		/**

-		 * The meta object literal for the '<em><b>Script</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnExitScriptType_Script();

-

-		/**

-		 * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @generated

-		 */

-		EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnExitScriptType_ScriptFormat();

-

-		/**

-		 * The meta object literal for the '<em>Package Name Type</em>' data type.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see java.lang.String

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()

-		 * @generated

-		 */

-		EDataType PACKAGE_NAME_TYPE = eINSTANCE.getPackageNameType();

-

-		/**

-		 * The meta object literal for the '<em>Priority Type</em>' data type.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see java.math.BigInteger

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()

-		 * @generated

-		 */

-		EDataType PRIORITY_TYPE = eINSTANCE.getPriorityType();

-

-		/**

-		 * The meta object literal for the '<em>Rule Flow Group Type</em>' data type.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see java.lang.String

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()

-		 * @generated

-		 */

-		EDataType RULE_FLOW_GROUP_TYPE = eINSTANCE.getRuleFlowGroupType();

-

-		/**

-		 * The meta object literal for the '<em>Task Name Type</em>' data type.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see java.lang.String

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()

-		 * @generated

-		 */

-		EDataType TASK_NAME_TYPE = eINSTANCE.getTaskNameType();

-

-		/**

-		 * The meta object literal for the '<em>Version Type</em>' data type.

-		 * <!-- begin-user-doc -->

-		 * <!-- end-user-doc -->

-		 * @see java.math.BigInteger

-		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()

-		 * @generated

-		 */

-		EDataType VERSION_TYPE = eINSTANCE.getVersionType();

-

-	}

-

-} //ModelPackage

+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model;
+
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModelPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "model";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.jboss.org/drools";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "tns";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ModelPackage eINSTANCE = org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
+	 * @generated
+	 */
+	int DOCUMENT_ROOT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;
+
+	/**
+	 * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' mapDiagramToViewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;
+
+	/**
+	 * The feature id for the '<em><b>XSI Schema Location</b></em>' mapDiagramToViewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = Bpmn2Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Ad Hoc Sub Process</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__AD_HOC_SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__AD_HOC_SUB_PROCESS;
+
+	/**
+	 * The feature id for the '<em><b>Flow Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__FLOW_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__FLOW_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Artifact</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ARTIFACT = Bpmn2Package.DOCUMENT_ROOT__ARTIFACT;
+
+	/**
+	 * The feature id for the '<em><b>Assignment</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ASSIGNMENT = Bpmn2Package.DOCUMENT_ROOT__ASSIGNMENT;
+
+	/**
+	 * The feature id for the '<em><b>Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Auditing</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__AUDITING = Bpmn2Package.DOCUMENT_ROOT__AUDITING;
+
+	/**
+	 * The feature id for the '<em><b>Base Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__BASE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Base Element With Mixed Content</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT;
+
+	/**
+	 * The feature id for the '<em><b>Boundary Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__BOUNDARY_EVENT = Bpmn2Package.DOCUMENT_ROOT__BOUNDARY_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Business Rule Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__BUSINESS_RULE_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Callable Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CALLABLE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__CALLABLE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Call Activity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CALL_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CALL_ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Call Choreography</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CALL_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CALL_CHOREOGRAPHY;
+
+	/**
+	 * The feature id for the '<em><b>Call Conversation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CALL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CALL_CONVERSATION;
+
+	/**
+	 * The feature id for the '<em><b>Conversation Node</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CONVERSATION_NODE = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_NODE;
+
+	/**
+	 * The feature id for the '<em><b>Cancel Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Root Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ROOT_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__ROOT_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Catch Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__CATCH_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Category</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CATEGORY = Bpmn2Package.DOCUMENT_ROOT__CATEGORY;
+
+	/**
+	 * The feature id for the '<em><b>Category Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CATEGORY_VALUE = Bpmn2Package.DOCUMENT_ROOT__CATEGORY_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Choreography</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY;
+
+	/**
+	 * The feature id for the '<em><b>Collaboration</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__COLLABORATION = Bpmn2Package.DOCUMENT_ROOT__COLLABORATION;
+
+	/**
+	 * The feature id for the '<em><b>Choreography Activity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Choreography Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Compensate Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Complex Behavior Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Complex Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__COMPLEX_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Conditional Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Conversation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION;
+
+	/**
+	 * The feature id for the '<em><b>Conversation Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CONVERSATION_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Conversation Link</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CONVERSATION_LINK = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_LINK;
+
+	/**
+	 * The feature id for the '<em><b>Correlation Key</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CORRELATION_KEY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Correlation Property</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CORRELATION_PROPERTY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Correlation Property Binding</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Correlation Property Retrieval Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Correlation Subscription</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Data Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Data Input</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_INPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT;
+
+	/**
+	 * The feature id for the '<em><b>Data Input Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Data Object</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_OBJECT = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT;
+
+	/**
+	 * The feature id for the '<em><b>Data Object Reference</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_OBJECT_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT_REFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Data Output</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_OUTPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT;
+
+	/**
+	 * The feature id for the '<em><b>Data Output Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Data State</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_STATE = Bpmn2Package.DOCUMENT_ROOT__DATA_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Data Store</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_STORE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE;
+
+	/**
+	 * The feature id for the '<em><b>Data Store Reference</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DATA_STORE_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE_REFERENCE;
+
+	/**
+	 * The feature id for the '<em><b>Definitions</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DEFINITIONS = Bpmn2Package.DOCUMENT_ROOT__DEFINITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Documentation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__DOCUMENTATION = Bpmn2Package.DOCUMENT_ROOT__DOCUMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>End Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__END_EVENT = Bpmn2Package.DOCUMENT_ROOT__END_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>End Point</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__END_POINT = Bpmn2Package.DOCUMENT_ROOT__END_POINT;
+
+	/**
+	 * The feature id for the '<em><b>Error</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ERROR = Bpmn2Package.DOCUMENT_ROOT__ERROR;
+
+	/**
+	 * The feature id for the '<em><b>Error Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ERROR_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ERROR_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Escalation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ESCALATION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION;
+
+	/**
+	 * The feature id for the '<em><b>Escalation Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EVENT = Bpmn2Package.DOCUMENT_ROOT__EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Event Based Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EVENT_BASED_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EVENT_BASED_GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Exclusive Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EXCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EXCLUSIVE_GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Extension</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EXTENSION = Bpmn2Package.DOCUMENT_ROOT__EXTENSION;
+
+	/**
+	 * The feature id for the '<em><b>Extension Elements</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__EXTENSION_ELEMENTS = Bpmn2Package.DOCUMENT_ROOT__EXTENSION_ELEMENTS;
+
+	/**
+	 * The feature id for the '<em><b>Flow Node</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__FLOW_NODE = Bpmn2Package.DOCUMENT_ROOT__FLOW_NODE;
+
+	/**
+	 * The feature id for the '<em><b>Formal Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__FORMAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__FORMAL_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GATEWAY = Bpmn2Package.DOCUMENT_ROOT__GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Global Business Rule Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global Choreography Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global Conversation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CONVERSATION;
+
+	/**
+	 * The feature id for the '<em><b>Global Manual Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_MANUAL_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global Script Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global User Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL_USER_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_USER_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Group</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GROUP = Bpmn2Package.DOCUMENT_ROOT__GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Human Performer</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__HUMAN_PERFORMER = Bpmn2Package.DOCUMENT_ROOT__HUMAN_PERFORMER;
+
+	/**
+	 * The feature id for the '<em><b>Performer</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PERFORMER = Bpmn2Package.DOCUMENT_ROOT__PERFORMER;
+
+	/**
+	 * The feature id for the '<em><b>Resource Role</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RESOURCE_ROLE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ROLE;
+
+	/**
+	 * The feature id for the '<em><b>Implicit Throw Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__IMPLICIT_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__IMPLICIT_THROW_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Import</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__IMPORT = Bpmn2Package.DOCUMENT_ROOT__IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Inclusive Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__INCLUSIVE_GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Input Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INPUT_SET = Bpmn2Package.DOCUMENT_ROOT__INPUT_SET;
+
+	/**
+	 * The feature id for the '<em><b>Interface</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INTERFACE = Bpmn2Package.DOCUMENT_ROOT__INTERFACE;
+
+	/**
+	 * The feature id for the '<em><b>Intermediate Catch Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Intermediate Throw Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Io Binding</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__IO_BINDING = Bpmn2Package.DOCUMENT_ROOT__IO_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Io Specification</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__IO_SPECIFICATION = Bpmn2Package.DOCUMENT_ROOT__IO_SPECIFICATION;
+
+	/**
+	 * The feature id for the '<em><b>Item Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ITEM_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ITEM_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Lane</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__LANE = Bpmn2Package.DOCUMENT_ROOT__LANE;
+
+	/**
+	 * The feature id for the '<em><b>Lane Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__LANE_SET = Bpmn2Package.DOCUMENT_ROOT__LANE_SET;
+
+	/**
+	 * The feature id for the '<em><b>Link Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__LINK_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__LINK_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Loop Characteristics</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__LOOP_CHARACTERISTICS;
+
+	/**
+	 * The feature id for the '<em><b>Manual Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__MANUAL_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Message</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MESSAGE = Bpmn2Package.DOCUMENT_ROOT__MESSAGE;
+
+	/**
+	 * The feature id for the '<em><b>Message Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Message Flow</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MESSAGE_FLOW = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW;
+
+	/**
+	 * The feature id for the '<em><b>Message Flow Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Monitoring</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MONITORING = Bpmn2Package.DOCUMENT_ROOT__MONITORING;
+
+	/**
+	 * The feature id for the '<em><b>Multi Instance Loop Characteristics</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS;
+
+	/**
+	 * The feature id for the '<em><b>Operation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__OPERATION = Bpmn2Package.DOCUMENT_ROOT__OPERATION;
+
+	/**
+	 * The feature id for the '<em><b>Output Set</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__OUTPUT_SET = Bpmn2Package.DOCUMENT_ROOT__OUTPUT_SET;
+
+	/**
+	 * The feature id for the '<em><b>Parallel Gateway</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARALLEL_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__PARALLEL_GATEWAY;
+
+	/**
+	 * The feature id for the '<em><b>Participant</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARTICIPANT = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT;
+
+	/**
+	 * The feature id for the '<em><b>Participant Association</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION;
+
+	/**
+	 * The feature id for the '<em><b>Participant Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Partner Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARTNER_ENTITY = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ENTITY;
+
+	/**
+	 * The feature id for the '<em><b>Partner Role</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PARTNER_ROLE = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ROLE;
+
+	/**
+	 * The feature id for the '<em><b>Potential Owner</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__POTENTIAL_OWNER = Bpmn2Package.DOCUMENT_ROOT__POTENTIAL_OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Process</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PROCESS = Bpmn2Package.DOCUMENT_ROOT__PROCESS;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PROPERTY = Bpmn2Package.DOCUMENT_ROOT__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Receive Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RECEIVE_TASK = Bpmn2Package.DOCUMENT_ROOT__RECEIVE_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Relationship</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RELATIONSHIP = Bpmn2Package.DOCUMENT_ROOT__RELATIONSHIP;
+
+	/**
+	 * The feature id for the '<em><b>Rendering</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RENDERING = Bpmn2Package.DOCUMENT_ROOT__RENDERING;
+
+	/**
+	 * The feature id for the '<em><b>Resource</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RESOURCE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE;
+
+	/**
+	 * The feature id for the '<em><b>Resource Assignment Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Resource Parameter</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RESOURCE_PARAMETER = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Resource Parameter Binding</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Script</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SCRIPT = Bpmn2Package.DOCUMENT_ROOT__SCRIPT;
+
+	/**
+	 * The feature id for the '<em><b>Script Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__SCRIPT_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Send Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SEND_TASK = Bpmn2Package.DOCUMENT_ROOT__SEND_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Sequence Flow</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SEQUENCE_FLOW = Bpmn2Package.DOCUMENT_ROOT__SEQUENCE_FLOW;
+
+	/**
+	 * The feature id for the '<em><b>Service Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SERVICE_TASK = Bpmn2Package.DOCUMENT_ROOT__SERVICE_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Signal</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SIGNAL = Bpmn2Package.DOCUMENT_ROOT__SIGNAL;
+
+	/**
+	 * The feature id for the '<em><b>Signal Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Standard Loop Characteristics</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS;
+
+	/**
+	 * The feature id for the '<em><b>Start Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__START_EVENT = Bpmn2Package.DOCUMENT_ROOT__START_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Sub Choreography</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SUB_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__SUB_CHOREOGRAPHY;
+
+	/**
+	 * The feature id for the '<em><b>Sub Conversation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SUB_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__SUB_CONVERSATION;
+
+	/**
+	 * The feature id for the '<em><b>Sub Process</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__SUB_PROCESS;
+
+	/**
+	 * The feature id for the '<em><b>Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TASK = Bpmn2Package.DOCUMENT_ROOT__TASK;
+
+	/**
+	 * The feature id for the '<em><b>Terminate Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Text</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TEXT = Bpmn2Package.DOCUMENT_ROOT__TEXT;
+
+	/**
+	 * The feature id for the '<em><b>Text Annotation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TEXT_ANNOTATION = Bpmn2Package.DOCUMENT_ROOT__TEXT_ANNOTATION;
+
+	/**
+	 * The feature id for the '<em><b>Throw Event</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__THROW_EVENT;
+
+	/**
+	 * The feature id for the '<em><b>Timer Event Definition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TIMER_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TIMER_EVENT_DEFINITION;
+
+	/**
+	 * The feature id for the '<em><b>Transaction</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TRANSACTION = Bpmn2Package.DOCUMENT_ROOT__TRANSACTION;
+
+	/**
+	 * The feature id for the '<em><b>User Task</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__USER_TASK = Bpmn2Package.DOCUMENT_ROOT__USER_TASK;
+
+	/**
+	 * The feature id for the '<em><b>Global</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__GLOBAL = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Import Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__IMPORT_TYPE = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>On Entry Script</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ON_ENTRY_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>On Exit Script</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__ON_EXIT_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Package Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PACKAGE_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Priority</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__PRIORITY = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Rule Flow Group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__RULE_FLOW_GROUP = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Task Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__TASK_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__VERSION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Wait For Completion</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__WAIT_FOR_COMPLETION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Independent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__INDEPENDENT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 10;
+
+	/**
+	 * The number of structural features of the '<em>Document Root</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT_FEATURE_COUNT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 11;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
+	 * @generated
+	 */
+	int GLOBAL_TYPE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Identifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOBAL_TYPE__IDENTIFIER = 0;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOBAL_TYPE__TYPE = 1;
+
+	/**
+	 * The number of structural features of the '<em>Global Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOBAL_TYPE_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
+	 * @generated
+	 */
+	int IMPORT_TYPE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPORT_TYPE__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Import Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPORT_TYPE_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
+	 * @generated
+	 */
+	int ON_ENTRY_SCRIPT_TYPE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Script</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_ENTRY_SCRIPT_TYPE__SCRIPT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Script Format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
+
+	/**
+	 * The number of structural features of the '<em>On Entry Script Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_ENTRY_SCRIPT_TYPE_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
+	 * @generated
+	 */
+	int ON_EXIT_SCRIPT_TYPE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Script</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_EXIT_SCRIPT_TYPE__SCRIPT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Script Format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
+
+	/**
+	 * The number of structural features of the '<em>On Exit Script Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ON_EXIT_SCRIPT_TYPE_FEATURE_COUNT = 2;
+
+	/**
+	 * The meta object id for the '<em>Package Name Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.String
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
+	 * @generated
+	 */
+	int PACKAGE_NAME_TYPE = 5;
+
+	/**
+	 * The meta object id for the '<em>Priority Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.math.BigInteger
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
+	 * @generated
+	 */
+	int PRIORITY_TYPE = 6;
+
+	/**
+	 * The meta object id for the '<em>Rule Flow Group Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.String
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
+	 * @generated
+	 */
+	int RULE_FLOW_GROUP_TYPE = 7;
+
+	/**
+	 * The meta object id for the '<em>Task Name Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.String
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
+	 * @generated
+	 */
+	int TASK_NAME_TYPE = 8;
+
+	/**
+	 * The meta object id for the '<em>Version Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.math.BigInteger
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
+	 * @generated
+	 */
+	int VERSION_TYPE = 9;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot <em>Document Root</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Document Root</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot
+	 * @generated
+	 */
+	EClass getDocumentRoot();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal <em>Global</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Global</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_Global();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType <em>Import Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Import Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_ImportType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript <em>On Entry Script</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>On Entry Script</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_OnEntryScript();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript <em>On Exit Script</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>On Exit Script</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_OnExitScript();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName <em>Package Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Package Name</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_PackageName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority <em>Priority</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Priority</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_Priority();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup <em>Rule Flow Group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rule Flow Group</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_RuleFlowGroup();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName <em>Task Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Task Name</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_TaskName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion <em>Version</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Version</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_Version();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion <em>Wait For Completion</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Wait For Completion</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_WaitForCompletion();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent <em>Independent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Independent</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_Independent();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType <em>Global Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Global Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType
+	 * @generated
+	 */
+	EClass getGlobalType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier <em>Identifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Identifier</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier()
+	 * @see #getGlobalType()
+	 * @generated
+	 */
+	EAttribute getGlobalType_Identifier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType()
+	 * @see #getGlobalType()
+	 * @generated
+	 */
+	EAttribute getGlobalType_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType <em>Import Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Import Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType
+	 * @generated
+	 */
+	EClass getImportType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName()
+	 * @see #getImportType()
+	 * @generated
+	 */
+	EAttribute getImportType_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType <em>On Entry Script Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>On Entry Script Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType
+	 * @generated
+	 */
+	EClass getOnEntryScriptType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript <em>Script</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Script</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript()
+	 * @see #getOnEntryScriptType()
+	 * @generated
+	 */
+	EAttribute getOnEntryScriptType_Script();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat <em>Script Format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Script Format</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat()
+	 * @see #getOnEntryScriptType()
+	 * @generated
+	 */
+	EAttribute getOnEntryScriptType_ScriptFormat();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType <em>On Exit Script Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>On Exit Script Type</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType
+	 * @generated
+	 */
+	EClass getOnExitScriptType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript <em>Script</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Script</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript()
+	 * @see #getOnExitScriptType()
+	 * @generated
+	 */
+	EAttribute getOnExitScriptType_Script();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat <em>Script Format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Script Format</em>'.
+	 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat()
+	 * @see #getOnExitScriptType()
+	 * @generated
+	 */
+	EAttribute getOnExitScriptType_ScriptFormat();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>Package Name Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Package Name Type</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 *        extendedMetaData="name='packageName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+	 * @generated
+	 */
+	EDataType getPackageNameType();
+
+	/**
+	 * Returns the meta object for data type '{@link java.math.BigInteger <em>Priority Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Priority Type</em>'.
+	 * @see java.math.BigInteger
+	 * @model instanceClass="java.math.BigInteger"
+	 *        extendedMetaData="name='priority_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='1'"
+	 * @generated
+	 */
+	EDataType getPriorityType();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>Rule Flow Group Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Rule Flow Group Type</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 *        extendedMetaData="name='ruleFlowGroup_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+	 * @generated
+	 */
+	EDataType getRuleFlowGroupType();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>Task Name Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Task Name Type</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 *        extendedMetaData="name='taskName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+	 * @generated
+	 */
+	EDataType getTaskNameType();
+
+	/**
+	 * Returns the meta object for data type '{@link java.math.BigInteger <em>Version Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Version Type</em>'.
+	 * @see java.math.BigInteger
+	 * @model instanceClass="java.math.BigInteger"
+	 *        extendedMetaData="name='version_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='0'"
+	 * @generated
+	 */
+	EDataType getVersionType();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ModelFactory getModelFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
+		 * @generated
+		 */
+		EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+		/**
+		 * The meta object literal for the '<em><b>Global</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__GLOBAL = eINSTANCE.getDocumentRoot_Global();
+
+		/**
+		 * The meta object literal for the '<em><b>Import Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__IMPORT_TYPE = eINSTANCE.getDocumentRoot_ImportType();
+
+		/**
+		 * The meta object literal for the '<em><b>On Entry Script</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__ON_ENTRY_SCRIPT = eINSTANCE.getDocumentRoot_OnEntryScript();
+
+		/**
+		 * The meta object literal for the '<em><b>On Exit Script</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__ON_EXIT_SCRIPT = eINSTANCE.getDocumentRoot_OnExitScript();
+
+		/**
+		 * The meta object literal for the '<em><b>Package Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__PACKAGE_NAME = eINSTANCE.getDocumentRoot_PackageName();
+
+		/**
+		 * The meta object literal for the '<em><b>Priority</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__PRIORITY = eINSTANCE.getDocumentRoot_Priority();
+
+		/**
+		 * The meta object literal for the '<em><b>Rule Flow Group</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__RULE_FLOW_GROUP = eINSTANCE.getDocumentRoot_RuleFlowGroup();
+
+		/**
+		 * The meta object literal for the '<em><b>Task Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__TASK_NAME = eINSTANCE.getDocumentRoot_TaskName();
+
+		/**
+		 * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__VERSION = eINSTANCE.getDocumentRoot_Version();
+
+		/**
+		 * The meta object literal for the '<em><b>Wait For Completion</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__WAIT_FOR_COMPLETION = eINSTANCE.getDocumentRoot_WaitForCompletion();
+
+		/**
+		 * The meta object literal for the '<em><b>Independent</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__INDEPENDENT = eINSTANCE.getDocumentRoot_Independent();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
+		 * @generated
+		 */
+		EClass GLOBAL_TYPE = eINSTANCE.getGlobalType();
+
+		/**
+		 * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GLOBAL_TYPE__IDENTIFIER = eINSTANCE.getGlobalType_Identifier();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GLOBAL_TYPE__TYPE = eINSTANCE.getGlobalType_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
+		 * @generated
+		 */
+		EClass IMPORT_TYPE = eINSTANCE.getImportType();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IMPORT_TYPE__NAME = eINSTANCE.getImportType_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
+		 * @generated
+		 */
+		EClass ON_ENTRY_SCRIPT_TYPE = eINSTANCE.getOnEntryScriptType();
+
+		/**
+		 * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnEntryScriptType_Script();
+
+		/**
+		 * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnEntryScriptType_ScriptFormat();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
+		 * @generated
+		 */
+		EClass ON_EXIT_SCRIPT_TYPE = eINSTANCE.getOnExitScriptType();
+
+		/**
+		 * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnExitScriptType_Script();
+
+		/**
+		 * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnExitScriptType_ScriptFormat();
+
+		/**
+		 * The meta object literal for the '<em>Package Name Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.String
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
+		 * @generated
+		 */
+		EDataType PACKAGE_NAME_TYPE = eINSTANCE.getPackageNameType();
+
+		/**
+		 * The meta object literal for the '<em>Priority Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.math.BigInteger
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
+		 * @generated
+		 */
+		EDataType PRIORITY_TYPE = eINSTANCE.getPriorityType();
+
+		/**
+		 * The meta object literal for the '<em>Rule Flow Group Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.String
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
+		 * @generated
+		 */
+		EDataType RULE_FLOW_GROUP_TYPE = eINSTANCE.getRuleFlowGroupType();
+
+		/**
+		 * The meta object literal for the '<em>Task Name Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.String
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
+		 * @generated
+		 */
+		EDataType TASK_NAME_TYPE = eINSTANCE.getTaskNameType();
+
+		/**
+		 * The meta object literal for the '<em>Version Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.math.BigInteger
+		 * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
+		 * @generated
+		 */
+		EDataType VERSION_TYPE = eINSTANCE.getVersionType();
+
+	}
+
+} //ModelPackage
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
index 3bc4656..299aa86 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
@@ -1,290 +1,290 @@
-package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.util;

-

-import java.util.Hashtable;

-import java.util.List;

-import java.util.Map.Entry;

-

-import org.eclipse.bpmn2.Definitions;

-import org.eclipse.bpmn2.ItemDefinition;

-import org.eclipse.bpmn2.ItemKind;

-import org.eclipse.bpmn2.Process;

-import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;

-import org.eclipse.bpmn2.modeler.core.utils.ImportUtil;

-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataType;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeFactory;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeRegistry;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.EnumDataType;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.UndefinedDataType;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory;

-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelPackage;

-import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;

-import org.eclipse.bpmn2.modeler.ui.property.dialogs.SchemaImportDialog;

-import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecore.EStructuralFeature;

-import org.eclipse.emf.transaction.RecordingCommand;

-import org.eclipse.emf.transaction.TransactionalEditingDomain;

-import org.eclipse.jface.dialogs.MessageDialog;

-import org.eclipse.jface.window.Window;

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.swt.widgets.Shell;

-import org.eclipse.ui.PlatformUI;

-import org.eclipse.ui.dialogs.ListDialog;

-

-public class JbpmModelUtil {

-

-	/**

-	 * Helper method to display a Java class import dialog and create a new ImportType. This method

-	 * will also create a corresponding ItemDefinition for the newly imported java type.

-	 * 

-	 * @param object - a context EObject used to search for the Process in which the new

-	 *                 ImportType will be created.

-	 * @return an ImportType object if it was created, null if the user canceled the import dialog.

-	 */

-	public static String showImportDialog(EObject object) {

-		String className = null;

-		Shell shell = ModelUtil.getEditor(object).getSite().getShell();

-		SchemaImportDialog dialog = new SchemaImportDialog(shell, SchemaImportDialog.ALLOW_JAVA);

-		if (dialog.open() == Window.OK) {

-			Object result[] = dialog.getResult();

-			if (result.length == 1 && result[0] instanceof Class) {

-				className = ((Class)result[0]).getName();

-			}

-		}

-		return className;

-	}

-	

-	public static ImportType addImport(final String className, final EObject object) {

-		if (className==null || className.isEmpty())

-			return null;

-		

-		final Definitions definitions = ModelUtil.getDefinitions(object);

-		if (definitions==null)

-			return null;

-		

-		Process process = null;

-		if (object instanceof Process)

-			process = (Process)object;

-		else {

-			process = (Process) ModelUtil.findNearestAncestor(object, new Class[] { Process.class });

-			if (process==null) {

-				List<Process> processes = ModelUtil.getAllRootElements(definitions, Process.class);

-				if (processes.size()>1) {

-					// TODO: allow user to pick one?

-					process = processes.get(0);

-				}

-				else if (processes.size()==1)

-					process = processes.get(0);

-				else {

-					Shell shell = ModelUtil.getEditor(object).getSite().getShell();

-					MessageDialog.openError(shell, "Error", "No processes defined!");

-				}

-			}

-		}

-		

-		final Process fProcess = process;

-		final ImportType newImport = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());

-		newImport.setName(className);

-

-		TransactionalEditingDomain domain = ModelUtil.getEditor(object).getEditingDomain();

-		domain.getCommandStack().execute(new RecordingCommand(domain) {

-			@Override

-			protected void doExecute() {

-				

-				ModelUtil.addExtensionAttributeValue(fProcess,

-						ModelPackage.eINSTANCE.getDocumentRoot_ImportType(), newImport);

-				

-				if (object instanceof ItemDefinition) {

-					// update the ItemDefinition passed to us...

-					ItemDefinition oldItemDef = (ItemDefinition)object;

-					String oldName = ModelUtil.getStringWrapperValue(oldItemDef.getStructureRef());

-					// ...but only if the structureRef is empty

-					if (oldName!=null && !oldName.isEmpty()) {

-						// if not, duplicate the old one

-						ItemDefinition newItemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);

-						newItemDef.setItemKind(ItemKind.PHYSICAL);

-						EObject structureRef = ModelUtil.createStringWrapper(oldName);

-						newItemDef.setStructureRef(structureRef);

-						// and add it as a new one

-						definitions.getRootElements().add(newItemDef);

-						ModelUtil.setID(newItemDef);

-					}

-					// and now update the existing item's structureRef

-					oldItemDef.setItemKind(ItemKind.PHYSICAL);

-					EObject structureRef = ModelUtil.createStringWrapper(className);

-					oldItemDef.setStructureRef(structureRef);

-				}

-				else {

-					// create a new ItemDefinition

-					ItemDefinition itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);

-					itemDef.setItemKind(ItemKind.PHYSICAL);

-					EObject structureRef = ModelUtil.createStringWrapper(className);

-					itemDef.setStructureRef(structureRef);

-					if (ImportUtil.findItemDefinition(definitions, itemDef)==null) {

-			

-						// create a reference to the ImportType as an extension element to the ItemDefinition?

-//						ImportType ref = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());

-//						((InternalEObject)ref).eSetProxyURI(EcoreUtil.getURI(newImport));

-//						ModelUtil.addExtensionAttributeValue(itemDef, feature, ref);

-						// Nope, don't need this! The ItemDefinition needs to stick around, otherwise the data types

-						// for process variables and globals would disappear. Besides, jBPM allows data types

-						// (a.k.a. ItemDefinitions) to be defined as sort of "forward references" without actual

-						// knowledge of the physicial structure of the data type - these get resolved (somehow,

-						// through FM maybe?) at runtime.

-						// As a side note: if a type is unknown (i.e. there is no "import") then the structure

-						// will be unknown in java scripts (FormalExpressions).

-			

-						// add the ItemDefinition to the root elements

-						definitions.getRootElements().add(itemDef);

-						ModelUtil.setID(itemDef);

-					}

-				}

-			}

-		});

-		return newImport;

-	}

-	

-	/**

-	 * This method compiles a list of all known "data types" (a.k.a. ItemDefinitions) that

-	 * are in scope for the given context element.

-	 * 

-	 * There are 4 different places to look:

-	 * 1. the Data Type registry, which contains a list of all known "native" types, e.g. java

-	 *    Strings, Integers, etc.

-	 * 2. the list of ImportType extension values in the Process ancestor nearest to the given

-	 *    context object.

-	 * 3. the list of GlobalType extension values, also in the nearest Process ancestor

-	 * 4. the list of ItemDefinitions in the root elements.

-	 * 

-	 * @param object - a context EObject used to search for ItemDefinitions, Globals and Imports

-	 * @return a map of Strings and Objects representing the various data types

-	 */

-	public static Hashtable<String, Object> collectAllDataTypes(EObject object) {

-

-		Hashtable<String,Object> choices = new Hashtable<String,Object>();

-

-		// add all native types (as defined in the DataTypeRegistry)

-		DataTypeRegistry.getFactory("dummy");

-		for (Entry<String, DataTypeFactory> e : DataTypeRegistry.instance.entrySet()) {

-			DataType dt = e.getValue().createDataType();

-			if (dt instanceof EnumDataType || dt instanceof UndefinedDataType)

-				continue;

-			choices.put(dt.getStringType(),dt);

-		}

-		

-		// add all imported data types

-		EObject parent = object;

-		while (parent!=null && !(parent instanceof org.eclipse.bpmn2.Process))

-			parent = parent.eContainer();

-		

-		String s;

-		List<ImportType> imports = ModelUtil.getAllExtensionAttributeValues(parent, ImportType.class);

-		for (ImportType it : imports) {

-			s = it.getName();

-			if (s!=null && !s.isEmpty())

-				choices.put(s, it);

-		}

-		

-		// add all Global variable types

-		List<GlobalType> globals = ModelUtil.getAllExtensionAttributeValues(parent, GlobalType.class);

-		for (GlobalType gt : globals) {

-			s = gt.getType();

-			if (s!=null && !s.isEmpty())

-				choices.put(s, gt);

-		}

-

-		// add all ItemDefinitions

-		Definitions defs = ModelUtil.getDefinitions(object);

-		List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(defs, ItemDefinition.class);

-		for (ItemDefinition id : itemDefs) {

-			s = ModelUtil.getStringWrapperValue(id.getStructureRef());

-			if (s==null || s.isEmpty())

-				s = id.getId();

-			choices.put(s,id);

-		}

-		

-		return choices;

-	}

-	

-	/**

-	 * This method returns a string representation for a "data type". This is intended to

-	 * be used to interpret the various objects in the map returned by collectAllDataTypes().

-	 * 

-	 * @param value - one of the Object values in the map returned by collectAllDataTypes().

-	 * @return a string representation of the data type

-	 */

-	public static String getDataType(Object value) {

-		String stringValue = null;

-		if (value instanceof String) {

-			stringValue = (String)value;

-		}

-		else if (value instanceof GlobalType) {

-			stringValue = ((GlobalType)value).getType();

-		}

-		else if (value instanceof DataType) {

-			stringValue = ((DataType)value).getStringType();

-		}

-		else if (value instanceof ImportType) {

-			stringValue = ((ImportType)value).getName();

-		}

-		else if (value instanceof ItemDefinition) {

-			stringValue = ModelUtil.getDisplayName((ItemDefinition)value);

-		}

-		return stringValue;

-	}

-	

-	/**

-	 * This method returns an ItemDefinition object for a "data type". This is intended to

-	 * be used to interpret the various objects in the map returned by collectAllDataTypes().

-	 * 

-	 * NOTE: This method will create an ItemDefinition if it does not already exist.

-	 * 

-	 * @param businessObject - a context EObject used to search for ItemDefinitions, and to create

-	 *                 new ItemDefinitions if necessary.

-	 * @param value - one of the Object values in the map returned by collectAllDataTypes().

-	 * @return an ItemDefinition for the data type

-	 */

-	public static ItemDefinition getDataType(EObject context, Object value) {

-		ItemDefinition itemDef = null;

-		if (value instanceof String) {

-			itemDef = findOrCreateItemDefinition( context, (String)value );

-		}

-		else if (value instanceof GlobalType) {

-			itemDef = findOrCreateItemDefinition( context, ((GlobalType)value).getType() );

-		}

-		else if (value instanceof DataType) {

-			itemDef = findOrCreateItemDefinition( context, ((DataType)value).getStringType() );

-		}

-		else if (value instanceof ImportType) {

-			itemDef = findOrCreateItemDefinition( context, ((ImportType)value).getName() );

-		}

-		else if (value instanceof ItemDefinition) {

-			itemDef = (ItemDefinition)value;

-		}

-		return itemDef;

-	}

-	

-	public static ItemDefinition findOrCreateItemDefinition(EObject context, String structureRef) {

-		ItemDefinition itemDef = null;

-		Definitions definitions = ModelUtil.getDefinitions(context);

-		List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(definitions, ItemDefinition.class);

-		for (ItemDefinition id : itemDefs) {

-			String s = ModelUtil.getStringWrapperValue(id.getStructureRef());

-			if (s!=null && s.equals(structureRef)) {

-				itemDef = id;

-				break;

-			}

-		}

-		if (itemDef==null)

-		{

-			itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);

-			itemDef.setStructureRef(ModelUtil.createStringWrapper(structureRef));

-			itemDef.setItemKind(ItemKind.PHYSICAL);

-			definitions.getRootElements().add(itemDef);

-			ModelUtil.setID(itemDef);

-		}

-		return itemDef;

-	}

-}

+package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.util;
+
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.ItemKind;
+import org.eclipse.bpmn2.Process;
+import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
+import org.eclipse.bpmn2.modeler.core.utils.ImportUtil;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeFactory;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeRegistry;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.EnumDataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.UndefinedDataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelPackage;
+import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
+import org.eclipse.bpmn2.modeler.ui.property.dialogs.SchemaImportDialog;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ListDialog;
+
+public class JbpmModelUtil {
+
+	/**
+	 * Helper method to display a Java class import dialog and create a new ImportType. This method
+	 * will also create a corresponding ItemDefinition for the newly imported java type.
+	 * 
+	 * @param object - a context EObject used to search for the Process in which the new
+	 *                 ImportType will be created.
+	 * @return an ImportType object if it was created, null if the user canceled the import dialog.
+	 */
+	public static String showImportDialog(EObject object) {
+		String className = null;
+		Shell shell = ModelUtil.getEditor(object).getSite().getShell();
+		SchemaImportDialog dialog = new SchemaImportDialog(shell, SchemaImportDialog.ALLOW_JAVA);
+		if (dialog.open() == Window.OK) {
+			Object result[] = dialog.getResult();
+			if (result.length == 1 && result[0] instanceof Class) {
+				className = ((Class)result[0]).getName();
+			}
+		}
+		return className;
+	}
+	
+	public static ImportType addImport(final String className, final EObject object) {
+		if (className==null || className.isEmpty())
+			return null;
+		
+		final Definitions definitions = ModelUtil.getDefinitions(object);
+		if (definitions==null)
+			return null;
+		
+		Process process = null;
+		if (object instanceof Process)
+			process = (Process)object;
+		else {
+			process = (Process) ModelUtil.findNearestAncestor(object, new Class[] { Process.class });
+			if (process==null) {
+				List<Process> processes = ModelUtil.getAllRootElements(definitions, Process.class);
+				if (processes.size()>1) {
+					// TODO: allow user to pick one?
+					process = processes.get(0);
+				}
+				else if (processes.size()==1)
+					process = processes.get(0);
+				else {
+					Shell shell = ModelUtil.getEditor(object).getSite().getShell();
+					MessageDialog.openError(shell, "Error", "No processes defined!");
+				}
+			}
+		}
+		
+		final Process fProcess = process;
+		final ImportType newImport = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
+		newImport.setName(className);
+
+		TransactionalEditingDomain domain = ModelUtil.getEditor(object).getEditingDomain();
+		domain.getCommandStack().execute(new RecordingCommand(domain) {
+			@Override
+			protected void doExecute() {
+				
+				ModelUtil.addExtensionAttributeValue(fProcess,
+						ModelPackage.eINSTANCE.getDocumentRoot_ImportType(), newImport);
+				
+				if (object instanceof ItemDefinition) {
+					// update the ItemDefinition passed to us...
+					ItemDefinition oldItemDef = (ItemDefinition)object;
+					String oldName = ModelUtil.getStringWrapperValue(oldItemDef.getStructureRef());
+					// ...but only if the structureRef is empty
+					if (oldName!=null && !oldName.isEmpty()) {
+						// if not, duplicate the old one
+						ItemDefinition newItemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+						newItemDef.setItemKind(ItemKind.PHYSICAL);
+						EObject structureRef = ModelUtil.createStringWrapper(oldName);
+						newItemDef.setStructureRef(structureRef);
+						// and add it as a new one
+						definitions.getRootElements().add(newItemDef);
+						ModelUtil.setID(newItemDef);
+					}
+					// and now update the existing item's structureRef
+					oldItemDef.setItemKind(ItemKind.PHYSICAL);
+					EObject structureRef = ModelUtil.createStringWrapper(className);
+					oldItemDef.setStructureRef(structureRef);
+				}
+				else {
+					// create a new ItemDefinition
+					ItemDefinition itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+					itemDef.setItemKind(ItemKind.PHYSICAL);
+					EObject structureRef = ModelUtil.createStringWrapper(className);
+					itemDef.setStructureRef(structureRef);
+					if (ImportUtil.findItemDefinition(definitions, itemDef)==null) {
+			
+						// create a reference to the ImportType as an extension element to the ItemDefinition?
+//						ImportType ref = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
+//						((InternalEObject)ref).eSetProxyURI(EcoreUtil.getURI(newImport));
+//						ModelUtil.addExtensionAttributeValue(itemDef, feature, ref);
+						// Nope, don't need this! The ItemDefinition needs to stick around, otherwise the data types
+						// for process variables and globals would disappear. Besides, jBPM allows data types
+						// (a.k.a. ItemDefinitions) to be defined as sort of "forward references" without actual
+						// knowledge of the physicial structure of the data type - these get resolved (somehow,
+						// through FM maybe?) at runtime.
+						// As a side note: if a type is unknown (i.e. there is no "import") then the structure
+						// will be unknown in java scripts (FormalExpressions).
+			
+						// add the ItemDefinition to the root elements
+						definitions.getRootElements().add(itemDef);
+						ModelUtil.setID(itemDef);
+					}
+				}
+			}
+		});
+		return newImport;
+	}
+	
+	/**
+	 * This method compiles a list of all known "data types" (a.k.a. ItemDefinitions) that
+	 * are in scope for the given context element.
+	 * 
+	 * There are 4 different places to look:
+	 * 1. the Data Type registry, which contains a list of all known "native" types, e.g. java
+	 *    Strings, Integers, etc.
+	 * 2. the list of ImportType extension values in the Process ancestor nearest to the given
+	 *    context object.
+	 * 3. the list of GlobalType extension values, also in the nearest Process ancestor
+	 * 4. the list of ItemDefinitions in the root elements.
+	 * 
+	 * @param object - a context EObject used to search for ItemDefinitions, Globals and Imports
+	 * @return a mapDiagramToViewer of Strings and Objects representing the various data types
+	 */
+	public static Hashtable<String, Object> collectAllDataTypes(EObject object) {
+
+		Hashtable<String,Object> choices = new Hashtable<String,Object>();
+
+		// add all native types (as defined in the DataTypeRegistry)
+		DataTypeRegistry.getFactory("dummy");
+		for (Entry<String, DataTypeFactory> e : DataTypeRegistry.instance.entrySet()) {
+			DataType dt = e.getValue().createDataType();
+			if (dt instanceof EnumDataType || dt instanceof UndefinedDataType)
+				continue;
+			choices.put(dt.getStringType(),dt);
+		}
+		
+		// add all imported data types
+		EObject parent = object;
+		while (parent!=null && !(parent instanceof org.eclipse.bpmn2.Process))
+			parent = parent.eContainer();
+		
+		String s;
+		List<ImportType> imports = ModelUtil.getAllExtensionAttributeValues(parent, ImportType.class);
+		for (ImportType it : imports) {
+			s = it.getName();
+			if (s!=null && !s.isEmpty())
+				choices.put(s, it);
+		}
+		
+		// add all Global variable types
+		List<GlobalType> globals = ModelUtil.getAllExtensionAttributeValues(parent, GlobalType.class);
+		for (GlobalType gt : globals) {
+			s = gt.getType();
+			if (s!=null && !s.isEmpty())
+				choices.put(s, gt);
+		}
+
+		// add all ItemDefinitions
+		Definitions defs = ModelUtil.getDefinitions(object);
+		List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(defs, ItemDefinition.class);
+		for (ItemDefinition id : itemDefs) {
+			s = ModelUtil.getStringWrapperValue(id.getStructureRef());
+			if (s==null || s.isEmpty())
+				s = id.getId();
+			choices.put(s,id);
+		}
+		
+		return choices;
+	}
+	
+	/**
+	 * This method returns a string representation for a "data type". This is intended to
+	 * be used to interpret the various objects in the mapDiagramToViewer returned by collectAllDataTypes().
+	 * 
+	 * @param value - one of the Object values in the mapDiagramToViewer returned by collectAllDataTypes().
+	 * @return a string representation of the data type
+	 */
+	public static String getDataType(Object value) {
+		String stringValue = null;
+		if (value instanceof String) {
+			stringValue = (String)value;
+		}
+		else if (value instanceof GlobalType) {
+			stringValue = ((GlobalType)value).getType();
+		}
+		else if (value instanceof DataType) {
+			stringValue = ((DataType)value).getStringType();
+		}
+		else if (value instanceof ImportType) {
+			stringValue = ((ImportType)value).getName();
+		}
+		else if (value instanceof ItemDefinition) {
+			stringValue = ModelUtil.getDisplayName((ItemDefinition)value);
+		}
+		return stringValue;
+	}
+	
+	/**
+	 * This method returns an ItemDefinition object for a "data type". This is intended to
+	 * be used to interpret the various objects in the mapDiagramToViewer returned by collectAllDataTypes().
+	 * 
+	 * NOTE: This method will create an ItemDefinition if it does not already exist.
+	 * 
+	 * @param businessObject - a context EObject used to search for ItemDefinitions, and to create
+	 *                 new ItemDefinitions if necessary.
+	 * @param value - one of the Object values in the mapDiagramToViewer returned by collectAllDataTypes().
+	 * @return an ItemDefinition for the data type
+	 */
+	public static ItemDefinition getDataType(EObject context, Object value) {
+		ItemDefinition itemDef = null;
+		if (value instanceof String) {
+			itemDef = findOrCreateItemDefinition( context, (String)value );
+		}
+		else if (value instanceof GlobalType) {
+			itemDef = findOrCreateItemDefinition( context, ((GlobalType)value).getType() );
+		}
+		else if (value instanceof DataType) {
+			itemDef = findOrCreateItemDefinition( context, ((DataType)value).getStringType() );
+		}
+		else if (value instanceof ImportType) {
+			itemDef = findOrCreateItemDefinition( context, ((ImportType)value).getName() );
+		}
+		else if (value instanceof ItemDefinition) {
+			itemDef = (ItemDefinition)value;
+		}
+		return itemDef;
+	}
+	
+	public static ItemDefinition findOrCreateItemDefinition(EObject context, String structureRef) {
+		ItemDefinition itemDef = null;
+		Definitions definitions = ModelUtil.getDefinitions(context);
+		List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(definitions, ItemDefinition.class);
+		for (ItemDefinition id : itemDefs) {
+			String s = ModelUtil.getStringWrapperValue(id.getStructureRef());
+			if (s!=null && s.equals(structureRef)) {
+				itemDef = id;
+				break;
+			}
+		}
+		if (itemDef==null)
+		{
+			itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+			itemDef.setStructureRef(ModelUtil.createStringWrapper(structureRef));
+			itemDef.setItemKind(ItemKind.PHYSICAL);
+			definitions.getRootElements().add(itemDef);
+			ModelUtil.setID(itemDef);
+		}
+		return itemDef;
+	}
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
index d7abb09..ec62a62 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
@@ -1,608 +1,608 @@
-/*******************************************************************************

- * Copyright (c) 2011 Red Hat, Inc.

- *  All rights reserved.

- * This program is made available under the terms of the

- * Eclipse Public License v1.0 which accompanies this distribution,

- * and is available at http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- * Red Hat, Inc. - initial API and implementation

- *

- * @author Bob Brodt

- ******************************************************************************/

-

-package org.eclipse.bpmn2.modeler.ui.adapters;

-

-import java.util.Hashtable;

-

-import org.eclipse.bpmn2.Activity;

-import org.eclipse.bpmn2.Bpmn2Package;

-import org.eclipse.bpmn2.CallActivity;

-import org.eclipse.bpmn2.CallChoreography;

-import org.eclipse.bpmn2.CallConversation;

-import org.eclipse.bpmn2.CompensateEventDefinition;

-import org.eclipse.bpmn2.CorrelationKey;

-import org.eclipse.bpmn2.CorrelationPropertyBinding;

-import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;

-import org.eclipse.bpmn2.DataAssociation;

-import org.eclipse.bpmn2.DataInput;

-import org.eclipse.bpmn2.DataObjectReference;

-import org.eclipse.bpmn2.DataOutput;

-import org.eclipse.bpmn2.Error;

-import org.eclipse.bpmn2.ErrorEventDefinition;

-import org.eclipse.bpmn2.Escalation;

-import org.eclipse.bpmn2.EscalationEventDefinition;

-import org.eclipse.bpmn2.EventDefinition;

-import org.eclipse.bpmn2.FlowElement;

-import org.eclipse.bpmn2.FormalExpression;

-import org.eclipse.bpmn2.Import;

-import org.eclipse.bpmn2.Interface;

-import org.eclipse.bpmn2.ItemAwareElement;

-import org.eclipse.bpmn2.ItemDefinition;

-import org.eclipse.bpmn2.LinkEventDefinition;

-import org.eclipse.bpmn2.Message;

-import org.eclipse.bpmn2.MessageEventDefinition;

-import org.eclipse.bpmn2.MessageFlow;

-import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;

-import org.eclipse.bpmn2.Operation;

-import org.eclipse.bpmn2.Participant;

-import org.eclipse.bpmn2.Process;

-import org.eclipse.bpmn2.Property;

-import org.eclipse.bpmn2.ReceiveTask;

-import org.eclipse.bpmn2.ResourceAssignmentExpression;

-import org.eclipse.bpmn2.ResourceParameterBinding;

-import org.eclipse.bpmn2.ResourceRole;

-import org.eclipse.bpmn2.RootElement;

-import org.eclipse.bpmn2.ScriptTask;

-import org.eclipse.bpmn2.SendTask;

-import org.eclipse.bpmn2.SequenceFlow;

-import org.eclipse.bpmn2.ServiceTask;

-import org.eclipse.bpmn2.Signal;

-import org.eclipse.bpmn2.SignalEventDefinition;

-import org.eclipse.bpmn2.Task;

-import org.eclipse.bpmn2.modeler.core.adapters.AdapterRegistry;

-import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;

-import org.eclipse.bpmn2.modeler.core.runtime.PropertyExtensionDescriptor;

-import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;

-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ActivityPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallActivityPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallChoreographyPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallConversationPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CompensateEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationKeyPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyBindingPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyRetrievalExpressionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataAssociationPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataInputPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataObjectReferencePropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataOutputPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.FlowElementPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.FormalExpressionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ImportPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.InterfacePropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemAwareElementPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.LinkEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageFlowPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessagePropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MultiInstanceLoopCharacteristicsPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.OperationPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ParticipantPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ProcessPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.PropertyPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ReceiveTaskPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceAssignmentExpressionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceParameterBindingPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceRolePropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.RootElementPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ScriptTaskPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SendTaskPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SequenceFlowPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ServiceTaskPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalEventDefinitionPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalPropertiesAdapter;

-import org.eclipse.bpmn2.modeler.ui.adapters.properties.TaskPropertiesAdapter;

-import org.eclipse.bpmn2.provider.Bpmn2ItemProviderAdapterFactory;

-import org.eclipse.bpmn2.util.Bpmn2Switch;

-import org.eclipse.emf.common.notify.Adapter;

-import org.eclipse.emf.common.notify.AdapterFactory;

-import org.eclipse.emf.common.notify.Notifier;

-import org.eclipse.emf.ecore.EClass;

-import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecore.EPackage;

-import org.eclipse.emf.ecore.EStructuralFeature;

-import org.eclipse.emf.ecore.util.EcoreUtil;

-

-/**

- * This class adds a name-value map to the Bpmn2ItemProviderAdapterFactory.

- * This allows for additional customization of the UI.

- */

-public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdapterFactory {

-

-	public Bpmn2EditorItemProviderAdapterFactory() {

-		super();

-		supportedTypes.add(ExtendedPropertiesAdapter.class);

-	}

-

-	@Override

-	public Adapter adaptNew(Notifier object, Object type) {

-		if (type == ExtendedPropertiesAdapter.class && object instanceof EObject) {

-		    Adapter adapter = bpmn2ModelSwitch.doSwitch((EObject) object);

-		    if (adapter!=null && !(object instanceof EClass)) {

-				((EObject)object).eAdapters().add(adapter);

-		    }

-			return adapter;

-		}

-		return super.adaptNew(object, type);

-	}

-

-	@Override

-	protected void associate(Adapter adapter, Notifier target) {

-		if (adapter != null) {

-			if (!target.eAdapters().contains(adapter))

-				target.eAdapters().add(adapter);

-		}

-	}

-

-    protected Bpmn2Switch<ExtendedPropertiesAdapter> bpmn2ModelSwitch = new Bpmn2ExtendedPropertiesSwitch(this);

-    

-    public class Bpmn2ExtendedPropertiesSwitch extends Bpmn2Switch<ExtendedPropertiesAdapter> {

-

-    	private AdapterFactory adapterFactory;

-        

-    	public Bpmn2ExtendedPropertiesSwitch(AdapterFactory adapterFactory) {

-    		super();

-    		this.adapterFactory = adapterFactory;

-    		// This adapter can handle the <propertyExtension>s from foreign models also!

-    		for (TargetRuntime rt : TargetRuntime.getAllRuntimes()){

-	    		for (PropertyExtensionDescriptor ped : rt.getPropertyExtensions()) {

-	    			AdapterRegistry.INSTANCE.registerFactory(ped.getInstanceClass(), adapterFactory);

-	    		}

-    		}

-    	}

-    	

-        /* (non-Javadoc)

-         * @see org.eclipse.bpmn2.util.Bpmn2Switch#defaultCase(org.eclipse.emf.ecore.EObject)

-         * 

-         * The default case for this switch is to search the current target runtime plugin for

-         * ExtendedPropertiesAdapters that can handle the given EObject.

-         * 

-         * If the given EObject is actually an EClass, then a dummy EObject is constructed and cached

-         * for use by the adapter. This could cause problems if the adapter is used for anything other

-         * than providing simple static information (labels, etc.)

-         *  

-         * For an example usage of this, see the org.eclipse.bpmn2.modeler.ui.util.PropertyUtil#getLabel(Object)

-         * call in the List Composite, to fetch section titles and table column headers from the adapter:

-         * @see org.eclipse.bpmn2.modeler.ui.property.AbstractListComposite#bindList(EObject,EStructuralFeature)

-         * 

-         * If no adapter is found for the given EObject, a generic one is constructed and returned.

-         */

-        @Override

-		public ExtendedPropertiesAdapter defaultCase(EObject object) {

-        	ExtendedPropertiesAdapter adapter = null;

-        	if (object instanceof EClass) {

-        		// this is an EClass: search the current target runtime for an adapter that

-        		// can handle this thing.

-        	    adapter = getTargetRuntimeAdapter((EClass)object);

-        	    if (adapter==null) {

-        	    	// if none is found, create a dummy EObject and cache it

-   		    		object = ModelUtil.getDummyObject((EClass)object);

-   		    		adapter = doSwitch(object);

-        	    }

-        	}

-        	else

-        		adapter = getTargetRuntimeAdapter(object);

-        	

-        	if (adapter==null) {

-	        	adapter = new ExtendedPropertiesAdapter(adapterFactory,object);

-	        	adapter.setObjectDescriptor(new ObjectDescriptor(adapterFactory, object) {

-					@Override

-					public String getLabel(Object context) {

-						EObject object = this.object;

-						if (context instanceof EObject)

-							object = (EObject)context;

-						if (ModelUtil.isStringWrapper(object)) {

-							return "Item Type";

-						}

-						return super.getLabel(context);

-					}

-	

-					@Override

-					public String getDisplayName(Object context) {

-						EObject object = this.object;

-						if (context instanceof EObject)

-							object = (EObject)context;

-						if (ModelUtil.isStringWrapper(object)) {

-							return ModelUtil.getStringWrapperValue(object);

-						}

-						return super.getDisplayName(context);

-					}

-	        	});

-        	}

-        	return adapter;

-		}

-

-        private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EClass eclass) {

-            PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(eclass.getInstanceClass());

-            if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())

-            	ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(eclass.getInstanceClass());

-            if (ped!=null)

-                return ped.getAdapter(adapterFactory,eclass);

-            return null;

-        }

-

-        private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) {

-			PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(object.getClass());

-            if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())

-                ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass());

-			if (ped!=null)

-				return ped.getAdapter(adapterFactory,object);

-			return null;

-        }

-        

-		@Override

-        public ExtendedPropertiesAdapter caseScriptTask(ScriptTask object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new ScriptTaskPropertiesAdapter(adapterFactory,object);

-        }

-

-        @Override

-        public ExtendedPropertiesAdapter caseCallActivity(CallActivity object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CallActivityPropertiesAdapter(adapterFactory,object);

-        }

-

-		@Override

-		public ExtendedPropertiesAdapter caseTask(Task object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new TaskPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseActivity(Activity object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ActivityPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseSequenceFlow(SequenceFlow object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new SequenceFlowPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseFormalExpression(FormalExpression object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-	    	return new FormalExpressionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseItemDefinition(ItemDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ItemDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseItemAwareElement(ItemAwareElement object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ItemAwareElementPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseResourceAssignmentExpression(ResourceAssignmentExpression object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ResourceAssignmentExpressionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseResourceRole(ResourceRole object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ResourceRolePropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseDataAssociation(DataAssociation object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new DataAssociationPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseError(Error object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ErrorPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseResourceParameterBinding(ResourceParameterBinding object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ResourceParameterBindingPropertiesAdapter(adapterFactory,object);

-		}

-		

-		@Override

-		public ExtendedPropertiesAdapter caseMessageFlow(MessageFlow object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new MessageFlowPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseMessage(Message object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new MessagePropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseInterface(Interface object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new InterfacePropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseOperation(Operation object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new OperationPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseReceiveTask(ReceiveTask object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ReceiveTaskPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseSendTask(SendTask object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new SendTaskPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseCorrelationPropertyRetrievalExpression(CorrelationPropertyRetrievalExpression object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CorrelationPropertyRetrievalExpressionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseProperty(Property object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new PropertyPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseMultiInstanceLoopCharacteristics(MultiInstanceLoopCharacteristics object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new MultiInstanceLoopCharacteristicsPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseFlowElement(FlowElement object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new FlowElementPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseDataInput(DataInput object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new DataInputPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseDataOutput(DataOutput object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new DataOutputPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseServiceTask(ServiceTask object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new ServiceTaskPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseCompensateEventDefinition(CompensateEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new CompensateEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseRootElement(RootElement object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new RootElementPropertiesAdapter(adapterFactory,object);

-		}

-

-

-		// TODO: add remaining BPMN2 elements

-

-		@Override

-		public ExtendedPropertiesAdapter caseDataObjectReference(DataObjectReference object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new DataObjectReferencePropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseEscalation(Escalation object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new EscalationPropertiesAdapter(adapterFactory,object);

-		}

-

-        @Override

-        public ExtendedPropertiesAdapter caseCallChoreography(CallChoreography object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CallChoreographyPropertiesAdapter(adapterFactory,object);

-        }

-

-        @Override

-        public ExtendedPropertiesAdapter caseCallConversation(CallConversation object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CallConversationPropertiesAdapter(adapterFactory,object);

-        }

-

-        @Override

-        public ExtendedPropertiesAdapter caseCorrelationKey(CorrelationKey object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CorrelationKeyPropertiesAdapter(adapterFactory,object);

-        }

-

-        @Override

-        public ExtendedPropertiesAdapter caseCorrelationPropertyBinding(CorrelationPropertyBinding object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new CorrelationPropertyBindingPropertiesAdapter(adapterFactory,object);

-        }

-

-        @Override

-        public ExtendedPropertiesAdapter caseParticipant(Participant object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ParticipantPropertiesAdapter(adapterFactory,object);

-        }

-

-		@Override

-		public ExtendedPropertiesAdapter caseSignal(Signal object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new SignalPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseImport(Import object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ImportPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseProcess(Process object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ProcessPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseEventDefinition(EventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-			return new EventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseMessageEventDefinition(MessageEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new MessageEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-///		

-

-		@Override

-		public ExtendedPropertiesAdapter caseSignalEventDefinition(SignalEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new SignalEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseEscalationEventDefinition(EscalationEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new EscalationEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseErrorEventDefinition(ErrorEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new ErrorEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-		@Override

-		public ExtendedPropertiesAdapter caseLinkEventDefinition(LinkEventDefinition object) {

-			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);

-			if (adapter!=null)

-				return adapter;

-        	return new LinkEventDefinitionPropertiesAdapter(adapterFactory,object);

-		}

-

-    };

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ *  All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Bob Brodt
+ ******************************************************************************/
+
+package org.eclipse.bpmn2.modeler.ui.adapters;
+
+import java.util.Hashtable;
+
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.Error;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.FlowElement;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.Process;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.modeler.core.adapters.AdapterRegistry;
+import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;
+import org.eclipse.bpmn2.modeler.core.runtime.PropertyExtensionDescriptor;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ActivityPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallActivityPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallChoreographyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallConversationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CompensateEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationKeyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyBindingPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyRetrievalExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataAssociationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataInputPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataObjectReferencePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataOutputPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.FlowElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.FormalExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ImportPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.InterfacePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemAwareElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.LinkEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageFlowPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessagePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MultiInstanceLoopCharacteristicsPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.OperationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ParticipantPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ProcessPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.PropertyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ReceiveTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceAssignmentExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceParameterBindingPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceRolePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.RootElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ScriptTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SendTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SequenceFlowPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ServiceTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.TaskPropertiesAdapter;
+import org.eclipse.bpmn2.provider.Bpmn2ItemProviderAdapterFactory;
+import org.eclipse.bpmn2.util.Bpmn2Switch;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ * This class adds a name-value mapDiagramToViewer to the Bpmn2ItemProviderAdapterFactory.
+ * This allows for additional customization of the UI.
+ */
+public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdapterFactory {
+
+	public Bpmn2EditorItemProviderAdapterFactory() {
+		super();
+		supportedTypes.add(ExtendedPropertiesAdapter.class);
+	}
+
+	@Override
+	public Adapter adaptNew(Notifier object, Object type) {
+		if (type == ExtendedPropertiesAdapter.class && object instanceof EObject) {
+		    Adapter adapter = bpmn2ModelSwitch.doSwitch((EObject) object);
+		    if (adapter!=null && !(object instanceof EClass)) {
+				((EObject)object).eAdapters().add(adapter);
+		    }
+			return adapter;
+		}
+		return super.adaptNew(object, type);
+	}
+
+	@Override
+	protected void associate(Adapter adapter, Notifier target) {
+		if (adapter != null) {
+			if (!target.eAdapters().contains(adapter))
+				target.eAdapters().add(adapter);
+		}
+	}
+
+    protected Bpmn2Switch<ExtendedPropertiesAdapter> bpmn2ModelSwitch = new Bpmn2ExtendedPropertiesSwitch(this);
+    
+    public class Bpmn2ExtendedPropertiesSwitch extends Bpmn2Switch<ExtendedPropertiesAdapter> {
+
+    	private AdapterFactory adapterFactory;
+        
+    	public Bpmn2ExtendedPropertiesSwitch(AdapterFactory adapterFactory) {
+    		super();
+    		this.adapterFactory = adapterFactory;
+    		// This adapter can handle the <propertyExtension>s from foreign models also!
+    		for (TargetRuntime rt : TargetRuntime.getAllRuntimes()){
+	    		for (PropertyExtensionDescriptor ped : rt.getPropertyExtensions()) {
+	    			AdapterRegistry.INSTANCE.registerFactory(ped.getInstanceClass(), adapterFactory);
+	    		}
+    		}
+    	}
+    	
+        /* (non-Javadoc)
+         * @see org.eclipse.bpmn2.util.Bpmn2Switch#defaultCase(org.eclipse.emf.ecore.EObject)
+         * 
+         * The default case for this switch is to search the current target runtime plugin for
+         * ExtendedPropertiesAdapters that can handle the given EObject.
+         * 
+         * If the given EObject is actually an EClass, then a dummy EObject is constructed and cached
+         * for use by the adapter. This could cause problems if the adapter is used for anything other
+         * than providing simple static information (labels, etc.)
+         *  
+         * For an example usage of this, see the org.eclipse.bpmn2.modeler.ui.util.PropertyUtil#getLabel(Object)
+         * call in the List Composite, to fetch section titles and table column headers from the adapter:
+         * @see org.eclipse.bpmn2.modeler.ui.property.AbstractListComposite#bindList(EObject,EStructuralFeature)
+         * 
+         * If no adapter is found for the given EObject, a generic one is constructed and returned.
+         */
+        @Override
+		public ExtendedPropertiesAdapter defaultCase(EObject object) {
+        	ExtendedPropertiesAdapter adapter = null;
+        	if (object instanceof EClass) {
+        		// this is an EClass: search the current target runtime for an adapter that
+        		// can handle this thing.
+        	    adapter = getTargetRuntimeAdapter((EClass)object);
+        	    if (adapter==null) {
+        	    	// if none is found, create a dummy EObject and cache it
+   		    		object = ModelUtil.getDummyObject((EClass)object);
+   		    		adapter = doSwitch(object);
+        	    }
+        	}
+        	else
+        		adapter = getTargetRuntimeAdapter(object);
+        	
+        	if (adapter==null) {
+	        	adapter = new ExtendedPropertiesAdapter(adapterFactory,object);
+	        	adapter.setObjectDescriptor(new ObjectDescriptor(adapterFactory, object) {
+					@Override
+					public String getLabel(Object context) {
+						EObject object = this.object;
+						if (context instanceof EObject)
+							object = (EObject)context;
+						if (ModelUtil.isStringWrapper(object)) {
+							return "Item Type";
+						}
+						return super.getLabel(context);
+					}
+	
+					@Override
+					public String getDisplayName(Object context) {
+						EObject object = this.object;
+						if (context instanceof EObject)
+							object = (EObject)context;
+						if (ModelUtil.isStringWrapper(object)) {
+							return ModelUtil.getStringWrapperValue(object);
+						}
+						return super.getDisplayName(context);
+					}
+	        	});
+        	}
+        	return adapter;
+		}
+
+        private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EClass eclass) {
+            PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(eclass.getInstanceClass());
+            if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
+            	ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(eclass.getInstanceClass());
+            if (ped!=null)
+                return ped.getAdapter(adapterFactory,eclass);
+            return null;
+        }
+
+        private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) {
+			PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(object.getClass());
+            if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
+                ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass());
+			if (ped!=null)
+				return ped.getAdapter(adapterFactory,object);
+			return null;
+        }
+        
+		@Override
+        public ExtendedPropertiesAdapter caseScriptTask(ScriptTask object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new ScriptTaskPropertiesAdapter(adapterFactory,object);
+        }
+
+        @Override
+        public ExtendedPropertiesAdapter caseCallActivity(CallActivity object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CallActivityPropertiesAdapter(adapterFactory,object);
+        }
+
+		@Override
+		public ExtendedPropertiesAdapter caseTask(Task object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new TaskPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseActivity(Activity object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ActivityPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseSequenceFlow(SequenceFlow object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new SequenceFlowPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseFormalExpression(FormalExpression object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+	    	return new FormalExpressionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseItemDefinition(ItemDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ItemDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseItemAwareElement(ItemAwareElement object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ItemAwareElementPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseResourceAssignmentExpression(ResourceAssignmentExpression object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ResourceAssignmentExpressionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseResourceRole(ResourceRole object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ResourceRolePropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseDataAssociation(DataAssociation object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new DataAssociationPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseError(Error object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ErrorPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseResourceParameterBinding(ResourceParameterBinding object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ResourceParameterBindingPropertiesAdapter(adapterFactory,object);
+		}
+		
+		@Override
+		public ExtendedPropertiesAdapter caseMessageFlow(MessageFlow object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new MessageFlowPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseMessage(Message object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new MessagePropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseInterface(Interface object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new InterfacePropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseOperation(Operation object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new OperationPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseReceiveTask(ReceiveTask object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ReceiveTaskPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseSendTask(SendTask object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new SendTaskPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseCorrelationPropertyRetrievalExpression(CorrelationPropertyRetrievalExpression object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CorrelationPropertyRetrievalExpressionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseProperty(Property object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new PropertyPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseMultiInstanceLoopCharacteristics(MultiInstanceLoopCharacteristics object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new MultiInstanceLoopCharacteristicsPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseFlowElement(FlowElement object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new FlowElementPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseDataInput(DataInput object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new DataInputPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseDataOutput(DataOutput object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new DataOutputPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseServiceTask(ServiceTask object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new ServiceTaskPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseCompensateEventDefinition(CompensateEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new CompensateEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseRootElement(RootElement object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new RootElementPropertiesAdapter(adapterFactory,object);
+		}
+
+
+		// TODO: add remaining BPMN2 elements
+
+		@Override
+		public ExtendedPropertiesAdapter caseDataObjectReference(DataObjectReference object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new DataObjectReferencePropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseEscalation(Escalation object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new EscalationPropertiesAdapter(adapterFactory,object);
+		}
+
+        @Override
+        public ExtendedPropertiesAdapter caseCallChoreography(CallChoreography object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CallChoreographyPropertiesAdapter(adapterFactory,object);
+        }
+
+        @Override
+        public ExtendedPropertiesAdapter caseCallConversation(CallConversation object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CallConversationPropertiesAdapter(adapterFactory,object);
+        }
+
+        @Override
+        public ExtendedPropertiesAdapter caseCorrelationKey(CorrelationKey object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CorrelationKeyPropertiesAdapter(adapterFactory,object);
+        }
+
+        @Override
+        public ExtendedPropertiesAdapter caseCorrelationPropertyBinding(CorrelationPropertyBinding object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new CorrelationPropertyBindingPropertiesAdapter(adapterFactory,object);
+        }
+
+        @Override
+        public ExtendedPropertiesAdapter caseParticipant(Participant object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ParticipantPropertiesAdapter(adapterFactory,object);
+        }
+
+		@Override
+		public ExtendedPropertiesAdapter caseSignal(Signal object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new SignalPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseImport(Import object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ImportPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseProcess(Process object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ProcessPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseEventDefinition(EventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+			return new EventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseMessageEventDefinition(MessageEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new MessageEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+///		
+
+		@Override
+		public ExtendedPropertiesAdapter caseSignalEventDefinition(SignalEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new SignalEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseEscalationEventDefinition(EscalationEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new EscalationEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseErrorEventDefinition(ErrorEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new ErrorEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+		@Override
+		public ExtendedPropertiesAdapter caseLinkEventDefinition(LinkEventDefinition object) {
+			ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+			if (adapter!=null)
+				return adapter;
+        	return new LinkEventDefinitionPropertiesAdapter(adapterFactory,object);
+		}
+
+    };
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
index 5bff89f..0f5970e 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
@@ -23,8 +23,13 @@
 import org.eclipse.bpmn2.ParticipantMultiplicity;
 import org.eclipse.bpmn2.Process;
 import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.di.BpmnDiFactory;
+import org.eclipse.bpmn2.di.BpmnDiPackage;
 import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
 import org.eclipse.bpmn2.modeler.core.adapters.FeatureDescriptor;
+import org.eclipse.bpmn2.modeler.core.adapters.InsertionAdapter;
 import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
 import org.eclipse.emf.common.notify.AdapterFactory;
@@ -55,13 +60,14 @@
 			@Override
 			public Participant createObject(Resource resource, Object context) {
 				Participant participant = super.createObject(resource, context);
-				participant.eSetDeliver(false);
 				
 				Definitions definitions = null;
 				if (resource!=null)
 					definitions = (Definitions) resource.getContents().get(0).eContents().get(0);
-				else
+				else {
 					definitions = ModelUtil.getDefinitions(participant);
+					resource = definitions.eResource();
+				}
 
 		        // create a Process for this Participant
 		        Process process = (Process) ModelUtil.createObject(resource, Bpmn2Package.eINSTANCE.getProcess());
@@ -69,7 +75,6 @@
 		        
 		        // NOTE: this is needed because it fires the InsertionAdapter, which adds the new Process
 		        // to Definitions.rootElements, otherwise the Process would be a dangling object
-		        process.eSetDeliver(false);
 		        process.setName(participant.getName()+" Process");
 
 		        // add the Participant to the first Choreography or Collaboration we find.
@@ -82,10 +87,19 @@
 		                break;
 		            }
 		        }
-		        
-		        process.eSetDeliver(true);
-				participant.eSetDeliver(true);
+				
+		        BPMNDiagram bpmnDiagram = BpmnDiFactory.eINSTANCE.createBPMNDiagram();
+				ModelUtil.setID(bpmnDiagram, resource);
+		        bpmnDiagram.setName(process.getName());
 
+		        definitions.getDiagrams().add(bpmnDiagram);
+		        
+				BPMNPlane plane = BpmnDiFactory.eINSTANCE.createBPMNPlane();
+				ModelUtil.setID(plane, resource);
+				plane.setBpmnElement(process);
+
+				bpmnDiagram.setPlane(plane);
+		        
 				return participant;
 			}
 			
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 95fbe4e..abde762 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -1,679 +1,777 @@
-/******************************************************************************* 

- * Copyright (c) 2011 Red Hat, Inc. 

- *  All rights reserved. 

- * This program is made available under the terms of the 

- * Eclipse Public License v1.0 which accompanies this distribution, 

- * and is available at http://www.eclipse.org/legal/epl-v10.html 

- * 

- * Contributors: 

- * Red Hat, Inc. - initial API and implementation 

- *

- * @author Innar Made

- ******************************************************************************/

-package org.eclipse.bpmn2.modeler.ui.editor;

-

-import java.io.IOException;

-import java.util.ArrayList;

-

-import org.eclipse.bpmn2.BaseElement;

-import org.eclipse.bpmn2.di.BPMNDiagram;

-import org.eclipse.bpmn2.modeler.core.Bpmn2TabbedPropertySheetPage;

-import org.eclipse.bpmn2.modeler.core.ModelHandler;

-import org.eclipse.bpmn2.modeler.core.ModelHandlerLocator;

-import org.eclipse.bpmn2.modeler.core.ProxyURIConverterImplExtension;

-import org.eclipse.bpmn2.modeler.core.di.DIImport;

-import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl;

-import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;

-import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;

-import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;

-import org.eclipse.bpmn2.modeler.core.utils.DiagramEditorAdapter;

-import org.eclipse.bpmn2.modeler.core.utils.ErrorUtils;

-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;

-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;

-import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;

-import org.eclipse.bpmn2.modeler.ui.Activator;

-import org.eclipse.bpmn2.modeler.ui.wizards.BPMN2DiagramCreator;

-import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;

-import org.eclipse.bpmn2.util.Bpmn2ResourceImpl;

-import org.eclipse.core.resources.IFile;

-import org.eclipse.core.resources.IFolder;

-import org.eclipse.core.resources.IProject;

-import org.eclipse.core.resources.IResource;

-import org.eclipse.core.resources.ResourcesPlugin;

-import org.eclipse.core.runtime.CoreException;

-import org.eclipse.core.runtime.IPath;

-import org.eclipse.core.runtime.IStatus;

-import org.eclipse.core.runtime.Path;

-import org.eclipse.core.runtime.Status;

-import org.eclipse.emf.common.command.BasicCommandStack;

-import org.eclipse.emf.common.util.BasicDiagnostic;

-import org.eclipse.emf.common.util.TreeIterator;

-import org.eclipse.emf.common.util.URI;

-import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecore.resource.Resource;

-import org.eclipse.emf.ecore.resource.ResourceSet;

-import org.eclipse.emf.transaction.RecordingCommand;

-import org.eclipse.emf.transaction.TransactionalEditingDomain.Lifecycle;

-import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;

-import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;

-import org.eclipse.graphiti.features.IFeatureProvider;

-import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;

-import org.eclipse.graphiti.mm.pictograms.Diagram;

-import org.eclipse.graphiti.mm.pictograms.PictogramElement;

-import org.eclipse.graphiti.services.Graphiti;

-import org.eclipse.graphiti.services.IPeService;

-import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;

-import org.eclipse.graphiti.ui.editor.DiagramEditor;

-import org.eclipse.graphiti.ui.editor.DiagramEditorInput;

-import org.eclipse.graphiti.ui.internal.editor.GFPaletteRoot;

-import org.eclipse.jface.util.IPropertyChangeListener;

-import org.eclipse.jface.util.PropertyChangeEvent;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.swt.widgets.Display;

-import org.eclipse.ui.IEditorInput;

-import org.eclipse.ui.IEditorPart;

-import org.eclipse.ui.IEditorReference;

-import org.eclipse.ui.IEditorSite;

-import org.eclipse.ui.IFileEditorInput;

-import org.eclipse.ui.IPartListener2;

-import org.eclipse.ui.IWorkbench;

-import org.eclipse.ui.IWorkbenchListener;

-import org.eclipse.ui.IWorkbenchPage;

-import org.eclipse.ui.IWorkbenchPart;

-import org.eclipse.ui.IWorkbenchPartReference;

-import org.eclipse.ui.PartInitException;

-import org.eclipse.ui.PlatformUI;

-import org.eclipse.ui.dialogs.SaveAsDialog;

-import org.eclipse.ui.ide.ResourceUtil;

-import org.eclipse.ui.part.FileEditorInput;

-import org.eclipse.ui.views.properties.IPropertySheetPage;

-import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;

-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;

-

-/**

- * 

- */

-@SuppressWarnings("restriction")

-public class BPMN2Editor extends DiagramEditor implements IPropertyChangeListener {

-

-	public static final String EDITOR_ID = "org.eclipse.bpmn2.modeler.ui.bpmn2editor";

-	public static final String CONTRIBUTOR_ID = "org.eclipse.bpmn2.modeler.ui.PropertyContributor";

-

-	private ModelHandler modelHandler;

-	private URI modelUri;

-	private URI diagramUri;

-

-	private IFile modelFile;

-	private IFile diagramFile;

-	

-	private IWorkbenchListener workbenchListener;

-	private IPartListener2 selectionListener;

-	private boolean workbenchShutdown = false;

-	private static BPMN2Editor activeEditor;

-	private static ITabDescriptorProvider tabDescriptorProvider;

-

-	private BPMN2EditingDomainListener editingDomainListener;

-	

-	private Bpmn2Preferences preferences;

-	private TargetRuntime targetRuntime;

-

-	protected DiagramEditorAdapter editorAdapter;

-	

-	public static BPMN2Editor getActiveEditor() {

-		return activeEditor;

-	}

-	

-	private void setActiveEditor(BPMN2Editor editor) {

-		activeEditor = editor;

-		if (activeEditor!=null) {

-			Bpmn2Preferences.setActiveProject(activeEditor.modelFile.getProject());

-			TargetRuntime.setCurrentRuntime( activeEditor.getTargetRuntime() );

-		}

-	}

-

-	protected DiagramEditorAdapter getEditorAdapter() {

-		return editorAdapter;

-	}

-

-	@Override

-	public void init(IEditorSite site, IEditorInput input) throws PartInitException {

-		try {

-			Bpmn2DiagramType diagramType = Bpmn2DiagramType.NONE;

-			String targetNamespace = null;

-			if (input instanceof IFileEditorInput) {

-				modelFile = ((IFileEditorInput) input).getFile();

-				loadPreferences(modelFile.getProject());

-

-				input = createNewDiagramEditorInput(diagramType, targetNamespace);

-

-			} else if (input instanceof DiagramEditorInput) {

-				getModelPathFromInput((DiagramEditorInput) input);

-				loadPreferences(modelFile.getProject());

-				if (input instanceof Bpmn2DiagramEditorInput) {

-					diagramType = ((Bpmn2DiagramEditorInput)input).getInitialDiagramType();

-					targetNamespace = ((Bpmn2DiagramEditorInput)input).getTargetNamespace();

-				}

-				// This was incorrectly constructed input, we ditch the old one and make a new and clean one instead

-				// This code path comes in from the New File Wizard

-				input = createNewDiagramEditorInput(diagramType, targetNamespace);

-			}

-		} catch (CoreException e) {

-			Activator.showErrorWithLogging(e);

-		}

-		

-		// add a listener so we get notified if the workbench is shutting down.

-		// in this case we don't want to delete the temp file!

-		addWorkbenchListener();

-		setActiveEditor(this);

-		

-		// allow the runtime extension to construct custom tasks and whatever else it needs

-		// custom tasks should be added to the current target runtime's custom tasks list

-		// where they will be picked up by the toolpalette refresh.

-		getTargetRuntime().getRuntimeExtension().initialize();

-		

-		super.init(site, input);

-		addSelectionListener();

-	}

-	

-	@Override

-	protected DefaultUpdateBehavior createUpdateBehavior() {

-		return new BPMN2EditorUpdateBehavior(this);

-	}

-

-	public Bpmn2Preferences getPreferences() {

-		if (preferences==null) {

-			assert(modelFile!=null);

-			IProject project = modelFile.getProject();

-			loadPreferences(project);

-		}

-		return preferences;

-	}

-	

-	private void loadPreferences(IProject project) {

-		preferences = Bpmn2Preferences.getInstance(project);

-		preferences.load();

-		preferences.getGlobalPreferences().addPropertyChangeListener(this);

-	}

-

-	/**

-	 * ID for tabbed property sheets.

-	 * 

-	 * @return the contributor id

-	 */

-	@Override

-	public String getContributorId() {

-		return CONTRIBUTOR_ID;

-	}

-

-	public TargetRuntime getTargetRuntime(ITabDescriptorProvider tdp) {

-		tabDescriptorProvider = tdp;

-		return getTargetRuntime();

-	}

-	

-	public TargetRuntime getTargetRuntime() {

-		if (targetRuntime==null)

-			targetRuntime = getPreferences().getRuntime(modelFile);

-		return targetRuntime;

-	}

-	

-	private void getModelPathFromInput(DiagramEditorInput input) {

-		URI uri = input.getUri();

-		String uriString = uri.trimFragment().toPlatformString(true);

-		modelFile = BPMN2DiagramCreator.getModelFile(new Path(uriString));

-	}

-

-	/**

-	 * Beware, creates a new input and changes this editor!

-	 */

-	private Bpmn2DiagramEditorInput createNewDiagramEditorInput(Bpmn2DiagramType diagramType, String targetNamespace)

-			throws CoreException {

-		IPath fullPath = modelFile.getFullPath();

-		modelUri = URI.createPlatformResourceURI(fullPath.toString(), true);

-

-		IFolder folder = BPMN2DiagramCreator.getTempFolder(fullPath);

-		diagramFile = BPMN2DiagramCreator.getTempFile(fullPath,folder);

-

-		// Create new temporary diagram file

-		BPMN2DiagramCreator creator = new BPMN2DiagramCreator();

-		creator.setDiagramFile(diagramFile);

-

-		Bpmn2DiagramEditorInput input = creator.createDiagram(diagramType,targetNamespace,this);

-		diagramUri = creator.getUri();

-

-		return input;

-	}

-

-	private void saveModelFile() {

-		modelHandler.save();

-		((BasicCommandStack) getEditingDomain().getCommandStack()).saveIsDone();

-		updateDirtyState();

-	}

-

-	@Override

-	protected void setInput(IEditorInput input) {

-		super.setInput(input);

-		

-		// Hook a transaction exception handler so we can get diagnostics about EMF validation errors.

-		getEditingDomainListener();

-		

-		BasicCommandStack basicCommandStack = (BasicCommandStack) getEditingDomain().getCommandStack();

-

-		if (input instanceof DiagramEditorInput) {

-			ResourceSet resourceSet = getEditingDomain().getResourceSet();

-			getTargetRuntime().setResourceSet(resourceSet);

-			

-			Bpmn2ResourceImpl bpmnResource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri,

-					Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);

-

-			resourceSet.setURIConverter(new ProxyURIConverterImplExtension());

-			resourceSet.eAdapters().add(editorAdapter = new DiagramEditorAdapter(this));

-

-			modelHandler = ModelHandlerLocator.createModelHandler(modelUri, bpmnResource);

-			ModelHandlerLocator.put(diagramUri, modelHandler);

-

-			try {

-				if (modelFile.exists()) {

-					bpmnResource.load(null);

-				} else {

-					saveModelFile();

-				}

-			} catch (IOException e) {

-				Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);

-				ErrorUtils.showErrorWithLogging(status);

-			}

-			basicCommandStack.execute(new RecordingCommand(getEditingDomain()) {

-

-				@Override

-				protected void doExecute() {

-					importDiagram();

-				}

-			});

-		}

-		basicCommandStack.saveIsDone();

-		basicCommandStack.flush();

-	}

-	

-	private void importDiagram() {

-		// make sure this guy is active, otherwise it's not selectable

-		Diagram diagram = getDiagramTypeProvider().getDiagram();

-		IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();

-		diagram.setActive(true);

-		Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput) getEditorInput();

-		Bpmn2DiagramType diagramType = input.getInitialDiagramType();

-		String targetNamespace = input.getTargetNamespace();

-

-		if (diagramType != Bpmn2DiagramType.NONE) {

-			BPMNDiagram bpmnDiagram = modelHandler.createDiagramType(diagramType, targetNamespace);

-			featureProvider.link(diagram, bpmnDiagram);

-			saveModelFile();

-		}

-		

-		DIImport di = new DIImport();

-		di.setDiagram(diagram);

-		di.setDomain(getEditingDomain());

-		di.setModelHandler(modelHandler);

-		di.setFeatureProvider(featureProvider);

-		di.generateFromDI();

-

-		// this needs to happen AFTER the diagram has been imported because we need

-		// to be able to determine the diagram type from the file's contents in order

-		// to build the right tool palette for the target runtime and model enablements.

-		GFPaletteRoot pr = (GFPaletteRoot)getPaletteRoot();

-		pr.updatePaletteEntries();

-	}

-

-	@Override

-	protected PictogramElement[] getPictogramElementsForSelection() {

-		// filter out invisible elements when setting selection

-		PictogramElement[] pictogramElements = super.getPictogramElementsForSelection();

-		if (pictogramElements==null)

-			return null;

-		ArrayList<PictogramElement> visibleList = new ArrayList<PictogramElement>();

-		for (PictogramElement pe : pictogramElements) {

-			if (pe.isVisible())

-				visibleList.add(pe);

-		}

-		return visibleList.toArray(new PictogramElement[visibleList.size()]);

-	}

-	

-	private void addWorkbenchListener() {

-		if (workbenchListener==null) {

-			workbenchListener = new IWorkbenchListener() {

-				@Override

-				public boolean preShutdown(IWorkbench workbench, boolean forced) {

-					workbenchShutdown = true;

-					return true;

-				}

-

-				@Override

-				public void postShutdown(IWorkbench workbench) {

-				}

-

-			};

-			PlatformUI.getWorkbench().addWorkbenchListener(workbenchListener);

-		}

-	}

-	

-	private void removeWorkbenchListener()

-	{

-		if (workbenchListener!=null) {

-			PlatformUI.getWorkbench().removeWorkbenchListener(workbenchListener);

-			workbenchListener = null;

-		}

-	}

-	

-	private void addSelectionListener() {

-		if (selectionListener == null) {

-			IWorkbenchPage page = getSite().getPage();

-			selectionListener = new IPartListener2() {

-				public void partActivated(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partBroughtToTop(IWorkbenchPartReference partRef) {

-					IWorkbenchPart part = partRef.getPart(false);

-					if (part instanceof BPMN2MultiPageEditor) {

-						BPMN2MultiPageEditor mpe = (BPMN2MultiPageEditor)part;

-						setActiveEditor(mpe.designEditor);

-					}

-				}

-

-				@Override

-				public void partClosed(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partDeactivated(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partOpened(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partHidden(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partVisible(IWorkbenchPartReference partRef) {

-				}

-

-				@Override

-				public void partInputChanged(IWorkbenchPartReference partRef) {

-				}

-			};

-			page.addPartListener(selectionListener);

-		}

-	}

-

-	private void removeSelectionListener()

-	{

-		if (selectionListener!=null) {

-			getSite().getPage().removePartListener(selectionListener);

-			selectionListener = null;

-		}

-	}

-

-	public void setEditorTitle(final String title) {

-		Display display = getSite().getShell().getDisplay();

-		display.asyncExec(new Runnable() {

-			public void run() {

-				setPartName(title);

-			}

-		});

-	}

-

-	public BPMN2EditingDomainListener getEditingDomainListener() {

-		if (editingDomainListener==null) {

-			TransactionalEditingDomainImpl editingDomain = (TransactionalEditingDomainImpl)getEditingDomain();

-			if (editingDomain==null) {

-				return null;

-			}

-			editingDomainListener = new BPMN2EditingDomainListener(this);

-

-			Lifecycle domainLifeCycle = (Lifecycle) editingDomain.getAdapter(Lifecycle.class);

-			domainLifeCycle.addTransactionalEditingDomainListener(editingDomainListener);

-		}

-		return editingDomainListener;

-	}

-	

-	public BasicDiagnostic getDiagnostics() {

-		return getEditingDomainListener().getDiagnostics();

-	}

-	

-	@Override

-	public Object getAdapter(Class required) {

-		if (required==ITabDescriptorProvider.class) {

-			if (tabDescriptorProvider==null) {

-				IWorkbenchPage page = getEditorSite().getPage();

-				String viewID = "org.eclipse.ui.views.PropertySheet";

-				try {

-					page.showView(viewID, null, IWorkbenchPage.VIEW_CREATE);

-					page.showView(viewID, null,  IWorkbenchPage.VIEW_ACTIVATE);

-				}

-				catch (Exception e) {}

-			}

-			return tabDescriptorProvider;

-		}

-		if (required==TargetRuntime.class)

-			return getTargetRuntime();

-		if (required==Bpmn2Preferences.class)

-			return getPreferences();

-		if (required == IPropertySheetPage.class) {

-			return new Bpmn2TabbedPropertySheetPage(this);

-		}

-		return super.getAdapter(required);

-	}

-

-	@Override

-	public void dispose() {

-		// clear ID mapping tables if no more instances of editor are active

-		int instances = 0;

-		IWorkbenchPage[] pages = getEditorSite().getWorkbenchWindow().getPages();

-		for (IWorkbenchPage p : pages) {

-			IEditorReference[] refs = p.getEditorReferences();

-			instances += refs.length;

-		}

-		ModelUtil.clearIDs(modelHandler.getResource(), instances==0);

-		getPreferences().getGlobalPreferences().removePropertyChangeListener(this);

-		

-		getResourceSet().eAdapters().remove(getEditorAdapter());

-		removeSelectionListener();

-		if (instances==0)

-			setActiveEditor(null);

-		

-		super.dispose();

-		ModelHandlerLocator.remove(modelUri);

-		// get rid of temp files and folders, but NOT if the workbench is being shut down.

-		// when the workbench is restarted, we need to have those temp files around!

-		if (!workbenchShutdown)

-			BPMN2DiagramCreator.dispose(diagramFile);

-		removeWorkbenchListener();

-		getPreferences().dispose();

-	}

-

-	public IFile getModelFile() {

-		return modelFile;

-	}

-

-	public IFile getDiagramFile() {

-		return diagramFile;

-	}

-	

-	public ModelHandler getModelHandler() {

-		return modelHandler;

-	}

-

-	@Override

-	public boolean isSaveAsAllowed() {

-		return true;

-	}

-	

-	@Override

-	public void doSaveAs() {

-		IFile oldFile = getModelFile();

-		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());

-		saveAsDialog.setOriginalFile(oldFile);

-		saveAsDialog.create();

-		if (saveAsDialog.open() == SaveAsDialog.CANCEL) {

-			return;

-		}

-		IPath newFilePath = saveAsDialog.getResult();

-		if (newFilePath == null){

-			return;

-		}

-		

-        IFile newFile = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath);

-        IWorkbenchPage page = getSite().getPage();

-        

-        try {

-        	// Save the current(old) file

-        	doSave(null);

-        	// if new file exists, close its editor (if open) and delete the existing file

-            if (newFile.exists()) {

-    			IEditorPart editorPart = ResourceUtil.findEditor(page, newFile);

-    			if (editorPart!=null)

-	    			page.closeEditor(editorPart, false);

-        		newFile.delete(true, null);

-            }

-            // make a copy

-			oldFile.copy(newFilePath, true, null);

-		} catch (CoreException e) {

-			showErrorDialogWithLogging(e);

-			return;

-		}

-

-        // open new editor

-    	try {

-			page.openEditor(new FileEditorInput(newFile), BPMN2Editor.EDITOR_ID);

-		} catch (PartInitException e1) {

-			showErrorDialogWithLogging(e1);

-			return;

-		}

-    	

-    	// and close the old editor

-		IEditorPart editorPart = ResourceUtil.findEditor(page, oldFile);

-		if (editorPart!=null)

-			page.closeEditor(editorPart, false);

-		

-    	try {

-			newFile.refreshLocal(IResource.DEPTH_ZERO,null);

-		} catch (CoreException e) {

-			showErrorDialogWithLogging(e);

-			return;

-		}

-	}

-

-	public void closeEditor() {

-		Display display = getSite().getShell().getDisplay();

-		display.asyncExec(new Runnable() {

-			public void run() {

-				boolean closed = getSite().getPage().closeEditor(BPMN2Editor.this, false);

-				if (!closed){

-					// If close editor fails, try again with explicit editorpart 

-					// of the old file

-					IFile oldFile = ResourcesPlugin.getWorkspace().getRoot().getFile(modelFile.getFullPath());

-					IEditorPart editorPart = ResourceUtil.findEditor(getSite().getPage(), oldFile);

-					closed = getSite().getPage().closeEditor(editorPart, false);

-				}

-			}

-		});

-	}

-

-	// Show error dialog and log the error

-	private void showErrorDialogWithLogging(Exception e) {

-		Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);

-		ErrorUtils.showErrorWithLogging(status);

-	}

-

-	////////////////////////////////////////////////////////////////////////////////

-	// WorkspaceSynchronizer handlers called from delegate

-	////////////////////////////////////////////////////////////////////////////////

-	

-	public boolean handleResourceChanged(Resource resource) {

-		return true;

-	}

-

-	public boolean handleResourceDeleted(Resource resource) {

-		closeEditor();

-		return true;

-	}

-

-	public boolean handleResourceMoved(Resource resource, URI newURI) {

-		URI oldURI = resource.getURI();

-		resource.setURI(newURI);

-		

-		IFile file = WorkspaceSynchronizer.getUnderlyingFile(resource);

-		if (modelUri.equals(oldURI)) {

-			ModelHandlerLocator.remove(modelUri);

-			modelUri = newURI;

-			modelFile = file;

-			if (preferences!=null) {

-				preferences.getGlobalPreferences().removePropertyChangeListener(this);

-				preferences.dispose();

-				preferences = null;

-			}

-			targetRuntime = null;

-			modelHandler = ModelHandlerLocator.createModelHandler(modelUri, (Bpmn2ResourceImpl)resource);

-			ModelHandlerLocator.put(diagramUri, modelHandler);

-

-			setEditorTitle(file.getFullPath().removeFileExtension().lastSegment());

-		}

-		else if (diagramUri.equals(oldURI)) {

-			ModelHandlerLocator.remove(diagramUri);

-			diagramUri = newURI;

-			ModelHandlerLocator.put(diagramUri, modelHandler);

-			diagramFile = file;

-		}

-

-		return true;

-	}

-	

-	////////////////////////////////////////////////////////////////////////////////

-	// Other handlers

-	////////////////////////////////////////////////////////////////////////////////

-

-	@Override

-	public void selectionChanged(IWorkbenchPart part, ISelection selection) {

-		// Graphiti understands multipage editors

-		super.selectionChanged(part,selection); // Graphiti's DiagramEditorInternal

-		// but apparently GEF doesn't

-		updateActions(getSelectionActions()); // usually done in GEF's GraphicalEditor

-	}

-

-	/* (non-Javadoc)

-	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)

-	 */

-	@Override

-	public void propertyChange(PropertyChangeEvent event) {

-		if (event.getProperty().endsWith(Bpmn2Preferences.PREF_SHAPE_STYLE)) {

-			getEditingDomain().getCommandStack().execute(new RecordingCommand(getEditingDomain()) {

-				@Override

-				protected void doExecute() {

-					IPeService peService = Graphiti.getPeService();

-					TreeIterator<EObject> iter = getDiagramTypeProvider().getDiagram().eAllContents();

-					while (iter.hasNext()) {

-						EObject o = iter.next();

-						if (o instanceof PictogramElement) {

-							PictogramElement pe = (PictogramElement)o;

-							BaseElement be = BusinessObjectUtil.getFirstElementOfType(pe, BaseElement.class);

-							if (be!=null) {

-								TreeIterator<EObject> childIter = pe.eAllContents();

-								while (childIter.hasNext()) {

-									o = childIter.next();

-									if (o instanceof GraphicsAlgorithm) {

-										GraphicsAlgorithm ga = (GraphicsAlgorithm)o;

-										if (peService.getPropertyValue(ga, Bpmn2Preferences.PREF_SHAPE_STYLE)!=null) {

-											StyleUtil.applyStyle(ga, be);

-										}

-									}

-			

-								}

-							}

-						}

-					}

-				}

-			});

-		}

-	}

-}

+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ *  All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ *
+ * @author Innar Made
+ ******************************************************************************/
+package org.eclipse.bpmn2.modeler.ui.editor;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.modeler.core.Bpmn2TabbedPropertySheetPage;
+import org.eclipse.bpmn2.modeler.core.ModelHandler;
+import org.eclipse.bpmn2.modeler.core.ModelHandlerLocator;
+import org.eclipse.bpmn2.modeler.core.ProxyURIConverterImplExtension;
+import org.eclipse.bpmn2.modeler.core.di.DIImport;
+import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl;
+import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
+import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
+import org.eclipse.bpmn2.modeler.core.utils.DiagramEditorAdapter;
+import org.eclipse.bpmn2.modeler.core.utils.ErrorUtils;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
+import org.eclipse.bpmn2.modeler.ui.Activator;
+import org.eclipse.bpmn2.modeler.ui.wizards.BPMN2DiagramCreator;
+import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
+import org.eclipse.bpmn2.util.Bpmn2ResourceImpl;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.transaction.NotificationFilter;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.ResourceSetChangeEvent;
+import org.eclipse.emf.transaction.ResourceSetListener;
+import org.eclipse.emf.transaction.RollbackException;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.TransactionalEditingDomain.Lifecycle;
+import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.ui.editor.DefaultMarkerBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultPaletteBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultPersistencyBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultRefreshBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
+import org.eclipse.graphiti.ui.internal.editor.GFPaletteRoot;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchListener;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.ResourceUtil;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+/**
+ * 
+ */
+@SuppressWarnings("restriction")
+public class BPMN2Editor extends DiagramEditor implements IPropertyChangeListener {
+
+	public static final String EDITOR_ID = "org.eclipse.bpmn2.modeler.ui.bpmn2editor";
+	public static final String CONTRIBUTOR_ID = "org.eclipse.bpmn2.modeler.ui.PropertyContributor";
+
+	private ModelHandler modelHandler;
+	private URI modelUri;
+	private URI diagramUri;
+
+	private IFile modelFile;
+	private IFile diagramFile;
+	private BPMNDiagram bpmnDiagram;
+	
+	private IWorkbenchListener workbenchListener;
+	private IPartListener2 selectionListener;
+	private boolean workbenchShutdown = false;
+	private static BPMN2Editor activeEditor;
+	private static ITabDescriptorProvider tabDescriptorProvider;
+
+	private BPMN2EditingDomainListener editingDomainListener;
+	
+	private Bpmn2Preferences preferences;
+	private TargetRuntime targetRuntime;
+	private Hashtable<BPMNDiagram, GraphicalViewer> mapDiagramToViewer = new Hashtable<BPMNDiagram, GraphicalViewer>();
+
+	protected DiagramEditorAdapter editorAdapter;
+	
+	public static BPMN2Editor getActiveEditor() {
+		return activeEditor;
+	}
+	
+	private void setActiveEditor(BPMN2Editor editor) {
+		activeEditor = editor;
+		if (activeEditor!=null) {
+			Bpmn2Preferences.setActiveProject(activeEditor.modelFile.getProject());
+			TargetRuntime.setCurrentRuntime( activeEditor.getTargetRuntime() );
+		}
+	}
+
+	protected DiagramEditorAdapter getEditorAdapter() {
+		return editorAdapter;
+	}
+
+	@Override
+	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+		try {
+			Bpmn2DiagramType diagramType = Bpmn2DiagramType.NONE;
+			String targetNamespace = null;
+			bpmnDiagram = null;
+
+			if (input instanceof IFileEditorInput) {
+				modelFile = ((IFileEditorInput) input).getFile();
+				loadPreferences(modelFile.getProject());
+
+				input = createNewDiagramEditorInput(diagramType, targetNamespace);
+
+			} else if (input instanceof DiagramEditorInput) {
+				getModelPathFromInput((DiagramEditorInput) input);
+				loadPreferences(modelFile.getProject());
+				if (input instanceof Bpmn2DiagramEditorInput) {
+					diagramType = ((Bpmn2DiagramEditorInput)input).getInitialDiagramType();
+					targetNamespace = ((Bpmn2DiagramEditorInput)input).getTargetNamespace();
+					bpmnDiagram = ((Bpmn2DiagramEditorInput)input).getBpmnDiagram();
+				}
+				if (bpmnDiagram==null) {
+					// This was incorrectly constructed input, we ditch the old one and make a new and clean one instead
+					// This code path comes in from the New File Wizard
+					input = createNewDiagramEditorInput(diagramType, targetNamespace);
+				}
+				else {
+					BPMNDiagram d = bpmnDiagram;
+					bpmnDiagram = null;
+					setBpmnDiagram(d);
+					return;
+				}
+			}
+		} catch (CoreException e) {
+			Activator.showErrorWithLogging(e);
+		}
+		
+		// add a listener so we get notified if the workbench is shutting down.
+		// in this case we don't want to delete the temp file!
+		addWorkbenchListener();
+		setActiveEditor(this);
+		
+		// allow the runtime extension to construct custom tasks and whatever else it needs
+		// custom tasks should be added to the current target runtime's custom tasks list
+		// where they will be picked up by the toolpalette refresh.
+		getTargetRuntime().getRuntimeExtension().initialize();
+		
+		super.init(site, input);
+		addSelectionListener();
+	}
+	
+	@Override
+	protected DefaultUpdateBehavior createUpdateBehavior() {
+		return new BPMN2EditorUpdateBehavior(this);
+	}
+
+	public Bpmn2Preferences getPreferences() {
+		if (preferences==null) {
+			assert(modelFile!=null);
+			IProject project = modelFile.getProject();
+			loadPreferences(project);
+		}
+		return preferences;
+	}
+	
+	private void loadPreferences(IProject project) {
+		preferences = Bpmn2Preferences.getInstance(project);
+		preferences.load();
+		preferences.getGlobalPreferences().addPropertyChangeListener(this);
+	}
+
+	/**
+	 * ID for tabbed property sheets.
+	 * 
+	 * @return the contributor id
+	 */
+	@Override
+	public String getContributorId() {
+		return CONTRIBUTOR_ID;
+	}
+
+	public TargetRuntime getTargetRuntime(ITabDescriptorProvider tdp) {
+		tabDescriptorProvider = tdp;
+		return getTargetRuntime();
+	}
+	
+	public TargetRuntime getTargetRuntime() {
+		if (targetRuntime==null)
+			targetRuntime = getPreferences().getRuntime(modelFile);
+		return targetRuntime;
+	}
+	
+	private void getModelPathFromInput(DiagramEditorInput input) {
+		URI uri = input.getUri();
+		String uriString = uri.trimFragment().toPlatformString(true);
+		modelFile = BPMN2DiagramCreator.getModelFile(new Path(uriString));
+	}
+
+	/**
+	 * Beware, creates a new input and changes this editor!
+	 */
+	private Bpmn2DiagramEditorInput createNewDiagramEditorInput(Bpmn2DiagramType diagramType, String targetNamespace)
+			throws CoreException {
+		IPath fullPath = modelFile.getFullPath();
+		modelUri = URI.createPlatformResourceURI(fullPath.toString(), true);
+
+		IFolder folder = BPMN2DiagramCreator.getTempFolder(fullPath);
+		diagramFile = BPMN2DiagramCreator.getTempFile(fullPath,folder);
+
+		// Create new temporary diagram file
+		BPMN2DiagramCreator creator = new BPMN2DiagramCreator();
+		creator.setDiagramFile(diagramFile);
+
+		Bpmn2DiagramEditorInput input = creator.createDiagram(diagramType,targetNamespace,this);
+		diagramUri = creator.getUri();
+
+		return input;
+	}
+
+	private void saveModelFile() {
+		modelHandler.save();
+		((BasicCommandStack) getEditingDomain().getCommandStack()).saveIsDone();
+		updateDirtyState();
+	}
+
+	@Override
+	protected void setInput(IEditorInput input) {
+		super.setInput(input);
+		
+		// Hook a transaction exception handler so we can get diagnostics about EMF validation errors.
+		getEditingDomainListener();
+		
+		BasicCommandStack basicCommandStack = (BasicCommandStack) getEditingDomain().getCommandStack();
+
+		if (input instanceof DiagramEditorInput) {
+			ResourceSet resourceSet = getEditingDomain().getResourceSet();
+			getTargetRuntime().setResourceSet(resourceSet);
+			
+			Bpmn2ResourceImpl bpmnResource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri,
+					Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);
+
+			resourceSet.setURIConverter(new ProxyURIConverterImplExtension());
+			resourceSet.eAdapters().add(editorAdapter = new DiagramEditorAdapter(this));
+
+			modelHandler = ModelHandlerLocator.createModelHandler(modelUri, bpmnResource);
+			ModelHandlerLocator.put(diagramUri, modelHandler);
+
+			try {
+				if (modelFile.exists()) {
+					bpmnResource.load(null);
+				} else {
+					saveModelFile();
+				}
+			} catch (IOException e) {
+				Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+				ErrorUtils.showErrorWithLogging(status);
+			}
+			basicCommandStack.execute(new RecordingCommand(getEditingDomain()) {
+
+				@Override
+				protected void doExecute() {
+					importDiagram();
+				}
+			});
+		}
+		basicCommandStack.saveIsDone();
+		basicCommandStack.flush();
+	}
+	
+	private void importDiagram() {
+		// make sure this guy is active, otherwise it's not selectable
+		Diagram diagram = getDiagramTypeProvider().getDiagram();
+		IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
+		diagram.setActive(true);
+		Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput) getEditorInput();
+		Bpmn2DiagramType diagramType = input.getInitialDiagramType();
+		String targetNamespace = input.getTargetNamespace();
+
+		if (diagramType != Bpmn2DiagramType.NONE) {
+			bpmnDiagram = modelHandler.createDiagramType(diagramType, targetNamespace);
+			featureProvider.link(diagram, bpmnDiagram);
+			saveModelFile();
+		}
+		
+		DIImport di = new DIImport();
+		di.setDiagram(diagram);
+		di.setDomain(getEditingDomain());
+		di.setModelHandler(modelHandler);
+		di.setFeatureProvider(featureProvider);
+		di.generateFromDI();
+
+		// this needs to happen AFTER the diagram has been imported because we need
+		// to be able to determine the diagram type from the file's contents in order
+		// to build the right tool palette for the target runtime and model enablements.
+		GFPaletteRoot pr = (GFPaletteRoot)getPaletteRoot();
+		pr.updatePaletteEntries();
+	}
+
+	@Override
+	protected PictogramElement[] getPictogramElementsForSelection() {
+		// filter out invisible elements when setting selection
+		PictogramElement[] pictogramElements = super.getPictogramElementsForSelection();
+		if (pictogramElements==null)
+			return null;
+		ArrayList<PictogramElement> visibleList = new ArrayList<PictogramElement>();
+		for (PictogramElement pe : pictogramElements) {
+			if (pe.isVisible())
+				visibleList.add(pe);
+		}
+		return visibleList.toArray(new PictogramElement[visibleList.size()]);
+	}
+	
+	private void addWorkbenchListener() {
+		if (workbenchListener==null) {
+			workbenchListener = new IWorkbenchListener() {
+				@Override
+				public boolean preShutdown(IWorkbench workbench, boolean forced) {
+					workbenchShutdown = true;
+					return true;
+				}
+
+				@Override
+				public void postShutdown(IWorkbench workbench) {
+				}
+
+			};
+			PlatformUI.getWorkbench().addWorkbenchListener(workbenchListener);
+		}
+	}
+	
+	private void removeWorkbenchListener()
+	{
+		if (workbenchListener!=null) {
+			PlatformUI.getWorkbench().removeWorkbenchListener(workbenchListener);
+			workbenchListener = null;
+		}
+	}
+	
+	private void addSelectionListener() {
+		if (selectionListener == null) {
+			IWorkbenchPage page = getSite().getPage();
+			selectionListener = new IPartListener2() {
+				public void partActivated(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partBroughtToTop(IWorkbenchPartReference partRef) {
+					IWorkbenchPart part = partRef.getPart(false);
+					if (part instanceof BPMN2MultiPageEditor) {
+						BPMN2MultiPageEditor mpe = (BPMN2MultiPageEditor)part;
+						setActiveEditor(mpe.designEditor);
+					}
+				}
+
+				@Override
+				public void partClosed(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partDeactivated(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partOpened(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partHidden(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partVisible(IWorkbenchPartReference partRef) {
+				}
+
+				@Override
+				public void partInputChanged(IWorkbenchPartReference partRef) {
+				}
+			};
+			page.addPartListener(selectionListener);
+		}
+	}
+
+	private void removeSelectionListener()
+	{
+		if (selectionListener!=null) {
+			getSite().getPage().removePartListener(selectionListener);
+			selectionListener = null;
+		}
+	}
+
+	public void setEditorTitle(final String title) {
+		Display display = getSite().getShell().getDisplay();
+		display.asyncExec(new Runnable() {
+			public void run() {
+				setPartName(title);
+			}
+		});
+	}
+
+	public BPMN2EditingDomainListener getEditingDomainListener() {
+		if (editingDomainListener==null) {
+			TransactionalEditingDomainImpl editingDomain = (TransactionalEditingDomainImpl)getEditingDomain();
+			if (editingDomain==null) {
+				return null;
+			}
+			editingDomainListener = new BPMN2EditingDomainListener(this);
+
+			Lifecycle domainLifeCycle = (Lifecycle) editingDomain.getAdapter(Lifecycle.class);
+			domainLifeCycle.addTransactionalEditingDomainListener(editingDomainListener);
+		}
+		return editingDomainListener;
+	}
+	
+	public BasicDiagnostic getDiagnostics() {
+		return getEditingDomainListener().getDiagnostics();
+	}
+	
+	@Override
+	public Object getAdapter(Class required) {
+		if (required==ITabDescriptorProvider.class) {
+			if (tabDescriptorProvider==null) {
+				IWorkbenchPage page = getEditorSite().getPage();
+				String viewID = "org.eclipse.ui.views.PropertySheet";
+				try {
+					page.showView(viewID, null, IWorkbenchPage.VIEW_CREATE);
+					page.showView(viewID, null,  IWorkbenchPage.VIEW_ACTIVATE);
+				}
+				catch (Exception e) {}
+			}
+			return tabDescriptorProvider;
+		}
+		if (required==TargetRuntime.class)
+			return getTargetRuntime();
+		if (required==Bpmn2Preferences.class)
+			return getPreferences();
+		if (required == IPropertySheetPage.class) {
+			return new Bpmn2TabbedPropertySheetPage(this);
+		}
+		return super.getAdapter(required);
+	}
+
+	@Override
+	public void dispose() {
+		// clear ID mapping tables if no more instances of editor are active
+		int instances = 0;
+		IWorkbenchPage[] pages = getEditorSite().getWorkbenchWindow().getPages();
+		for (IWorkbenchPage p : pages) {
+			IEditorReference[] refs = p.getEditorReferences();
+			instances += refs.length;
+		}
+		ModelUtil.clearIDs(modelHandler.getResource(), instances==0);
+		getPreferences().getGlobalPreferences().removePropertyChangeListener(this);
+		
+		getResourceSet().eAdapters().remove(getEditorAdapter());
+		removeSelectionListener();
+		if (instances==0)
+			setActiveEditor(null);
+		
+		super.dispose();
+		ModelHandlerLocator.remove(modelUri);
+		// get rid of temp files and folders, button only if the workbench is being shut down.
+		// when the workbench is restarted, we need to have those temp files around!
+		if (!workbenchShutdown)
+			BPMN2DiagramCreator.dispose(diagramFile);
+		removeWorkbenchListener();
+		getPreferences().dispose();
+	}
+
+	public IFile getModelFile() {
+		return modelFile;
+	}
+
+	public IFile getDiagramFile() {
+		return diagramFile;
+	}
+	
+	public ModelHandler getModelHandler() {
+		return modelHandler;
+	}
+
+	public BPMNDiagram getBpmnDiagram() {
+		if (bpmnDiagram==null)
+			bpmnDiagram = getModelHandler().getDefinitions().getDiagrams().get(0);
+
+		if (bpmnDiagram!=null) {
+			GraphicalViewer viewer = getGraphicalViewer();
+			mapDiagramToViewer.put(bpmnDiagram, viewer);
+		}
+		return bpmnDiagram;
+	}
+	
+	public void setBpmnDiagram(final BPMNDiagram bpmnDiagram) {
+		if (this.bpmnDiagram == bpmnDiagram)
+			return;
+		
+		GraphicalViewer viewer = mapDiagramToViewer.get(bpmnDiagram);
+		// do we need to create a new Diagram or is this already in the model?
+		Diagram oldDiagram = null;
+		Diagram diagram = null;
+		final Resource resource = getDiagramTypeProvider().getDiagram().eResource();
+		for (EObject o : resource.getContents()) {
+			if (o instanceof Diagram) {
+				Diagram d = (Diagram)o;
+				if (BusinessObjectUtil.getFirstElementOfType(d, BPMNDiagram.class) == bpmnDiagram) {
+					oldDiagram = d;
+					break;
+				}
+			}
+		}
+		
+		if (oldDiagram==null) {
+			// create a new one
+			String typeId = getDiagramTypeProvider().getDiagram().getDiagramTypeId();
+			final Diagram newDiagram = Graphiti.getCreateService().createDiagram(typeId, bpmnDiagram.getName(), true);
+			final IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
+			TransactionalEditingDomain domain = getEditingDomain();
+			domain.getCommandStack().execute(new RecordingCommand(domain) {
+				protected void doExecute() {
+					resource.getContents().add(newDiagram);
+					newDiagram.setActive(true);
+					featureProvider.link(newDiagram, bpmnDiagram);
+				}
+			});
+			diagram = newDiagram;
+		}
+		else {
+			// already there
+			diagram = oldDiagram;
+		}
+		
+		// set the new Diagram in the DTP and refresh graphical viewer
+		getRefreshBehavior().initRefresh();
+		setPictogramElementsForSelection(null);
+		getDiagramTypeProvider().init(diagram, this);
+		if (viewer!=null)
+			setGraphicalViewer(viewer);
+		
+		refreshContent();
+		// remember this for later
+		this.bpmnDiagram = bpmnDiagram;
+	}
+	
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+	
+	@Override
+	public void doSaveAs() {
+		IFile oldFile = getModelFile();
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.setOriginalFile(oldFile);
+		saveAsDialog.create();
+		if (saveAsDialog.open() == SaveAsDialog.CANCEL) {
+			return;
+		}
+		IPath newFilePath = saveAsDialog.getResult();
+		if (newFilePath == null){
+			return;
+		}
+		
+        IFile newFile = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath);
+        IWorkbenchPage page = getSite().getPage();
+        
+        try {
+        	// Save the current(old) file
+        	doSave(null);
+        	// if new file exists, close its editor (if open) and delete the existing file
+            if (newFile.exists()) {
+    			IEditorPart editorPart = ResourceUtil.findEditor(page, newFile);
+    			if (editorPart!=null)
+	    			page.closeEditor(editorPart, false);
+        		newFile.delete(true, null);
+            }
+            // make a copy
+			oldFile.copy(newFilePath, true, null);
+		} catch (CoreException e) {
+			showErrorDialogWithLogging(e);
+			return;
+		}
+
+        // open new editor
+    	try {
+			page.openEditor(new FileEditorInput(newFile), BPMN2Editor.EDITOR_ID);
+		} catch (PartInitException e1) {
+			showErrorDialogWithLogging(e1);
+			return;
+		}
+    	
+    	// and close the old editor
+		IEditorPart editorPart = ResourceUtil.findEditor(page, oldFile);
+		if (editorPart!=null)
+			page.closeEditor(editorPart, false);
+		
+    	try {
+			newFile.refreshLocal(IResource.DEPTH_ZERO,null);
+		} catch (CoreException e) {
+			showErrorDialogWithLogging(e);
+			return;
+		}
+	}
+
+	public void closeEditor() {
+		Display display = getSite().getShell().getDisplay();
+		display.asyncExec(new Runnable() {
+			public void run() {
+				boolean closed = getSite().getPage().closeEditor(BPMN2Editor.this, false);
+				if (!closed){
+					// If close editor fails, try again with explicit editorpart 
+					// of the old file
+					IFile oldFile = ResourcesPlugin.getWorkspace().getRoot().getFile(modelFile.getFullPath());
+					IEditorPart editorPart = ResourceUtil.findEditor(getSite().getPage(), oldFile);
+					closed = getSite().getPage().closeEditor(editorPart, false);
+				}
+			}
+		});
+	}
+
+	// Show error dialog and log the error
+	private void showErrorDialogWithLogging(Exception e) {
+		Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+		ErrorUtils.showErrorWithLogging(status);
+	}
+
+	////////////////////////////////////////////////////////////////////////////////
+	// WorkspaceSynchronizer handlers called from delegate
+	////////////////////////////////////////////////////////////////////////////////
+	
+	public boolean handleResourceChanged(Resource resource) {
+		return true;
+	}
+
+	public boolean handleResourceDeleted(Resource resource) {
+		closeEditor();
+		return true;
+	}
+
+	public boolean handleResourceMoved(Resource resource, URI newURI) {
+		URI oldURI = resource.getURI();
+		resource.setURI(newURI);
+		
+		IFile file = WorkspaceSynchronizer.getUnderlyingFile(resource);
+		if (modelUri.equals(oldURI)) {
+			ModelHandlerLocator.remove(modelUri);
+			modelUri = newURI;
+			modelFile = file;
+			if (preferences!=null) {
+				preferences.getGlobalPreferences().removePropertyChangeListener(this);
+				preferences.dispose();
+				preferences = null;
+			}
+			targetRuntime = null;
+			modelHandler = ModelHandlerLocator.createModelHandler(modelUri, (Bpmn2ResourceImpl)resource);
+			ModelHandlerLocator.put(diagramUri, modelHandler);
+
+			setEditorTitle(file.getFullPath().removeFileExtension().lastSegment());
+		}
+		else if (diagramUri.equals(oldURI)) {
+			ModelHandlerLocator.remove(diagramUri);
+			diagramUri = newURI;
+			ModelHandlerLocator.put(diagramUri, modelHandler);
+			diagramFile = file;
+		}
+
+		return true;
+	}
+	
+	////////////////////////////////////////////////////////////////////////////////
+	// Other handlers
+	////////////////////////////////////////////////////////////////////////////////
+
+	@Override
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		// Graphiti understands multipage editors
+		super.selectionChanged(part,selection); // Graphiti's DiagramEditorInternal
+		// but apparently GEF doesn't
+		updateActions(getSelectionActions()); // usually done in GEF's GraphicalEditor
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+	 */
+	@Override
+	public void propertyChange(PropertyChangeEvent event) {
+		if (event.getProperty().endsWith(Bpmn2Preferences.PREF_SHAPE_STYLE)) {
+			getEditingDomain().getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+				@Override
+				protected void doExecute() {
+					IPeService peService = Graphiti.getPeService();
+					TreeIterator<EObject> iter = getDiagramTypeProvider().getDiagram().eAllContents();
+					while (iter.hasNext()) {
+						EObject o = iter.next();
+						if (o instanceof PictogramElement) {
+							PictogramElement pe = (PictogramElement)o;
+							BaseElement be = BusinessObjectUtil.getFirstElementOfType(pe, BaseElement.class);
+							if (be!=null) {
+								TreeIterator<EObject> childIter = pe.eAllContents();
+								while (childIter.hasNext()) {
+									o = childIter.next();
+									if (o instanceof GraphicsAlgorithm) {
+										GraphicsAlgorithm ga = (GraphicsAlgorithm)o;
+										if (peService.getPropertyValue(ga, Bpmn2Preferences.PREF_SHAPE_STYLE)!=null) {
+											StyleUtil.applyStyle(ga, be);
+										}
+									}
+			
+								}
+							}
+						}
+					}
+				}
+			});
+		}
+	}
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
index 0486042..85f831e 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
@@ -1,434 +1,574 @@
-/*******************************************************************************

- * Copyright (c) 2011 Red Hat, Inc.

- *  All rights reserved.

- * This program is made available under the terms of the

- * Eclipse Public License v1.0 which accompanies this distribution,

- * and is available at http://www.eclipse.org/legal/epl-v10.html

- *

- * Contributors:

- * Red Hat, Inc. - initial API and implementation

- *

- * @author Bob Brodt

- ******************************************************************************/

-

-package org.eclipse.bpmn2.modeler.ui.editor;

-

-import java.util.List;

-

-import org.eclipse.bpmn2.BaseElement;

-import org.eclipse.core.runtime.IProgressMonitor;

-import org.eclipse.gef.ContextMenuProvider;

-import org.eclipse.gef.ui.actions.ActionRegistry;

-import org.eclipse.gef.ui.actions.WorkbenchPartAction;

-import org.eclipse.graphiti.dt.IDiagramTypeProvider;

-import org.eclipse.graphiti.mm.pictograms.ContainerShape;

-import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;

-import org.eclipse.graphiti.mm.pictograms.PictogramElement;

-import org.eclipse.graphiti.services.Graphiti;

-import org.eclipse.graphiti.ui.editor.DiagramEditor;

-import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider;

-import org.eclipse.jface.action.IAction;

-import org.eclipse.jface.action.IMenuManager;

-import org.eclipse.jface.viewers.ISelection;

-import org.eclipse.jface.viewers.ISelectionProvider;

-import org.eclipse.jface.viewers.IStructuredSelection;

-import org.eclipse.jface.viewers.SelectionChangedEvent;

-import org.eclipse.jface.viewers.StructuredSelection;

-import org.eclipse.swt.custom.CTabFolder;

-import org.eclipse.swt.custom.CTabFolder2Listener;

-import org.eclipse.swt.custom.CTabFolderEvent;

-import org.eclipse.ui.IEditorInput;

-import org.eclipse.ui.IEditorPart;

-import org.eclipse.ui.IEditorSite;

-import org.eclipse.ui.PartInitException;

-import org.eclipse.ui.part.EditorPart;

-import org.eclipse.ui.part.FileEditorInput;

-import org.eclipse.ui.part.MultiPageEditorPart;

-import org.eclipse.ui.part.MultiPageEditorSite;

-import org.eclipse.ui.part.MultiPageSelectionProvider;

-import org.eclipse.wst.sse.ui.StructuredTextEditor;

-import org.w3c.dom.Attr;

-import org.w3c.dom.Element;

-import org.w3c.dom.Node;

-

-/**

- * This class implements a multi-page version of the BPMN2 Modeler (BPMN2Editor class).

- * To revert back to the original, single-page version simply change the editor extension

- * point in plugin.xml (see comments there).

- * 

- * This is still in the experimental phase and currently only supports a single diagram

- * per .bpmn file. An optional second page, which displays the XML source, can be created

- * from the context menu. The source view is not yet synchronized to the design view and

- * can only show the XML as of the last "Save" i.e. the current state of the file on disk,

- * not the in-memory model. Design/Source view synchronization will be implemented in a

- * future version, but direct editing of the XML will not be supported - it will remain

- * "view only".

- * 

- * Future versions will support multiple diagrams per .bpmn file with the ability to add

- * and remove pages containing different diagram types. It should be possible for the user

- * to create a single file that contains a mix of Process, Collaboration and Choreography

- * diagrams. Whether or not these types of files are actually deployable and/or executable

- * is another story ;)

- */

-public class BPMN2MultiPageEditor extends MultiPageEditorPart {

-

-	BPMN2Editor designEditor;

-	StructuredTextEditor sourceViewer;

-	CTabFolder tabFolder;

-	int defaultTabHeight;

-	

-	/**

-	 * 

-	 */

-	public BPMN2MultiPageEditor() {

-		super();

-	}

-

-	@Override

-	protected IEditorSite createSite(IEditorPart editor) {

-		return new MultiPageEditorSite(this, editor) {

-			@Override

-			protected void handleSelectionChanged(SelectionChangedEvent event) {

-				ISelectionProvider parentProvider = getMultiPageEditor().getSite()

-						.getSelectionProvider();

-				if (parentProvider instanceof MultiPageSelectionProvider) {

-					SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);

-					MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;

-					prov.fireSelectionChanged(newEvent);

-				}

-			}

-			

-			@Override

-			protected void handlePostSelectionChanged(SelectionChangedEvent event) {

-				ISelectionProvider parentProvider = getMultiPageEditor().getSite()

-						.getSelectionProvider();

-				if (parentProvider instanceof MultiPageSelectionProvider) {

-					SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);

-					MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;

-					prov.firePostSelectionChanged(newEvent);

-				}

-			}

-			

-			protected SelectionChangedEvent getNewEvent(ISelectionProvider parentProvider, SelectionChangedEvent event) {

-				ISelection selection = event.getSelection();

-				if (selection instanceof IStructuredSelection) {

-					IStructuredSelection ss = (IStructuredSelection)selection;

-					Object o = ss.getFirstElement();

-					if (o instanceof Node) {

-						selection = getNewSelection((Node)o);

-					}

-				}

-				if (selection!=null)

-					return new SelectionChangedEvent(parentProvider, selection);

-				return event;

-			}

-

-			protected StructuredSelection getNewSelection(Node node) {

-				int type =  node.getNodeType();

-				if (type==1) {

-					// node type = element

-					PictogramElement pe = null;

-					Element elem = (Element)node;

-					String value = elem.getAttribute("bpmnElement");

-					if (value!=null) {

-						pe = findPictogramElement(value);

-					}

-					

-					if (pe==null) {

-						value = elem.getAttribute("id");

-						if (value!=null)

-							pe = findPictogramElement(value);

-					}

-					

-					if (pe!=null) {

-						return new StructuredSelection(pe);

-					}

-					return getNewSelection(node.getParentNode());

-				}

-				else if (type==2) {

-					// node type = attribute

-					// search the attribute's owner

-					Attr attr = (Attr)node;

-					return getNewSelection(attr.getOwnerElement());

-				}

-				else if (type==3) {

-					// node type = text

-					return getNewSelection(node.getParentNode());

-				}

-				return null;

-			}

-			

-			protected PictogramElement findPictogramElement(String id) {

-				PictogramElement pictogramElement = null;

-				if (id!=null) {

-					BaseElement be = designEditor.getModelHandler().findElement(id);

-					List<PictogramElement> pes = Graphiti.getLinkService().getPictogramElements(designEditor.getDiagramTypeProvider().getDiagram(), be);

-					for (PictogramElement pe : pes) {

-						if (pe instanceof ContainerShape) {

-							pictogramElement = pe;

-						}

-						else if (pe instanceof FreeFormConnection) {

-							pictogramElement = pe;

-						}

-					}

-				}

-				

-				return pictogramElement;

-			}

-		};

-	}

-

-	@Override

-	public String getTitle() {

-		if (designEditor!=null)

-			return designEditor.getTitle();

-		return super.getTitle();

-	}

-

-	@Override

-	public String getPartName() {

-		if (designEditor!=null)

-			return designEditor.getPartName();

-		return super.getPartName();

-	}

-

-	@Override

-	protected void pageChange(int newPageIndex) {

-		super.pageChange(newPageIndex);

-		if (newPageIndex>0 && newPageIndex==tabFolder.getItemCount()-1) {

-			// TODO: sync source viewer's DOM with model

-		}

-	}

-

-	/* (non-Javadoc)

-	 * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()

-	 */

-	@Override

-	protected void createPages() {

-		tabFolder = (CTabFolder)getContainer();

-		tabFolder.addCTabFolder2Listener( new CTabFolder2Listener() {

-

-			@Override

-			public void close(CTabFolderEvent event) {

-				if (event.item.getData() == sourceViewer)

-					removeSourceViewer();

-			}

-

-			@Override

-			public void minimize(CTabFolderEvent event) {

-			}

-

-			@Override

-			public void maximize(CTabFolderEvent event) {

-			}

-

-			@Override

-			public void restore(CTabFolderEvent event) {

-			}

-

-			@Override

-			public void showList(CTabFolderEvent event) {

-			}

-			

-		});

-		createDesignEditor();

-//		createSourceViewer();

-	}

-

-	protected void createDesignEditor() {

-		if (designEditor==null) {

-			designEditor = new DesignEditor();

-			

-			try {

-				int pageIndex = tabFolder.getItemCount();

-				if (sourceViewer!=null)

-					--pageIndex;

-				addPage(pageIndex, designEditor, BPMN2MultiPageEditor.this.getEditorInput());

-				defaultTabHeight = tabFolder.getTabHeight();

-				setPageText(pageIndex,"Design");

-

-				// TODO: it should be possible to create additional instances of the BPMN2Editor

-				// that use the same IEditorInput as the original, but work within different

-				// BPMNPlane objects within the same model.

-				// Likewise, it should be possible to remove a page, which causes the associated

-				// BPMNPlane to be removed from the model. The last page may not be removed because

-				// this would invalidate the bpmn file.

-//				++pageIndex;

-//				DesignEditor designEditor2 = new DesignEditor();

-//				addPage(pageIndex, designEditor2, BPMN2MultiPageEditor.this.getEditorInput());

-//				setPageText(pageIndex,"Design 2");

-				

-				defaultTabHeight = tabFolder.getTabHeight();

-				

-				updateTabs();

-			}

-			catch (Exception e) {

-				e.printStackTrace();

-			}

-		}

-	}

-	

-	protected void createSourceViewer() {

-		if (sourceViewer==null) {

-			sourceViewer = new SourceViewer();

-

-			try {

-				int pageIndex = tabFolder.getItemCount();

-				FileEditorInput input = new FileEditorInput(designEditor.getModelFile());

-				addPage(pageIndex, sourceViewer, input);

-				tabFolder.getItem(pageIndex).setShowClose(true);

-				

-				setPageText(pageIndex,"Source");

-				updateTabs();

-			}

-			catch (Exception e) {

-				e.printStackTrace();

-				if (sourceViewer!=null)

-					sourceViewer.dispose();

-			}

-		}

-	}

-

-	@Override

-	public void removePage(int pageIndex) {

-		Object page = tabFolder.getItem(pageIndex).getData();

-		if (page instanceof EditorPart) {

-			// make sure the editor gets disposed - neither CTabFolder nor super does this for us!

-			((EditorPart)page).dispose();

-		}

-		super.removePage(pageIndex);

-		updateTabs();

-	}

-

-	public void removeSourceViewer() {

-		// there will only be one source page and it will always be the last page in the tab folder

-		if (sourceViewer!=null) {

-			int pageIndex = tabFolder.getItemCount() - 1;

-			if (pageIndex>0)

-				removePage(pageIndex);

-		}

-	}

-

-	private void updateTabs() {

-		if (tabFolder.getItemCount()==1) {

-			tabFolder.setTabHeight(0);

-		}

-		else

-			tabFolder.setTabHeight(defaultTabHeight);

-		tabFolder.layout();

-	}

-	

-	/* (non-Javadoc)

-	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)

-	 */

-	@Override

-	public void doSave(IProgressMonitor monitor) {

-		designEditor.doSave(monitor);

-	}

-

-	/* (non-Javadoc)

-	 * @see org.eclipse.ui.part.EditorPart#doSaveAs()

-	 */

-	@Override

-	public void doSaveAs() {

-		IEditorPart activeEditor = getActiveEditor();

-		activeEditor.doSaveAs();

-	}

-

-	/* (non-Javadoc)

-	 * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()

-	 */

-	@Override

-	public boolean isSaveAsAllowed() {

-		

-		/* 

-		 * Depending upon the active page in multipage editor, call the saveAsAllowed. 

-		 * It helps to see whether a particular editor allows 'save as' feature 

-		 */

-		IEditorPart activeEditor = getActiveEditor();

-		return activeEditor.isSaveAsAllowed();

-	}

-

-	public class DesignEditor extends BPMN2Editor {

-		

-		@Override

-		protected void createActions() {

-			super.createActions();

-			ActionRegistry registry = getActionRegistry();

-			IAction action = new WorkbenchPartAction(designEditor) {

-

-				@Override

-				protected void init() {

-					super.init();

-					setId("show.or.hide.source.view");

-				}

-

-				@Override

-				public String getText() {

-					return sourceViewer==null ? "Show Source View" : "Hide Source View";

-				}

-

-				@Override

-				protected boolean calculateEnabled() {

-					return true;

-				}

-				

-				public void run() {

-					if (sourceViewer==null) {

-						createSourceViewer();

-						setActivePage(tabFolder.getItemCount()-1);

-					}

-					else {

-						removeSourceViewer();

-					}

-				}

-			};

-			registry.registerAction(action);

-		}

-

-		@Override

-		protected ContextMenuProvider createContextMenuProvider() {

-			return new DiagramEditorContextMenuProvider(getGraphicalViewer(), getActionRegistry(), getDiagramTypeProvider()) {

-				@Override

-				public void buildContextMenu(IMenuManager manager) {

-					super.buildContextMenu(manager);

-					IAction action = getActionRegistry().getAction("show.or.hide.source.view");

-					action.setText( action.getText() );

-					manager.add(action);

-				}

-			};

-		}

-	}

-

-	public class SourceViewer extends StructuredTextEditor {

-		

-		ActionRegistry actionRegistry = null;

-		

-		@Override

-		@SuppressWarnings("rawtypes")

-		public Object getAdapter(Class required) {

-			if (required==ActionRegistry.class)

-				return getActionRegistry();

-			if (required==BPMN2Editor.class || required==DiagramEditor.class)

-				return designEditor;

-			return super.getAdapter(required);

-		}

-

-		@Override

-		public boolean isEditable() {

-			return false;

-		}

-

-		@Override

-		public void dispose() {

-			super.dispose();

-			BPMN2MultiPageEditor.this.sourceViewer = null;

-		}

-

-		protected ActionRegistry getActionRegistry() {

-			if (actionRegistry == null)

-				actionRegistry = new ActionRegistry();

-			return actionRegistry;

-		}

-	}

-}

+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ *  All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Bob Brodt
+ ******************************************************************************/
+
+package org.eclipse.bpmn2.modeler.ui.editor;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.NotificationFilter;
+import org.eclipse.emf.transaction.ResourceSetChangeEvent;
+import org.eclipse.emf.transaction.ResourceSetListener;
+import org.eclipse.emf.transaction.RollbackException;
+import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
+import org.eclipse.gef.ContextMenuProvider;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.WorkbenchPartAction;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.dialogs.IPageChangedListener;
+import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabFolder2Listener;
+import org.eclipse.swt.custom.CTabFolderEvent;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageEditorSite;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
+import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * This class implements a multi-page version of the BPMN2 Modeler (BPMN2Editor class).
+ * To revert back to the original, single-page version simply change the editor extension
+ * point in plugin.xml (see comments there).
+ * 
+ * This is still in the experimental phase and currently only supports a single diagram
+ * per .bpmn file. An optional second page, which displays the XML source, can be created
+ * from the context menu. The source view is not yet synchronized to the design view and
+ * can only show the XML as of the last "Save" i.e. the current state of the file on disk,
+ * not the in-memory model. Design/Source view synchronization will be implemented in a
+ * future version, but direct editing of the XML will not be supported - it will remain
+ * "view only".
+ * 
+ * Future versions will support multiple diagrams per .bpmn file with the ability to add
+ * and remove pages containing different diagram types. It should be possible for the user
+ * to create a single file that contains a mix of Process, Collaboration and Choreography
+ * diagrams. Whether or not these types of files are actually deployable and/or executable
+ * is another story ;)
+ */
+public class BPMN2MultiPageEditor extends MultiPageEditorPart {
+
+	BPMN2Editor designEditor;
+	StructuredTextEditor sourceViewer;
+	CTabFolder tabFolder;
+	int defaultTabHeight;
+	int activePage = 0;
+	List<BPMNDiagram> pages = new ArrayList<BPMNDiagram>();
+	
+	/**
+	 * 
+	 */
+	public BPMN2MultiPageEditor() {
+		super();
+	}
+
+	@Override
+	protected IEditorSite createSite(IEditorPart editor) {
+		return new MultiPageEditorSite(this, editor) {
+			@Override
+			protected void handleSelectionChanged(SelectionChangedEvent event) {
+				ISelectionProvider parentProvider = getMultiPageEditor().getSite()
+						.getSelectionProvider();
+				if (parentProvider instanceof MultiPageSelectionProvider) {
+					SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
+					MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
+					prov.fireSelectionChanged(newEvent);
+				}
+			}
+			
+			@Override
+			protected void handlePostSelectionChanged(SelectionChangedEvent event) {
+				ISelectionProvider parentProvider = getMultiPageEditor().getSite()
+						.getSelectionProvider();
+				if (parentProvider instanceof MultiPageSelectionProvider) {
+					SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
+					MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
+					prov.firePostSelectionChanged(newEvent);
+				}
+			}
+			
+			protected SelectionChangedEvent getNewEvent(ISelectionProvider parentProvider, SelectionChangedEvent event) {
+				ISelection selection = event.getSelection();
+				if (selection instanceof IStructuredSelection) {
+					IStructuredSelection ss = (IStructuredSelection)selection;
+					Object o = ss.getFirstElement();
+					if (o instanceof Node) {
+						selection = getNewSelection((Node)o);
+					}
+				}
+				if (selection!=null)
+					return new SelectionChangedEvent(parentProvider, selection);
+				return event;
+			}
+
+			protected StructuredSelection getNewSelection(Node node) {
+				int type =  node.getNodeType();
+				if (type==1) {
+					// node type = element
+					PictogramElement pe = null;
+					Element elem = (Element)node;
+					String value = elem.getAttribute("bpmnElement");
+					if (value!=null) {
+						pe = findPictogramElement(value);
+					}
+					
+					if (pe==null) {
+						value = elem.getAttribute("id");
+						if (value!=null)
+							pe = findPictogramElement(value);
+					}
+					
+					if (pe!=null) {
+						return new StructuredSelection(pe);
+					}
+					return getNewSelection(node.getParentNode());
+				}
+				else if (type==2) {
+					// node type = attribute
+					// search the attribute's owner
+					Attr attr = (Attr)node;
+					return getNewSelection(attr.getOwnerElement());
+				}
+				else if (type==3) {
+					// node type = text
+					return getNewSelection(node.getParentNode());
+				}
+				return null;
+			}
+			
+			protected PictogramElement findPictogramElement(String id) {
+				PictogramElement pictogramElement = null;
+				if (id!=null) {
+					BaseElement be = designEditor.getModelHandler().findElement(id);
+					List<PictogramElement> pes = Graphiti.getLinkService().getPictogramElements(designEditor.getDiagramTypeProvider().getDiagram(), be);
+					for (PictogramElement pe : pes) {
+						if (pe instanceof ContainerShape) {
+							pictogramElement = pe;
+						}
+						else if (pe instanceof FreeFormConnection) {
+							pictogramElement = pe;
+						}
+					}
+				}
+				
+				return pictogramElement;
+			}
+		};
+	}
+
+	@Override
+	public String getTitle() {
+		if (designEditor!=null)
+			return designEditor.getTitle();
+		return super.getTitle();
+	}
+
+	@Override
+	public String getPartName() {
+		if (designEditor!=null)
+			return designEditor.getPartName();
+		return super.getPartName();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
+	 */
+	@Override
+	protected void createPages() {
+		tabFolder = (CTabFolder)getContainer();
+		tabFolder.addCTabFolder2Listener( new CTabFolder2Listener() {
+
+			@Override
+			public void close(CTabFolderEvent event) {
+				if (event.item.getData() == sourceViewer)
+					removeSourceViewer();
+			}
+
+			@Override
+			public void minimize(CTabFolderEvent event) {
+			}
+
+			@Override
+			public void maximize(CTabFolderEvent event) {
+			}
+
+			@Override
+			public void restore(CTabFolderEvent event) {
+			}
+
+			@Override
+			public void showList(CTabFolderEvent event) {
+			}
+			
+		});
+		createDesignEditor();
+	}
+
+	protected void createDesignEditor() {
+		if (designEditor==null) {
+			designEditor = new DesignEditor(this);
+			
+			try {
+				int pageIndex = tabFolder.getItemCount();
+				if (sourceViewer!=null)
+					--pageIndex;
+				addPage(pageIndex, designEditor, BPMN2MultiPageEditor.this.getEditorInput());
+				defaultTabHeight = tabFolder.getTabHeight();
+				setPageText(pageIndex,"Design");
+
+				// TODO: it should be possible to create additional instances of the BPMN2Editor
+				// that use the same IEditorInput as the original, but work within different
+				// BPMNPlane objects within the same model.
+				// Likewise, it should be possible to remove a page, which causes the associated
+				// BPMNPlane to be removed from the model. The last page may not be removed because
+				// this would invalidate the bpmn file.
+//				++pageIndex;
+//				DesignEditor designEditor2 = new DesignEditor();
+//				addPage(pageIndex, designEditor2, BPMN2MultiPageEditor.this.getEditorInput());
+//				setPageText(pageIndex,"Design 2");
+				
+				defaultTabHeight = tabFolder.getTabHeight();
+
+				updateTabs();
+			}
+			catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	
+	protected void setActivePage(int pageIndex) {
+		activePage = pageIndex;
+		super.setActivePage(pageIndex);
+	}
+	
+	protected void addDesignPage(BPMNDiagram bpmnDiagram) {
+		createDesignEditor();
+		try {
+			Display.getDefault().asyncExec(new Runnable() {
+				public void run() {
+					designEditor.setPictogramElementsForSelection(null);
+					designEditor.refresh();
+				}
+			});
+			
+			int pageIndex = tabFolder.getItemCount();
+			if (sourceViewer!=null)
+				--pageIndex;
+			Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput)designEditor.getEditorInput();
+			input.setBpmnDiagram(bpmnDiagram);
+			addPage(pageIndex, designEditor, input);
+			setPageText(pageIndex,bpmnDiagram.getName());
+
+			this.setActivePage(pageIndex);
+			updateTabs();
+		}
+		catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	protected void createSourceViewer() {
+		if (sourceViewer==null) {
+			sourceViewer = new SourceViewer();
+
+			try {
+				int pageIndex = tabFolder.getItemCount();
+				FileEditorInput input = new FileEditorInput(designEditor.getModelFile());
+				addPage(pageIndex, sourceViewer, input);
+				tabFolder.getItem(pageIndex).setShowClose(true);
+				
+				setPageText(pageIndex,"Source");
+				updateTabs();
+			}
+			catch (Exception e) {
+				e.printStackTrace();
+				if (sourceViewer!=null)
+					sourceViewer.dispose();
+			}
+		}
+	}
+
+	public void addPage(int pageIndex, IEditorPart editor, IEditorInput input)
+			throws PartInitException {
+		super.addPage(pageIndex,editor,input);
+		if (editor instanceof BPMN2Editor) {
+			pages.add(pageIndex,((BPMN2Editor)editor).getBpmnDiagram());
+		}
+	}
+	
+	@Override
+	public void removePage(int pageIndex) {
+		Object page = tabFolder.getItem(pageIndex).getData();
+		if (page instanceof EditorPart) {
+			// make sure the editor gets disposed - neither CTabFolder nor super does this for us!
+			((EditorPart)page).dispose();
+		}
+		super.removePage(pageIndex);
+		updateTabs();
+		if (page instanceof BPMN2Editor) {
+			pages.remove(pageIndex);
+		}
+	}
+
+	@Override
+	protected void pageChange(int newPageIndex) {
+		super.pageChange(newPageIndex);
+
+		IEditorPart editor = getEditor(newPageIndex);
+		if (editor instanceof BPMN2Editor) {
+			BPMNDiagram bpmnDiagram = pages.get(newPageIndex);
+			((BPMN2Editor)editor).setBpmnDiagram(bpmnDiagram);
+		}
+	}
+
+	public void removeSourceViewer() {
+		// there will only be one source page and it will always be the last page in the tab folder
+		if (sourceViewer!=null) {
+			int pageIndex = tabFolder.getItemCount() - 1;
+			if (pageIndex>0)
+				removePage(pageIndex);
+		}
+	}
+
+	private void updateTabs() {
+		if (tabFolder.getItemCount()==1) {
+			tabFolder.setTabHeight(0);
+		}
+		else
+			tabFolder.setTabHeight(defaultTabHeight);
+		tabFolder.layout();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	@Override
+	public void doSave(IProgressMonitor monitor) {
+		designEditor.doSave(monitor);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+	 */
+	@Override
+	public void doSaveAs() {
+		IEditorPart activeEditor = getActiveEditor();
+		activeEditor.doSaveAs();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		
+		/* 
+		 * Depending upon the active page in multipage editor, call the saveAsAllowed. 
+		 * It helps to see whether a particular editor allows 'save as' feature 
+		 */
+		IEditorPart activeEditor = getActiveEditor();
+		return activeEditor.isSaveAsAllowed();
+	}
+
+	@Override
+	public void dispose() {
+		designEditor.dispose();
+		if (sourceViewer!=null)
+			sourceViewer.dispose();
+	}
+
+	public class DesignEditor extends BPMN2Editor {
+		
+		BPMN2MultiPageEditor multipageEditor;
+		ResourceSetListener resourceSetListener = null;
+		
+		public DesignEditor(BPMN2MultiPageEditor mpe) {
+			super();
+			multipageEditor = mpe;
+		}
+		
+		public void dispose() {
+			getEditingDomain().removeResourceSetListener(resourceSetListener);
+			resourceSetListener = null;
+			super.dispose();
+		}
+		
+		@Override
+		protected void setInput(IEditorInput input) {
+			super.setInput(input);
+			if (resourceSetListener==null) {
+				resourceSetListener = new ResourceSetListener() {
+					@Override
+					public NotificationFilter getFilter() {
+						return null;
+					}
+
+					@Override
+					public Command transactionAboutToCommit(ResourceSetChangeEvent event) throws RollbackException {
+						return null;
+					}
+
+					@Override
+					public void resourceSetChanged(ResourceSetChangeEvent event) {
+						for (Notification n : event.getNotifications()) {
+							if (n.getNewValue() instanceof BPMNPlane && n.getNotifier() instanceof BPMNDiagram) {
+								final BPMNDiagram d = (BPMNDiagram)n.getNotifier();
+								Display.getCurrent().asyncExec( new Runnable() {
+									@Override
+									public void run() {
+										multipageEditor.addDesignPage(d);
+									}
+								});
+								break;
+							}
+						}
+					}
+
+					@Override
+					public boolean isAggregatePrecommitListener() {
+						return false;
+					}
+
+					@Override
+					public boolean isPrecommitOnly() {
+						return false;
+					}
+
+					@Override
+					public boolean isPostcommitOnly() {
+						return true;
+					}
+				};
+				getEditingDomain().addResourceSetListener(resourceSetListener);
+			}
+		}
+
+		@Override
+		protected void createActions() {
+			super.createActions();
+			ActionRegistry registry = getActionRegistry();
+			IAction action = new WorkbenchPartAction(designEditor) {
+
+				@Override
+				protected void init() {
+					super.init();
+					setId("show.or.hide.source.view");
+				}
+
+				@Override
+				public String getText() {
+					return sourceViewer==null ? "Show Source View" : "Hide Source View";
+				}
+
+				@Override
+				protected boolean calculateEnabled() {
+					return true;
+				}
+				
+				public void run() {
+					if (sourceViewer==null) {
+						createSourceViewer();
+						setActivePage(tabFolder.getItemCount()-1);
+					}
+					else {
+						removeSourceViewer();
+					}
+				}
+			};
+			registry.registerAction(action);
+		}
+
+		@Override
+		protected ContextMenuProvider createContextMenuProvider() {
+			return new DiagramEditorContextMenuProvider(getGraphicalViewer(), getActionRegistry(), getDiagramTypeProvider()) {
+				@Override
+				public void buildContextMenu(IMenuManager manager) {
+					super.buildContextMenu(manager);
+					IAction action = getActionRegistry().getAction("show.or.hide.source.view");
+					action.setText( action.getText() );
+					manager.add(action);
+				}
+			};
+		}
+	}
+
+	public class SourceViewer extends StructuredTextEditor {
+		
+		ActionRegistry actionRegistry = null;
+		
+		@Override
+		@SuppressWarnings("rawtypes")
+		public Object getAdapter(Class required) {
+			if (required==ActionRegistry.class)
+				return getActionRegistry();
+			if (required==BPMN2Editor.class || required==DiagramEditor.class)
+				return designEditor;
+			return super.getAdapter(required);
+		}
+
+		@Override
+		public boolean isEditable() {
+			return false;
+		}
+
+		@Override
+		public void dispose() {
+			super.dispose();
+			BPMN2MultiPageEditor.this.sourceViewer = null;
+		}
+
+		protected ActionRegistry getActionRegistry() {
+			if (actionRegistry == null)
+				actionRegistry = new ActionRegistry();
+			return actionRegistry;
+		}
+	}
+
+	public BPMN2Editor getDesignEditor() {
+		return designEditor;
+	}
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
index 1c6ede5..c0920ec 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
@@ -179,7 +179,7 @@
 							
 							@Override
 							protected boolean updateObject(final Object result) {
-								// we can't just change the key because the map that contains it
+								// we can't just change the key because the mapDiagramToViewer that contains it
 								// needs to be updated, so remove old key, then add new.
 								if (result instanceof String && !((String)result).isEmpty() ) {
 									final Map.Entry<String, String> entry = (Map.Entry<String, String>)object;
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
index 582a02c..2dbd9b9 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
@@ -1,84 +1,94 @@
-/******************************************************************************* 

- * Copyright (c) 2011 Red Hat, Inc. 

- *  All rights reserved. 

- * This program is made available under the terms of the 

- * Eclipse Public License v1.0 which accompanies this distribution, 

- * and is available at http://www.eclipse.org/legal/epl-v10.html 

- * 

- * Contributors: 

- * Red Hat, Inc. - initial API and implementation 

- *

- * @author Innar Made

- ******************************************************************************/

-package org.eclipse.bpmn2.modeler.ui.wizards;

-

-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;

-import org.eclipse.emf.common.util.URI;

-import org.eclipse.emf.ecore.resource.Resource;

-import org.eclipse.emf.transaction.TransactionalEditingDomain;

-import org.eclipse.graphiti.ui.editor.DiagramEditorInput;

-import org.eclipse.ui.part.FileEditorInput;

-

-public final class Bpmn2DiagramEditorInput extends DiagramEditorInput {

-

-	private final TransactionalEditingDomain domain;

-	private Bpmn2DiagramType initialDiagramType = Bpmn2DiagramType.NONE;

-	private String targetNamespace;

-

-	Bpmn2DiagramEditorInput(URI diagramUri, TransactionalEditingDomain domain, String providerId) {

-		super(diagramUri, providerId);

-		this.domain = domain;

-	}

-

-	public Bpmn2DiagramType getInitialDiagramType() {

-		return initialDiagramType;

-	}

-

-	public void setInitialDiagramType(Bpmn2DiagramType initialDiagramType) {

-		this.initialDiagramType = initialDiagramType;

-	}

-

-	public String getTargetNamespace() {

-		return targetNamespace;

-	}

-

-	public void setTargetNamespace(String targetNamespace) {

-		this.targetNamespace = targetNamespace;

-	}

-

-	@Override

-	public boolean equals(Object obj) {

-		boolean superEquals = super.equals(obj);

-		if (superEquals) {

-			return true;

-		}

-

-		// Eclipse makes FileEditorInputs for files to be opened. Here we check if the file is actually the same

-		// as the DiagramEditorInput uses. This is for preventing opening new editors for the same file.

-		if (obj instanceof FileEditorInput) {

-

-			String path = ((FileEditorInput) obj).getFile().getFullPath().toString();

-			URI platformUri = URI.createPlatformResourceURI(path, true);

-

-			for (Resource resource : domain.getResourceSet().getResources()) {

-				if (resource.getURI().equals(platformUri)) {

-					return true;

-				}

-			}

-

-		}

-		return false;

-	}

-

-	@Override

-	public Object getAdapter(Class adapter) {

-//		if (adapter.equals(TransactionalEditingDomain.class)) {

-//			return new Bpmn2TransactionalEditingDomain();

-//		}

-		return super.getAdapter(adapter);

-	}

-

-//	public class Bpmn2TransactionalEditingDomain implements TransactionalEditingDomain {

-//		

-//	}

+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ *  All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ *
+ * @author Innar Made
+ ******************************************************************************/
+package org.eclipse.bpmn2.modeler.ui.wizards;
+
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
+import org.eclipse.ui.part.FileEditorInput;
+
+public final class Bpmn2DiagramEditorInput extends DiagramEditorInput {
+
+	private final TransactionalEditingDomain domain;
+	private Bpmn2DiagramType initialDiagramType = Bpmn2DiagramType.NONE;
+	private String targetNamespace;
+	private BPMNDiagram bpmnDiagram;
+	
+	Bpmn2DiagramEditorInput(URI diagramUri, TransactionalEditingDomain domain, String providerId) {
+		super(diagramUri, providerId);
+		this.domain = domain;
+	}
+
+	public Bpmn2DiagramType getInitialDiagramType() {
+		return initialDiagramType;
+	}
+
+	public void setInitialDiagramType(Bpmn2DiagramType initialDiagramType) {
+		this.initialDiagramType = initialDiagramType;
+	}
+
+	public String getTargetNamespace() {
+		return targetNamespace;
+	}
+
+	public void setTargetNamespace(String targetNamespace) {
+		this.targetNamespace = targetNamespace;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		boolean superEquals = super.equals(obj);
+		if (superEquals) {
+			return true;
+		}
+
+		// Eclipse makes FileEditorInputs for files to be opened. Here we check if the file is actually the same
+		// as the DiagramEditorInput uses. This is for preventing opening new editors for the same file.
+		if (obj instanceof FileEditorInput) {
+
+			String path = ((FileEditorInput) obj).getFile().getFullPath().toString();
+			URI platformUri = URI.createPlatformResourceURI(path, true);
+
+			for (Resource resource : domain.getResourceSet().getResources()) {
+				if (resource.getURI().equals(platformUri)) {
+					return true;
+				}
+			}
+
+		}
+		return false;
+	}
+
+	@Override
+	public Object getAdapter(Class adapter) {
+//		if (adapter.equals(TransactionalEditingDomain.class)) {
+//			return new Bpmn2TransactionalEditingDomain();
+//		}
+		return super.getAdapter(adapter);
+	}
+
+	public BPMNDiagram getBpmnDiagram() {
+		return bpmnDiagram;
+	}
+
+	public void setBpmnDiagram(BPMNDiagram bpmnDiagram) {
+		this.bpmnDiagram = bpmnDiagram;
+	}
+
+//	public class Bpmn2TransactionalEditingDomain implements TransactionalEditingDomain {
+//		
+//	}
 }
\ No newline at end of file