You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/08/28 15:42:18 UTC

[1/3] syncope git commit: [SYNCOPE-1054] Now migrated to Flowable 6.1

Repository: syncope
Updated Branches:
  refs/heads/master 7098ca9f6 -> f27e1bb4a


http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/console-reference/src/main/resources/url-config.js
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/url-config.js b/fit/console-reference/src/main/resources/url-config.js
index 054d516..12ab6d3 100644
--- a/fit/console-reference/src/main/resources/url-config.js
+++ b/fit/console-reference/src/main/resources/url-config.js
@@ -6,9 +6,9 @@
  * to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
- *
+ * 
  *   http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,19 +16,26 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-var KISBPM = KISBPM || {};
+var FLOWABLE = FLOWABLE || {};
+
+FLOWABLE.URL = {
 
-KISBPM.URL = {
   getModel: function (modelId) {
-    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler')) 
+    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler'))
             + "/workflowDefGET?modelId=" + modelId;
   },
+
   getStencilSet: function () {
-    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler')) 
+    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler'))
             + "/flowable-modeler/stencilset.json";
   },
+
   putModel: function (modelId) {
-    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler')) 
+    return window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler'))
             + "/workflowDefPUT?modelId=" + modelId;
+  },
+
+  validateModel: function () {
+    return FLOWABLE.CONFIG.contextRoot + '/app/rest/model/validate';
   }
 };

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/core-reference/src/main/resources/all/workflow.properties
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/all/workflow.properties b/fit/core-reference/src/main/resources/all/workflow.properties
index 50c42fc..36af01c 100644
--- a/fit/core-reference/src/main/resources/all/workflow.properties
+++ b/fit/core-reference/src/main/resources/all/workflow.properties
@@ -16,7 +16,6 @@
 # under the License.
 wf.directory=${conf.directory}
 historyLevel=activity
-jobExecutorActivate=true
 uwfAdapter=org.apache.syncope.core.workflow.flowable.FlowableUserWorkflowAdapter
 gwfAdapter=org.apache.syncope.core.workflow.java.DefaultGroupWorkflowAdapter
 awfAdapter=org.apache.syncope.core.workflow.java.DefaultAnyObjectWorkflowAdapter

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/core-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/log4j2.xml b/fit/core-reference/src/main/resources/log4j2.xml
index 5dde70c..7df562b 100644
--- a/fit/core-reference/src/main/resources/log4j2.xml
+++ b/fit/core-reference/src/main/resources/log4j2.xml
@@ -140,7 +140,7 @@ under the License.
       <appender-ref ref="mainFile"/>
       <appender-ref ref="main"/>
     </asyncLogger>
-    <asyncLogger name="org.activiti" additivity="false" level="ERROR">
+    <asyncLogger name="org.flowable" additivity="false" level="ERROR">
       <appender-ref ref="mainFile"/>
       <appender-ref ref="main"/>
     </asyncLogger>

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/installer/src/main/java/org/apache/syncope/installer/files/ConsolePom.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/files/ConsolePom.java b/installer/src/main/java/org/apache/syncope/installer/files/ConsolePom.java
index ac46abb..4e38bf9 100644
--- a/installer/src/main/java/org/apache/syncope/installer/files/ConsolePom.java
+++ b/installer/src/main/java/org/apache/syncope/installer/files/ConsolePom.java
@@ -24,7 +24,7 @@ public final class ConsolePom {
 
     public static final String FLOWABLE_CONTENT_TO_ADD = "<dependency>\n"
             + "          <groupId>org.flowable</groupId>\n"
-            + "          <artifactId>flowable-webapp-explorer2</artifactId>\n"
+            + "          <artifactId>flowable-ui-modeler-app</artifactId>\n"
             + "          <type>war</type>\n"
             + "          <scope>test</scope>\n"
             + "        </dependency>\n"
@@ -43,42 +43,30 @@ public final class ConsolePom {
             + "                <phase>process-resources</phase>\n"
             + "                <configuration>\n"
             + "                  <target>\n"
-            + "                <unzip src=\"${settings.localRepository}/org/flowable/flowable-webapp-explorer2/"
-            + "${flowable.version}/flowable-webapp-explorer2-${flowable.version}.war\" \n"
-            + "                       dest=\"${project.build.directory}/flowable-webapp-explorer2\"/>\n"
-            + "                \n" + "                <mkdir dir=\"${flowable-modeler.directory}\"/>\n"
-            + "                <copy file=\"${project.build.directory}/flowable-webapp-explorer2/modeler.html\" \n"
-            + "                      todir=\"${flowable-modeler.directory}\"/>\n"
-            + "                <replace file=\"${flowable-modeler.directory}/modeler.html\"\n"
+            + "                <unzip src=\"${settings.localRepository}/org/flowable/flowable-ui-modeler-app/"
+            + "${flowable.version}/flowable-ui-modeler-app-${flowable.version}.war\" \n"
+            + "                       dest=\"${flowable-modeler.directory}\"/>\n" + "                \n"
+            + "                <replace file=\"${flowable-modeler.directory}/index.html\"\n"
             + "                         token=\"&lt;/head&gt;\"\n"
             + "                         value=\"&lt;script type=&quot;text/javascript&quot;&gt;window.onunload = "
-            + "refreshParent; function refreshParent() { window.opener.location.reload(); }&lt;"
-            + "/script&gt;&lt;/head&gt;\"/>\n"
-            + "                <copy file=\"${project.build.directory}/flowable-webapp-explorer2/WEB-INF/classes/"
-            + "stencilset.json\" \n"
-            + "                      todir=\"${flowable-modeler.directory}\"/>\n" + "\n"
-            + "                <mkdir dir=\"${flowable-modeler.directory}/editor-app\"/>\n"
-            + "                <copy todir=\"${flowable-modeler.directory}/editor-app\">\n"
-            + "                  <fileset dir=\"${project.build.directory}/flowable-webapp-explorer2/editor-app\"/>\n"
-            + "                </copy>\n"
-            + "                <replace file=\"${flowable-modeler.directory}/editor-app/editor/oryx.debug.js\"\n"
-            + "                         token=\"return this.changeDifference !== 0 || (this.facade.getModelMetaData()"
-            + "['new'] &amp;&amp; this.facade.getCanvas().getChildShapes().size() &gt; 0);\"\n"
-            + "                         value=\"return this.changeDifference !== 0 \n"
-            + "              || (typeof this.facade.getModelMetaData() != 'undefined' \n"
-            + "              &amp;&amp; this.facade.getModelMetaData()['new'] &amp;&amp; this.facade.getCanvas()."
-            + "getChildShapes().size() &gt; 0);\"/>\n"
+            + "refreshParent; function refreshParent() { window.opener.location.reload(); }&lt;/script&gt;"
+            + "&lt;/head&gt;\"/>\n"
             + "                <replace file=\"${flowable-modeler.directory}/editor-app/configuration/"
             + "toolbar-default-actions.js\"\n"
-            + "                         token=\"window.location.href = &quot;./&quot;;\"\n"
-            + "                         value=\"window.close();\"/>\n"
-            + "                                               \n"
+            + "                         token=\"$location.path('/processes');\"\n"
+            + "                         value=\"window.close();\"/>\n" + "\n"
+            + "                <copy file=\"${basedir}/src/main/resources/app-cfg.js\" \n"
+            + "                      todir=\"${flowable-modeler.directory}/scripts\"\n"
+            + "                      overwrite=\"true\"/>\n"
             + "                <copy file=\"${basedir}/src/main/resources/url-config.js\" \n"
             + "                      todir=\"${flowable-modeler.directory}/editor-app/configuration\"\n"
             + "                      overwrite=\"true\"/>\n"
+            + "                <copy file=\"${basedir}/src/main/resources/stencilset.json\" \n"
+            + "                      todir=\"${flowable-modeler.directory}\"\n"
+            + "                      overwrite=\"true\"/>\n"
             + "                <copy file=\"${basedir}/src/main/resources/save-model.html\" \n"
             + "                      todir=\"${flowable-modeler.directory}/editor-app/popups\"\n"
-            + "                      overwrite=\"true\"/>\n"
+            + "                      overwrite=\"true\"/>"
             + "                  </target>\n"
             + "                </configuration>\n"
             + "                <goals>\n"

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9663766..0cfb5f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -383,7 +383,7 @@ under the License.
 
     <groovy.version>2.4.12</groovy.version>
 
-    <flowable.version>5.23.0</flowable.version>
+    <flowable.version>6.1.2</flowable.version>
 
     <camel.version>2.19.2</camel.version>	
 
@@ -1099,7 +1099,7 @@ under the License.
       </dependency>
       <dependency>
         <groupId>org.flowable</groupId>
-        <artifactId>flowable-webapp-explorer2</artifactId>
+        <artifactId>flowable-ui-modeler-app</artifactId>
         <version>${flowable.version}</version>
         <type>war</type>
       </dependency>


[3/3] syncope git commit: [SYNCOPE-1054] Now migrated to Flowable 6.1

Posted by il...@apache.org.
[SYNCOPE-1054] Now migrated to Flowable 6.1


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/f27e1bb4
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/f27e1bb4
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/f27e1bb4

Branch: refs/heads/master
Commit: f27e1bb4a6cc9281a0e157ba6cda06ccc06e1807
Parents: 7098ca9
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Mon Aug 28 15:44:52 2017 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Mon Aug 28 17:42:05 2017 +0200

----------------------------------------------------------------------
 .../archetype-resources/console/pom.xml         |   33 +-
 .../client/console/pages/ModelerPopupPage.java  |    2 +-
 .../flowable/FlowableDefinitionLoader.java      |    6 +-
 .../workflow/flowable/FlowableDeployUtils.java  |   20 +-
 .../flowable/FlowableUserWorkflowAdapter.java   |   66 +-
 .../flowable/SyncopeEntitiesVariableType.java   |    2 +-
 .../workflow/flowable/SyncopeGroupManager.java  |  122 --
 .../flowable/SyncopeGroupQueryImpl.java         |  136 +-
 .../flowable/SyncopeIdmIdentityService.java     |   51 +
 .../core/workflow/flowable/SyncopeSession.java  |    2 +-
 .../flowable/SyncopeSessionFactory.java         |    7 +-
 .../workflow/flowable/SyncopeUserManager.java   |  166 --
 .../workflow/flowable/SyncopeUserQueryImpl.java |  167 +-
 .../flowable/spring/DomainProcessEngine.java    |   26 +-
 .../spring/DomainProcessEngineFactoryBean.java  |   58 +-
 .../task/AbstractFlowableServiceTask.java       |    2 +-
 .../src/main/resources/workflow.properties      |    1 -
 .../main/resources/workflowFlowableContext.xml  |   26 +-
 fit/console-reference/pom.xml                   |   33 +-
 .../src/main/resources/app-cfg.js               |   29 +
 .../src/main/resources/save-model.html          |   93 +-
 .../src/main/resources/stencilset.json          | 1627 ++++++++++++++++++
 .../src/main/resources/url-config.js            |   21 +-
 .../src/main/resources/all/workflow.properties  |    1 -
 .../src/main/resources/log4j2.xml               |    2 +-
 .../syncope/installer/files/ConsolePom.java     |   44 +-
 pom.xml                                         |    4 +-
 27 files changed, 2021 insertions(+), 726 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/archetype/src/main/resources/archetype-resources/console/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/console/pom.xml b/archetype/src/main/resources/archetype-resources/console/pom.xml
index 52de63a..de901be 100644
--- a/archetype/src/main/resources/archetype-resources/console/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/console/pom.xml
@@ -142,7 +142,7 @@ under the License.
         
         <dependency>
           <groupId>org.flowable</groupId>
-          <artifactId>flowable-webapp-explorer2</artifactId>            
+          <artifactId>flowable-ui-modeler-app</artifactId>            
           <type>war</type>
           <scope>test</scope>
         </dependency>
@@ -160,34 +160,25 @@ under the License.
                 <phase>process-resources</phase>
                 <configuration>
                   <target>
-                    <unzip src="${settings.localRepository}/org/flowable/flowable-webapp-explorer2/${flowable.version}/flowable-webapp-explorer2-${flowable.version}.war" 
-                           dest="${project.build.directory}/flowable-webapp-explorer2"/>
+                    <unzip src="${settings.localRepository}/org/flowable/flowable-ui-modeler-app/${flowable.version}/flowable-ui-modeler-app-${flowable.version}.war" 
+                           dest="${flowable-modeler.directory}"/>
                 
-                    <mkdir dir="${flowable-modeler.directory}"/>
-                    <copy file="${project.build.directory}/flowable-webapp-explorer2/modeler.html" 
-                          todir="${flowable-modeler.directory}"/>
-                    <replace file="${flowable-modeler.directory}/modeler.html"
+                    <replace file="${flowable-modeler.directory}/index.html"
                              token="&lt;/head&gt;"
                              value="&lt;script type=&quot;text/javascript&quot;&gt;window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); }&lt;/script&gt;&lt;/head&gt;"/>
-                    <copy file="${project.build.directory}/flowable-webapp-explorer2/WEB-INF/classes/stencilset.json" 
-                          todir="${flowable-modeler.directory}"/>
-
-                    <mkdir dir="${flowable-modeler.directory}/editor-app"/>
-                    <copy todir="${flowable-modeler.directory}/editor-app">
-                      <fileset dir="${project.build.directory}/flowable-webapp-explorer2/editor-app"/>                  
-                    </copy>
-                    <replace file="${flowable-modeler.directory}/editor-app/editor/oryx.debug.js"
-                             token="return this.changeDifference !== 0 || (this.facade.getModelMetaData()['new'] &amp;&amp; this.facade.getCanvas().getChildShapes().size() &gt; 0);"
-                             value="return this.changeDifference !== 0 
-              || (typeof this.facade.getModelMetaData() != 'undefined' 
-              &amp;&amp; this.facade.getModelMetaData()['new'] &amp;&amp; this.facade.getCanvas().getChildShapes().size() &gt; 0);"/>
                     <replace file="${flowable-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
-                             token="window.location.href = &quot;./&quot;;"
+                             token="$location.path('/processes');"
                              value="window.close();"/>
-                                               
+
+                    <copy file="${basedir}/src/main/resources/app-cfg.js" 
+                          todir="${flowable-modeler.directory}/scripts"
+                          overwrite="true"/>
                     <copy file="${basedir}/src/main/resources/url-config.js" 
                           todir="${flowable-modeler.directory}/editor-app/configuration"
                           overwrite="true"/>
+                    <copy file="${basedir}/src/main/resources/stencilset.json" 
+                          todir="${flowable-modeler.directory}"
+                          overwrite="true"/>
                     <copy file="${basedir}/src/main/resources/save-model.html" 
                           todir="${flowable-modeler.directory}/editor-app/popups"
                           overwrite="true"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
index 3b3ed84..42a599c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
@@ -38,7 +38,7 @@ public class ModelerPopupPage extends WebPage {
         // properly parameterize ?modelId=5 with SYNCOPE-1020
         refresh.add(new AttributeModifier(
                 "content", "0; url=../../" + parameters.get(Constants.MODELER_CONTEXT)
-                + "/modeler.html?modelId=" + modelId.toString()));
+                + "/index.html#/editor/" + modelId.toString()));
         add(refresh);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
index a387c30..9ed5760 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
@@ -24,13 +24,13 @@ import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Resource;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.ProcessDefinition;
-import org.activiti.spring.SpringProcessEngineConfiguration;
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.core.spring.ResourceWithFallbackLoader;
 import org.apache.syncope.core.persistence.api.SyncopeLoader;
 import org.apache.syncope.core.workflow.flowable.spring.DomainProcessEngine;
+import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.repository.ProcessDefinition;
+import org.flowable.spring.SpringProcessEngineConfiguration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
index 4d28cd2..eafc050 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
@@ -26,17 +26,17 @@ import java.io.InputStreamReader;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
-import org.activiti.bpmn.converter.BpmnXMLConverter;
-import org.activiti.bpmn.model.BpmnModel;
-import org.activiti.editor.constants.ModelDataJsonConstants;
-import org.activiti.editor.language.json.converter.BpmnJsonConverter;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.Deployment;
-import org.activiti.engine.repository.Model;
-import org.activiti.engine.repository.ProcessDefinition;
 import org.apache.commons.io.IOUtils;
 import org.apache.syncope.core.workflow.api.WorkflowException;
+import org.flowable.bpmn.converter.BpmnXMLConverter;
+import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.editor.constants.ModelDataJsonConstants;
+import org.flowable.editor.language.json.converter.BpmnJsonConverter;
+import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.common.api.FlowableException;
+import org.flowable.engine.repository.Deployment;
+import org.flowable.engine.repository.Model;
+import org.flowable.engine.repository.ProcessDefinition;
 
 public final class FlowableDeployUtils {
 
@@ -48,7 +48,7 @@ public final class FlowableDeployUtils {
         try {
             return engine.getRepositoryService().createDeployment().
                     addInputStream(resourceName, new ByteArrayInputStream(definition)).deploy();
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While importing " + resourceName, e);
         }
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
index 82d1add..0b32990 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
@@ -33,23 +33,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
-import org.activiti.bpmn.converter.BpmnXMLConverter;
-import org.activiti.bpmn.model.BpmnModel;
-import org.activiti.editor.constants.ModelDataJsonConstants;
-import org.activiti.editor.language.json.converter.BpmnJsonConverter;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.form.FormProperty;
-import org.activiti.engine.form.FormType;
-import org.activiti.engine.form.TaskFormData;
-import org.activiti.engine.history.HistoricActivityInstance;
-import org.activiti.engine.history.HistoricTaskInstance;
-import org.activiti.engine.impl.persistence.entity.HistoricFormPropertyEntity;
-import org.activiti.engine.query.Query;
-import org.activiti.engine.repository.Deployment;
-import org.activiti.engine.repository.Model;
-import org.activiti.engine.repository.ProcessDefinition;
-import org.activiti.engine.runtime.ProcessInstance;
-import org.activiti.engine.task.Task;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -75,6 +58,23 @@ import org.apache.syncope.core.workflow.flowable.spring.DomainProcessEngine;
 import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.apache.syncope.core.workflow.api.WorkflowException;
 import org.apache.syncope.core.workflow.java.AbstractUserWorkflowAdapter;
+import org.flowable.bpmn.converter.BpmnXMLConverter;
+import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.editor.constants.ModelDataJsonConstants;
+import org.flowable.editor.language.json.converter.BpmnJsonConverter;
+import org.flowable.engine.common.api.FlowableException;
+import org.flowable.engine.common.api.query.Query;
+import org.flowable.engine.form.FormProperty;
+import org.flowable.engine.form.FormType;
+import org.flowable.engine.form.TaskFormData;
+import org.flowable.engine.history.HistoricActivityInstance;
+import org.flowable.engine.history.HistoricTaskInstance;
+import org.flowable.engine.impl.persistence.entity.HistoricFormPropertyEntity;
+import org.flowable.engine.repository.Deployment;
+import org.flowable.engine.repository.Model;
+import org.flowable.engine.repository.ProcessDefinition;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.engine.task.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -134,7 +134,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         return "ACT_";
     }
 
-    protected void throwException(final ActivitiException e, final String defaultMessage) {
+    protected void throwException(final FlowableException e, final String defaultMessage) {
         if (e.getCause() != null) {
             if (e.getCause().getCause() instanceof SyncopeClientException) {
                 throw (SyncopeClientException) e.getCause().getCause();
@@ -169,7 +169,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
                 if (formData != null && !formData.getFormProperties().isEmpty()) {
                     result = tasks.get(0).getId();
                 }
-            } catch (ActivitiException e) {
+            } catch (FlowableException e) {
                 LOG.warn("Could not get task form data", e);
             }
         }
@@ -227,7 +227,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         ProcessInstance processInstance = null;
         try {
             processInstance = engine.getRuntimeService().startProcessInstanceByKey(WF_PROCESS_ID, variables);
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throwException(e, "While starting " + WF_PROCESS_ID + " instance");
         }
 
@@ -288,7 +288,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         if (tasks.size() == 1) {
             try {
                 engine.getTaskService().complete(tasks.get(0).getId(), variables);
-            } catch (ActivitiException e) {
+            } catch (FlowableException e) {
                 throwException(e, "While completing task '" + tasks.get(0).getName() + "' for " + user);
             }
         } else {
@@ -617,10 +617,10 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
                 } else if (obj instanceof Task) {
                     forms.add(getFormTO((Task) obj));
                 } else {
-                    throw new ActivitiException(
+                    throw new FlowableException(
                             "Failure retrieving form", new IllegalArgumentException("Invalid task type"));
                 }
-            } catch (ActivitiException e) {
+            } catch (FlowableException e) {
                 LOG.debug("No form found for task {}", obj, e);
             }
         });
@@ -633,14 +633,14 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         Task task;
         try {
             task = engine.getTaskService().createTaskQuery().processInstanceId(workflowId).singleResult();
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While reading form for workflow instance " + workflowId, e);
         }
 
         TaskFormData formData;
         try {
             formData = engine.getFormService().getTaskFormData(task.getId());
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             LOG.debug("No form found for task {}", task.getId(), e);
             formData = null;
         }
@@ -658,16 +658,16 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         try {
             task = engine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
             if (task == null) {
-                throw new ActivitiException("NULL result");
+                throw new FlowableException("NULL result");
             }
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new NotFoundException("Flowable Task " + taskId, e);
         }
 
         TaskFormData formData;
         try {
             formData = engine.getFormService().getTaskFormData(task.getId());
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new NotFoundException("Form for Flowable Task " + taskId, e);
         }
 
@@ -699,7 +699,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         try {
             engine.getTaskService().setOwner(taskId, authUser);
             task = engine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While reading task " + taskId, e);
         }
 
@@ -736,7 +736,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         try {
             engine.getFormService().submitTaskFormData(form.getTaskId(), getPropertiesForSubmit(form));
             engine.getRuntimeService().setVariable(user.getWorkflowId(), FORM_SUBMITTER, authUser);
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throwException(e, "While submitting form for task " + form.getTaskId());
         }
 
@@ -807,7 +807,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
                         return defTO;
                     }).collect(Collectors.toList());
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While listing available process definitions", e);
         }
     }
@@ -816,7 +816,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         try {
             return engine.getRepositoryService().createProcessDefinitionQuery().
                     processDefinitionKey(key).latestVersion().singleResult();
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While accessing process " + key, e);
         }
 
@@ -826,7 +826,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         try {
             return engine.getRepositoryService().createProcessDefinitionQuery().
                     deploymentId(deploymentId).latestVersion().singleResult();
-        } catch (ActivitiException e) {
+        } catch (FlowableException e) {
             throw new WorkflowException("While accessing deployment " + deploymentId, e);
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeEntitiesVariableType.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeEntitiesVariableType.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeEntitiesVariableType.java
index 88b43ac..7fd0faa 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeEntitiesVariableType.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeEntitiesVariableType.java
@@ -18,8 +18,8 @@
  */
 package org.apache.syncope.core.workflow.flowable;
 
-import org.activiti.engine.impl.variable.SerializableType;
 import org.apache.syncope.core.persistence.api.entity.Entity;
+import org.flowable.engine.impl.variable.SerializableType;
 
 /**
  * Flowable variable type for handling Syncope entities as Flowable variables.

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupManager.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupManager.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupManager.java
deleted file mode 100644
index f73e45d..0000000
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupManager.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.workflow.flowable;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import org.activiti.engine.identity.Group;
-import org.activiti.engine.identity.GroupQuery;
-import org.activiti.engine.impl.GroupQueryImpl;
-import org.activiti.engine.impl.Page;
-import org.activiti.engine.impl.persistence.entity.GroupEntity;
-import org.activiti.engine.impl.persistence.entity.GroupIdentityManager;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class SyncopeGroupManager implements GroupIdentityManager, SyncopeSession {
-
-    @Autowired
-    private UserDAO userDAO;
-
-    @Autowired
-    private GroupDAO groupDAO;
-
-    @Override
-    public Class<?> getType() {
-        return GroupIdentityManager.class;
-    }
-
-    @Override
-    public Group createNewGroup(final String groupId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public GroupQuery createNewGroupQuery() {
-        return new SyncopeGroupQueryImpl(groupDAO);
-    }
-
-    @Override
-    public void deleteGroup(final String groupId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Group> findGroupsByUser(final String userId) {
-        List<Group> result = Collections.emptyList();
-        User user = userDAO.findByUsername(userId);
-        if (user != null) {
-            result = new ArrayList<>();
-            for (String groupName : userDAO.findAllGroupNames(user)) {
-                result.add(new GroupEntity(groupName));
-            }
-        }
-
-        return result;
-    }
-
-    @Override
-    public List<Group> findGroupByQueryCriteria(final GroupQueryImpl query, final Page page) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long findGroupCountByQueryCriteria(final GroupQueryImpl query) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Group> findGroupsByNativeQuery(final Map<String, Object> parameterMap, final int firstResult,
-            final int maxResults) {
-
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long findGroupCountByNativeQuery(final Map<String, Object> parameterMap) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void insertGroup(final Group group) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void updateGroup(final Group updatedGroup) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isNewGroup(final Group group) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void flush() {
-    }
-
-    @Override
-    public void close() {
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupQueryImpl.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupQueryImpl.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupQueryImpl.java
index 035b1a0..b2387e5 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupQueryImpl.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeGroupQueryImpl.java
@@ -18,142 +18,72 @@
  */
 package org.apache.syncope.core.workflow.flowable;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.identity.Group;
-import org.activiti.engine.identity.GroupQuery;
-import org.activiti.engine.impl.persistence.entity.GroupEntity;
-import org.apache.syncope.core.persistence.api.dao.AnyDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.flowable.idm.api.Group;
+import org.flowable.idm.engine.impl.GroupQueryImpl;
+import org.flowable.idm.engine.impl.persistence.entity.GroupEntity;
+import org.flowable.idm.engine.impl.persistence.entity.GroupEntityImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 
-public class SyncopeGroupQueryImpl implements GroupQuery {
+public class SyncopeGroupQueryImpl extends GroupQueryImpl {
 
-    private final GroupDAO groupDAO;
+    private static final long serialVersionUID = -2595069675443343682L;
 
-    private String groupId;
+    @Autowired
+    private UserDAO userDAO;
 
-    private List<Group> result;
-
-    public SyncopeGroupQueryImpl(final GroupDAO groupDAO) {
-        this.groupDAO = groupDAO;
-    }
-
-    @Override
-    public GroupQuery groupId(final String groupId) {
-        try {
-            this.groupId = groupId;
-        } catch (NumberFormatException e) {
-            // ignore
-        }
-
-        return this;
-    }
-
-    @Override
-    public GroupQuery groupName(final String groupName) {
-        return this;
-    }
-
-    @Override
-    public GroupQuery groupNameLike(final String groupNameLike) {
-        return this;
-    }
-
-    @Override
-    public GroupQuery groupType(final String groupType) {
-        return this;
-    }
-
-    @Override
-    public GroupQuery groupMember(final String groupMemberUserId) {
-        return this;
-    }
-
-    @Override
-    public GroupQuery orderByGroupId() {
-        return this;
-    }
-
-    @Override
-    public GroupQuery orderByGroupName() {
-        return this;
-    }
-
-    @Override
-    public GroupQuery orderByGroupType() {
-        return this;
-    }
+    @Autowired
+    private GroupDAO groupDAO;
 
-    @Override
-    public GroupQuery asc() {
-        return this;
-    }
-
-    @Override
-    public GroupQuery desc() {
-        return this;
-    }
+    private List<Group> result;
 
-    private Group fromSyncopeGroup(final org.apache.syncope.core.persistence.api.entity.group.Group group) {
-        return new GroupEntity(group.getKey());
+    private Group fromSyncopeGroup(final String name) {
+        GroupEntity group = new GroupEntityImpl();
+        group.setId(name);
+        return group;
     }
 
     private void execute() {
-        if (groupId != null) {
-            org.apache.syncope.core.persistence.api.entity.group.Group syncopeGroup = groupDAO.findByName(groupId);
+        if (id != null) {
+            org.apache.syncope.core.persistence.api.entity.group.Group syncopeGroup = groupDAO.findByName(id);
             if (syncopeGroup == null) {
                 result = Collections.emptyList();
             } else {
-                result = Collections.singletonList(fromSyncopeGroup(syncopeGroup));
-            }
-        }
-        if (result == null) {
-            result = new ArrayList<>();
-            for (int page = 1; page <= (groupDAO.count() / AnyDAO.DEFAULT_PAGE_SIZE) + 1; page++) {
-                result.addAll(groupDAO.findAll(page, AnyDAO.DEFAULT_PAGE_SIZE).stream().
-                        map(group -> fromSyncopeGroup(group)).collect(Collectors.toList()));
+                result = Collections.singletonList(fromSyncopeGroup(syncopeGroup.getName()));
             }
+        } else if (userId != null) {
+            result = userDAO.findAllGroupNames(userDAO.findByUsername(userId)).stream().
+                    map(groupName -> fromSyncopeGroup(groupName)).
+                    collect(Collectors.toList());
         }
     }
 
+    @Transactional(readOnly = true)
     @Override
     public long count() {
-        if (result == null) {
-            execute();
-        }
-        return result.size();
-    }
+        checkQueryOk();
 
-    @Override
-    public Group singleResult() {
+        this.resultType = ResultType.COUNT;
         if (result == null) {
             execute();
         }
-        if (result.isEmpty()) {
-            throw new ActivitiException("Empty result");
-        }
-
-        return result.get(0);
+        return result.size();
     }
 
+    @Transactional(readOnly = true)
     @Override
     public List<Group> list() {
+        checkQueryOk();
+
+        this.resultType = ResultType.LIST;
         if (result == null) {
             execute();
         }
         return result;
     }
-
-    @Override
-    public List<Group> listPage(final int firstResult, final int maxResults) {
-        return list();
-    }
-
-    @Override
-    public GroupQuery potentialStarter(final String procDefId) {
-        throw new UnsupportedOperationException();
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeIdmIdentityService.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeIdmIdentityService.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeIdmIdentityService.java
new file mode 100644
index 0000000..7e0dff9
--- /dev/null
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeIdmIdentityService.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.workflow.flowable;
+
+import org.flowable.idm.api.GroupQuery;
+import org.flowable.idm.api.UserQuery;
+import org.flowable.idm.engine.impl.IdmIdentityServiceImpl;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ConfigurableApplicationContext;
+
+public class SyncopeIdmIdentityService extends IdmIdentityServiceImpl implements ApplicationContextAware {
+
+    private ConfigurableApplicationContext ctx;
+
+    @Override
+    public void setApplicationContext(final ApplicationContext ctx) throws BeansException {
+        this.ctx = (ConfigurableApplicationContext) ctx;
+    }
+
+    @Override
+    public UserQuery createUserQuery() {
+        return (UserQuery) ctx.getBeanFactory().
+                createBean(SyncopeUserQueryImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, false);
+    }
+
+    @Override
+    public GroupQuery createGroupQuery() {
+        return (GroupQuery) ctx.getBeanFactory().
+                createBean(SyncopeGroupQueryImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, false);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSession.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSession.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSession.java
index f15d18d..709a61d 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSession.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSession.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.core.workflow.flowable;
 
-import org.activiti.engine.impl.interceptor.Session;
+import org.flowable.engine.common.impl.interceptor.Session;
 
 public interface SyncopeSession extends Session {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSessionFactory.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSessionFactory.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSessionFactory.java
index 4758d4e..a0420c3 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSessionFactory.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeSessionFactory.java
@@ -18,8 +18,9 @@
  */
 package org.apache.syncope.core.workflow.flowable;
 
-import org.activiti.engine.impl.interceptor.Session;
-import org.activiti.engine.impl.interceptor.SessionFactory;
+import org.flowable.engine.common.impl.interceptor.CommandContext;
+import org.flowable.engine.common.impl.interceptor.Session;
+import org.flowable.engine.common.impl.interceptor.SessionFactory;
 
 public class SyncopeSessionFactory implements SessionFactory {
 
@@ -31,7 +32,7 @@ public class SyncopeSessionFactory implements SessionFactory {
     }
 
     @Override
-    public Session openSession() {
+    public Session openSession(final CommandContext cc) {
         return syncopeSession;
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserManager.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserManager.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserManager.java
deleted file mode 100644
index a6cc201..0000000
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserManager.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.core.workflow.flowable;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import org.activiti.engine.identity.Group;
-import org.activiti.engine.identity.Picture;
-import org.activiti.engine.identity.User;
-import org.activiti.engine.identity.UserQuery;
-import org.activiti.engine.impl.Page;
-import org.activiti.engine.impl.UserQueryImpl;
-import org.activiti.engine.impl.persistence.entity.GroupEntity;
-import org.activiti.engine.impl.persistence.entity.IdentityInfoEntity;
-import org.activiti.engine.impl.persistence.entity.UserEntity;
-import org.activiti.engine.impl.persistence.entity.UserIdentityManager;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class SyncopeUserManager implements UserIdentityManager, SyncopeSession {
-
-    @Autowired
-    private UserDAO userDAO;
-
-    @Autowired
-    private GroupDAO groupDAO;
-
-    @Override
-    public Class<?> getType() {
-        return UserIdentityManager.class;
-    }
-
-    @Override
-    public Boolean checkPassword(final String userKey, final String password) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public User createNewUser(final String userKey) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public UserQuery createNewUserQuery() {
-        return new SyncopeUserQueryImpl(userDAO, groupDAO);
-    }
-
-    @Override
-    public void deleteUser(final String userKey) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<Group> findGroupsByUser(final String username) {
-        List<Group> result = Collections.emptyList();
-        org.apache.syncope.core.persistence.api.entity.user.User user = userDAO.findByUsername(username);
-        if (user != null) {
-            result = new ArrayList<>();
-            for (String groupName : userDAO.findAllGroupNames(user)) {
-                result.add(new GroupEntity(groupName));
-            }
-        }
-
-        return result;
-    }
-
-    @Override
-    public UserEntity findUserById(final String username) {
-        UserEntity result = null;
-        org.apache.syncope.core.persistence.api.entity.user.User user = userDAO.findByUsername(username);
-        if (user != null) {
-            result = new UserEntity(username);
-        }
-
-        return result;
-    }
-
-    @Override
-    public void flush() {
-    }
-
-    @Override
-    public void close() {
-    }
-
-    @Override
-    public void insertUser(final User user) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isNewUser(final User user) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void updateUser(final User updatedUser) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Picture getUserPicture(final String string) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setUserPicture(final String string, final Picture pctr) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<User> findUserByQueryCriteria(final UserQueryImpl query, final Page page) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long findUserCountByQueryCriteria(final UserQueryImpl query) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public IdentityInfoEntity findUserInfoByUserIdAndKey(final String userKey, final String key) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<String> findUserInfoKeysByUserIdAndType(final String userKey, final String type) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<User> findPotentialStarterUsers(final String proceDefId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<User> findUsersByNativeQuery(final Map<String, Object> parameterMap,
-            final int firstResult, final int maxResults) {
-
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public long findUserCountByNativeQuery(final Map<String, Object> parameterMap) {
-        throw new UnsupportedOperationException();
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserQueryImpl.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserQueryImpl.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserQueryImpl.java
index 1e73f99..6e8f0c7c7 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserQueryImpl.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/SyncopeUserQueryImpl.java
@@ -21,186 +21,81 @@ package org.apache.syncope.core.workflow.flowable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.identity.User;
-import org.activiti.engine.identity.UserQuery;
-import org.activiti.engine.impl.persistence.entity.UserEntity;
-import org.apache.syncope.core.persistence.api.dao.AnyDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
+import org.flowable.idm.api.User;
+import org.flowable.idm.engine.impl.UserQueryImpl;
+import org.flowable.idm.engine.impl.persistence.entity.UserEntity;
+import org.flowable.idm.engine.impl.persistence.entity.UserEntityImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 
-public class SyncopeUserQueryImpl implements UserQuery {
+public class SyncopeUserQueryImpl extends UserQueryImpl {
 
-    private final UserDAO userDAO;
+    private static final long serialVersionUID = 4403344392227706318L;
 
-    private final GroupDAO groupDAO;
+    @Autowired
+    private UserDAO userDAO;
 
-    private String username;
-
-    private String memberOf;
+    @Autowired
+    private GroupDAO groupDAO;
 
     private List<User> result;
 
-    public SyncopeUserQueryImpl(final UserDAO userDAO, final GroupDAO groupDAO) {
-        this.userDAO = userDAO;
-        this.groupDAO = groupDAO;
-    }
-
-    @Override
-    public UserQuery userId(final String id) {
-        this.username = id;
-        return this;
-    }
-
-    @Override
-    public UserQuery userFirstName(final String firstName) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userFirstNameLike(final String firstNameLike) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userLastName(final String lastName) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userLastNameLike(final String lastNameLike) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userFullNameLike(final String fullNameLike) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userEmail(final String email) {
-        return this;
-    }
-
-    @Override
-    public UserQuery userEmailLike(final String emailLike) {
-        return this;
-    }
-
-    @Override
-    public UserQuery memberOfGroup(final String groupId) {
-        memberOf = groupId;
-        return this;
-    }
-
-    @Override
-    public UserQuery orderByUserId() {
-        return this;
-    }
-
-    @Override
-    public UserQuery orderByUserFirstName() {
-        return this;
-    }
-
-    @Override
-    public UserQuery orderByUserLastName() {
-        return this;
-    }
-
-    @Override
-    public UserQuery orderByUserEmail() {
-        return this;
-    }
-
-    @Override
-    public UserQuery asc() {
-        return this;
-    }
-
-    @Override
-    public UserQuery desc() {
-        return this;
-    }
-
-    private User fromSyncopeUser(final org.apache.syncope.core.persistence.api.entity.user.User user) {
-        return new UserEntity(user.getUsername());
+    private User fromSyncopeUser(final org.apache.syncope.core.persistence.api.entity.user.User syncopeUser) {
+        UserEntity user = new UserEntityImpl();
+        user.setId(syncopeUser.getUsername());
+        return user;
     }
 
     private void execute() {
-        if (username != null) {
-            org.apache.syncope.core.persistence.api.entity.user.User user = userDAO.findByUsername(username);
+        if (id != null) {
+            org.apache.syncope.core.persistence.api.entity.user.User user = userDAO.findByUsername(id);
             if (user == null) {
                 result = Collections.<User>emptyList();
-            } else if (memberOf == null || userDAO.findAllGroupNames(user).contains(memberOf)) {
+            } else if (groupId == null || userDAO.findAllGroupNames(user).contains(groupId)) {
                 result = Collections.singletonList(fromSyncopeUser(user));
             }
-        }
-        if (memberOf != null) {
-            Group group = groupDAO.findByName(memberOf);
+        } else if (groupId != null) {
+            Group group = groupDAO.findByName(groupId);
             if (group == null) {
                 result = Collections.<User>emptyList();
             } else {
                 result = new ArrayList<>();
                 List<UMembership> memberships = groupDAO.findUMemberships(group);
                 memberships.stream().map(membership -> fromSyncopeUser(membership.getLeftEnd())).
-                        filter((user) -> (!result.contains(user))).
-                        forEachOrdered((user) -> {
+                        filter(user -> (!result.contains(user))).
+                        forEachOrdered(user -> {
                             result.add(user);
                         });
             }
         }
-        // THIS CAN BE *VERY* DANGEROUS
-        if (result == null) {
-            result = new ArrayList<>();
-            for (int page = 1; page <= (userDAO.count() / AnyDAO.DEFAULT_PAGE_SIZE) + 1; page++) {
-                result.addAll(userDAO.findAll(page, AnyDAO.DEFAULT_PAGE_SIZE).stream().
-                        map(user -> fromSyncopeUser(user)).collect(Collectors.toList()));
-            }
-        }
     }
 
+    @Transactional(readOnly = true)
     @Override
     public long count() {
-        if (result == null) {
-            execute();
-        }
-        return result.size();
-    }
+        checkQueryOk();
 
-    @Override
-    public User singleResult() {
+        this.resultType = ResultType.COUNT;
         if (result == null) {
             execute();
         }
-        if (result.isEmpty()) {
-            throw new ActivitiException("Empty result");
-        }
-
-        return result.get(0);
+        return result.size();
     }
 
+    @Transactional(readOnly = true)
     @Override
     public List<User> list() {
-        if (result == null) {
-            execute();
-        }
-        return result;
-    }
+        checkQueryOk();
 
-    @Override
-    public List<User> listPage(final int firstResult, final int maxResults) {
+        this.resultType = ResultType.LIST;
         if (result == null) {
             execute();
         }
-        return result.subList(firstResult, firstResult + maxResults - 1);
+        return result;
     }
 
-    @Override
-    public UserQuery potentialStarter(final String string) {
-        throw new UnsupportedOperationException();
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngine.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngine.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngine.java
index c8e9141..92e9aff 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngine.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngine.java
@@ -21,18 +21,18 @@ package org.apache.syncope.core.workflow.flowable.spring;
 import java.util.Collections;
 import java.util.Map;
 import javax.sql.DataSource;
-import org.activiti.engine.DynamicBpmnService;
-import org.activiti.engine.FormService;
-import org.activiti.engine.HistoryService;
-import org.activiti.engine.IdentityService;
-import org.activiti.engine.ManagementService;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.ProcessEngineConfiguration;
-import org.activiti.engine.RepositoryService;
-import org.activiti.engine.RuntimeService;
-import org.activiti.engine.TaskService;
-import org.activiti.engine.impl.ProcessEngineImpl;
 import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.flowable.engine.DynamicBpmnService;
+import org.flowable.engine.FormService;
+import org.flowable.engine.HistoryService;
+import org.flowable.engine.IdentityService;
+import org.flowable.engine.ManagementService;
+import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.ProcessEngineConfiguration;
+import org.flowable.engine.RepositoryService;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
+import org.flowable.engine.impl.ProcessEngineImpl;
 
 /**
  * {@link ProcessEngine} delegating actual method invocation to the inner map of {@link ProcessEngine} instances,
@@ -57,9 +57,9 @@ public class DomainProcessEngine implements ProcessEngine {
 
     @Override
     public void close() {
-        for (ProcessEngine engine : engines.values()) {
+        engines.values().forEach(engine -> {
             engine.close();
-        }
+        });
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngineFactoryBean.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngineFactoryBean.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngineFactoryBean.java
index 620d6b9..fbd0f22 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngineFactoryBean.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/spring/DomainProcessEngineFactoryBean.java
@@ -21,11 +21,14 @@ package org.apache.syncope.core.workflow.flowable.spring;
 import java.util.HashMap;
 import java.util.Map;
 import javax.sql.DataSource;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.impl.cfg.SpringBeanFactoryProxyMap;
-import org.activiti.spring.SpringExpressionManager;
-import org.activiti.spring.SpringProcessEngineConfiguration;
 import org.apache.commons.lang3.StringUtils;
+import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.common.impl.cfg.SpringBeanFactoryProxyMap;
+import org.flowable.engine.common.impl.interceptor.EngineConfigurationConstants;
+import org.flowable.engine.impl.util.EngineServiceUtil;
+import org.flowable.idm.spring.SpringIdmEngineConfiguration;
+import org.flowable.spring.SpringExpressionManager;
+import org.flowable.spring.SpringProcessEngineConfiguration;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.DisposableBean;
 import org.springframework.beans.factory.FactoryBean;
@@ -54,29 +57,34 @@ public class DomainProcessEngineFactoryBean
         if (engine == null) {
             Map<String, ProcessEngine> engines = new HashMap<>();
 
-            for (Map.Entry<String, DataSource> entry : ctx.getBeansOfType(DataSource.class).entrySet()) {
-                if (!entry.getKey().startsWith("local")) {
-                    String domain = StringUtils.substringBefore(entry.getKey(), DataSource.class.getSimpleName());
-                    DataSource dataSource = entry.getValue();
-                    PlatformTransactionManager transactionManager = ctx.getBean(
-                            domain + "TransactionManager", PlatformTransactionManager.class);
-                    Object entityManagerFactory = ctx.getBean(domain + "EntityManagerFactory");
+            ctx.getBeansOfType(DataSource.class).entrySet().stream().
+                    filter(entry -> (!entry.getKey().startsWith("local"))).
+                    forEachOrdered(entry -> {
+                        String domain = StringUtils.substringBefore(entry.getKey(), DataSource.class.getSimpleName());
+                        DataSource dataSource = entry.getValue();
+                        PlatformTransactionManager transactionManager = ctx.getBean(
+                                domain + "TransactionManager", PlatformTransactionManager.class);
+                        Object entityManagerFactory = ctx.getBean(domain + "EntityManagerFactory");
 
-                    SpringProcessEngineConfiguration conf = ctx.getBean(SpringProcessEngineConfiguration.class);
-                    conf.setDataSource(dataSource);
-                    conf.setTransactionManager(transactionManager);
-                    conf.setTransactionsExternallyManaged(true);
-                    conf.setJpaEntityManagerFactory(entityManagerFactory);
-                    if (conf.getBeans() == null) {
-                        conf.setBeans(new SpringBeanFactoryProxyMap(ctx));
-                    }
-                    if (conf.getExpressionManager() == null) {
-                        conf.setExpressionManager(new SpringExpressionManager(ctx, conf.getBeans()));
-                    }
+                        SpringProcessEngineConfiguration conf = ctx.getBean(SpringProcessEngineConfiguration.class);
+                        conf.setDataSource(dataSource);
+                        conf.setTransactionManager(transactionManager);
+                        conf.setTransactionsExternallyManaged(true);
+                        conf.setJpaEntityManagerFactory(entityManagerFactory);
+                        if (conf.getBeans() == null) {
+                            conf.setBeans(new SpringBeanFactoryProxyMap(ctx));
+                        }
+                        if (conf.getExpressionManager() == null) {
+                            conf.setExpressionManager(new SpringExpressionManager(ctx, conf.getBeans()));
+                        }
+                        if (EngineServiceUtil.getIdmEngineConfiguration(conf) == null) {
+                            conf.addEngineConfiguration(
+                                    EngineConfigurationConstants.KEY_IDM_ENGINE_CONFIG,
+                                    ctx.getBean(SpringIdmEngineConfiguration.class));
+                        }
 
-                    engines.put(domain, conf.buildProcessEngine());
-                }
-            }
+                        engines.put(domain, conf.buildProcessEngine());
+                    });
 
             engine = new DomainProcessEngine(engines);
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/AbstractFlowableServiceTask.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/AbstractFlowableServiceTask.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/AbstractFlowableServiceTask.java
index c3a5ba1..b9f87ca 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/AbstractFlowableServiceTask.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/task/AbstractFlowableServiceTask.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.core.workflow.flowable.task;
 
-import org.activiti.engine.ProcessEngine;
+import org.flowable.engine.ProcessEngine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/resources/workflow.properties
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/resources/workflow.properties b/core/workflow-flowable/src/main/resources/workflow.properties
index 50c42fc..36af01c 100644
--- a/core/workflow-flowable/src/main/resources/workflow.properties
+++ b/core/workflow-flowable/src/main/resources/workflow.properties
@@ -16,7 +16,6 @@
 # under the License.
 wf.directory=${conf.directory}
 historyLevel=activity
-jobExecutorActivate=true
 uwfAdapter=org.apache.syncope.core.workflow.flowable.FlowableUserWorkflowAdapter
 gwfAdapter=org.apache.syncope.core.workflow.java.DefaultGroupWorkflowAdapter
 awfAdapter=org.apache.syncope.core.workflow.java.DefaultAnyObjectWorkflowAdapter

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/core/workflow-flowable/src/main/resources/workflowFlowableContext.xml
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/resources/workflowFlowableContext.xml b/core/workflow-flowable/src/main/resources/workflowFlowableContext.xml
index 517b8d7..aed5e2e 100644
--- a/core/workflow-flowable/src/main/resources/workflowFlowableContext.xml
+++ b/core/workflow-flowable/src/main/resources/workflowFlowableContext.xml
@@ -32,29 +32,23 @@ under the License.
 
   <bean id="flowableUtils" class="org.apache.syncope.core.workflow.flowable.FlowableUtils"/>
 
-  <bean id="syncopeFlowableUserManager" class="org.apache.syncope.core.workflow.flowable.SyncopeUserManager"/>
-  <bean id="syncopeFlowableGroupManager" class="org.apache.syncope.core.workflow.flowable.SyncopeGroupManager"/>
-
-  <bean class="org.activiti.spring.SpringProcessEngineConfiguration" scope="prototype">
-    <property name="transactionsExternallyManaged" value="true"/>
+  <bean id="syncopeIdmIdentityService" class="org.apache.syncope.core.workflow.flowable.SyncopeIdmIdentityService"/>
+  <bean id="syncopeIdmEngineConfiguration" class="org.flowable.idm.spring.SpringIdmEngineConfiguration">
+    <property name="idmIdentityService" ref="syncopeIdmIdentityService"/> 
+  </bean>
+  <bean id="syncopeIdmEngineConfigurator" class="org.flowable.spring.configurator.SpringIdmEngineConfigurator">
+    <property name="idmEngineConfiguration" ref="syncopeIdmEngineConfiguration"/> 
+  </bean>
+  
+  <bean class="org.flowable.spring.SpringProcessEngineConfiguration" scope="prototype">
     <property name="databaseSchemaUpdate" value="true"/>
 
     <property name="jpaHandleTransaction" value="true"/>
     <property name="jpaCloseEntityManager" value="false"/>
 
     <property name="history" value="${historyLevel}"/>
-    <property name="jobExecutorActivate" value="${jobExecutorActivate}"/>
 
-    <property name="customSessionFactories">
-      <list>
-        <bean class="org.apache.syncope.core.workflow.flowable.SyncopeSessionFactory">
-          <property name="syncopeSession" ref="syncopeFlowableUserManager"/>
-        </bean>
-        <bean class="org.apache.syncope.core.workflow.flowable.SyncopeSessionFactory">
-          <property name="syncopeSession" ref="syncopeFlowableGroupManager"/>
-        </bean>
-      </list>
-    </property>
+    <property name="idmProcessEngineConfigurator" ref="syncopeIdmEngineConfigurator"/>
     <property name="customPreVariableTypes">
       <list>
         <bean class="org.apache.syncope.core.workflow.flowable.SyncopeEntitiesVariableType"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index f46136e..2c64c2d 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -111,7 +111,7 @@ under the License.
     </dependency>
     <dependency>
       <groupId>org.flowable</groupId>
-      <artifactId>flowable-webapp-explorer2</artifactId>
+      <artifactId>flowable-ui-modeler-app</artifactId>
       <type>war</type>
       <scope>test</scope>
     </dependency>
@@ -144,34 +144,25 @@ under the License.
             <phase>process-resources</phase>
             <configuration>
               <target>
-                <unzip src="${settings.localRepository}/org/flowable/flowable-webapp-explorer2/${flowable.version}/flowable-webapp-explorer2-${flowable.version}.war" 
-                       dest="${project.build.directory}/flowable-webapp-explorer2"/>
+                <unzip src="${settings.localRepository}/org/flowable/flowable-ui-modeler-app/${flowable.version}/flowable-ui-modeler-app-${flowable.version}.war" 
+                       dest="${flowable-modeler.directory}"/>
                 
-                <mkdir dir="${flowable-modeler.directory}"/>
-                <copy file="${project.build.directory}/flowable-webapp-explorer2/modeler.html" 
-                      todir="${flowable-modeler.directory}"/>
-                <replace file="${flowable-modeler.directory}/modeler.html"
+                <replace file="${flowable-modeler.directory}/index.html"
                          token="&lt;/head&gt;"
                          value="&lt;script type=&quot;text/javascript&quot;&gt;window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); }&lt;/script&gt;&lt;/head&gt;"/>
-                <copy file="${project.build.directory}/flowable-webapp-explorer2/WEB-INF/classes/stencilset.json" 
-                      todir="${flowable-modeler.directory}"/>
-
-                <mkdir dir="${flowable-modeler.directory}/editor-app"/>
-                <copy todir="${flowable-modeler.directory}/editor-app">
-                  <fileset dir="${project.build.directory}/flowable-webapp-explorer2/editor-app"/>                  
-                </copy>
-                <replace file="${flowable-modeler.directory}/editor-app/editor/oryx.debug.js"
-                         token="return this.changeDifference !== 0 || (this.facade.getModelMetaData()['new'] &amp;&amp; this.facade.getCanvas().getChildShapes().size() &gt; 0);"
-                         value="return this.changeDifference !== 0 
-              || (typeof this.facade.getModelMetaData() != 'undefined' 
-              &amp;&amp; this.facade.getModelMetaData()['new'] &amp;&amp; this.facade.getCanvas().getChildShapes().size() &gt; 0);"/>
                 <replace file="${flowable-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
-                         token="window.location.href = &quot;./&quot;;"
+                         token="$location.path('/processes');"
                          value="window.close();"/>
-                                               
+
+                <copy file="${basedir}/src/main/resources/app-cfg.js" 
+                      todir="${flowable-modeler.directory}/scripts"
+                      overwrite="true"/>
                 <copy file="${basedir}/src/main/resources/url-config.js" 
                       todir="${flowable-modeler.directory}/editor-app/configuration"
                       overwrite="true"/>
+                <copy file="${basedir}/src/main/resources/stencilset.json" 
+                      todir="${flowable-modeler.directory}"
+                      overwrite="true"/>
                 <copy file="${basedir}/src/main/resources/save-model.html" 
                       todir="${flowable-modeler.directory}/editor-app/popups"
                       overwrite="true"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/console-reference/src/main/resources/app-cfg.js
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/app-cfg.js b/fit/console-reference/src/main/resources/app-cfg.js
new file mode 100644
index 0000000..ec812b4
--- /dev/null
+++ b/fit/console-reference/src/main/resources/app-cfg.js
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+'use strict';
+
+var FLOWABLE = FLOWABLE || {};
+
+FLOWABLE.CONFIG = {
+  'onPremise': true,
+  'contextRoot': window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler')),
+  'webContextRoot': window.location.toString().substr(0, window.location.toString().indexOf('/flowable-modeler')),
+  'datesLocalization': false
+};

http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/console-reference/src/main/resources/save-model.html
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/save-model.html b/fit/console-reference/src/main/resources/save-model.html
index 4c6173d..abd5ecf 100644
--- a/fit/console-reference/src/main/resources/save-model.html
+++ b/fit/console-reference/src/main/resources/save-model.html
@@ -23,28 +23,101 @@ under the License.
         <h2>{{'MODEL.SAVE.TITLE'| translate}}</h2>
       </div>
       <div class="modal-body">
-
+        <div ng-if="saveDialog.errorMessage && saveDialog.errorMessage.length > 0" class="alert error" style="font-size: 14px; margin-top:20px">
+          <div class="popup-error" style="font-size: 14px">
+            <span class="glyphicon glyphicon-remove-circle"></span>
+            <span>{{saveDialog.errorMessage}}</span>
+          </div>
+        </div>
         <div class="form-group">
           <label for="nameField">{{'MODEL.NAME'| translate}}</label>
           <input type="text"
-                 ng-disabled="status.loading"
+                 ng-disabled="status.loading || (error && error.conflictResolveAction == 'saveAs')"
                  id="nameField"
                  class="form-control"
-                 ng-model="saveDialog.name"
-                 ui-keypress="{13:'save()'}"
-                 auto-focus readonly/>
+                 ng-model="saveDialog.name" readonly="readonly"
+                 auto-focus />
         </div>
-        <div class="form-group">
+        <div class="form-group" style="display: none">
+          <label for="keyField">{{'MODEL.KEY'| translate}}</label>
+          <input type="text"
+                 ng-disabled="status.loading || (error && error.conflictResolveAction == 'saveAs')"
+                 id="keyField"
+                 class="form-control"
+                 ng-model="saveDialog.key" ng-init="saveDialog.key = saveDialog.name"/>
+        </div>
+        <div class="form-group" style="display: none">
           <label for="docTextArea">{{'MODEL.DESCRIPTION'| translate}}</label>
-          <textarea id="docTextArea" ng-disabled="status.loading" class="form-control" 
-                    ng-model="saveDialog.description" readonly></textarea>
+          <textarea id="docTextArea" ng-disabled="status.loading" class="form-control" ng-model="saveDialog.description"></textarea>
+        </div>
+        <div class="checkbox" ng-show="!error && !error.isConflict" style="display: none">
+          <label>
+            <input type="checkbox" ng-disabled="status.loading" ng-model="saveDialog.newVersion" >
+            {{'MODEL.SAVE.NEWVERSION'| translate}}
+          </label>
+        </div>
+        <div class="form-group" ng-if="saveDialog.newVersion">
+          <label for="commentTextArea">{{'MODEL.SAVE.COMMENT'| translate}}</label>
+          <textarea id="commentTextArea" class="form-control" ng-model="saveDialog.comment" ng-disabled="status.loading"></textarea>
         </div>
+
+        <div ng-if="saveDialog.validationErrors" class="alert error" style="font-size: 14px; margin-top:20px">
+
+          <div class="popup-error" style="font-size: 14px">
+            <span class="glyphicon glyphicon-remove-circle"></span>
+            <span>{{'MODEL.VALIDATIONERRORS'| translate:error}}</span>
+          </div>
+        </div>
+
+        <div ng-if="error && error.isConflict && !status.loading" class="alert error" style="font-size: 14px; margin-top:20px">
+
+          <div class="popup-error" style="font-size: 14px">
+            <span class="glyphicon glyphicon-remove-circle"></span>
+            <span>{{'MODEL.CONFLICT.WRITE'| translate:error}}</span>
+          </div>
+
+          <div>
+
+            <div style="font-size: 14px; margin-bottom: 10px">{{'MODEL.CONFLICT.WRITE.OPTIONS'| translate}}</div>
+            <div class="btn-group" data-toggle="buttons">
+              <label class="btn btn-danger"
+                     ng-click="error.conflictResolveAction = 'overwrite'">
+                <input type="radio" name="options" id="option1">
+                {{'MODEL.CONFLICT.WRITE.OPTION.OVERWRITE'| translate}}
+              </label>
+              <label class="btn btn-danger"
+                     ng-click="error.conflictResolveAction = 'discardChanges'">
+                <input type="radio" name="options" id="option2">
+                {{'MODEL.CONFLICT.WRITE.OPTION.DISCARDCHANGES'| translate}}
+              </label>
+              <label class="btn btn-danger"
+                     ng-click="error.conflictResolveAction = 'saveAs'">
+                <input type="radio" name="options" id="option3" ng-disabled="account.type != 'enterprise'">
+                {{'MODEL.CONFLICT.WRITE.OPTION.SAVEAS'| translate}}
+              </label>
+              <label class="btn btn-danger"
+                     ng-click="error.conflictResolveAction = 'newVersion'">
+                <input type="radio" name="options" id="optio43">
+                {{'MODEL.CONFLICT.WRITE.OPTION.NEWVERSION'| translate}}
+              </label>
+            </div>
+
+            <div ng-if="error.conflictResolveAction == 'saveAs'" style="margin-top: 10px">
+              <span>{{'MODEL.CONFLICT.SAVEAS'| translate}}</span>
+              <input type="text" ng-model="error.saveAs" style="width: 300px" auto-focus>
+            </div>
+          </div>
+
+        </div>
+
       </div>
       <div class="modal-footer">
 
         <div class="pull-right">
           <button type="button" class="btn" ng-click="close()" ng-disabled="status.loading" translate>ACTION.CANCEL</button>
-          <button class="btn btn-primary" ng-click="saveAndClose()" ng-disabled="status.loading" ng-show="!error" translate>ACTION.SAVE-AND-CLOSE</button>
+          <button class="btn btn-primary" ng-click="saveAndClose()" ng-disabled="status.loading || saveDialog.name.length == 0 || saveDialog.key.length == 0" ng-show="!error && !error.isConflict" translate>ACTION.SAVE-AND-CLOSE</button>
+          <button class="btn btn-primary" ng-click="save()" ng-disabled="status.loading || saveDialog.name.length == 0 || saveDialog.key.length == 0" ng-show="!error && !error.isConflict" style="display: none" translate>ACTION.SAVE</button>
+          <button class="btn btn-primary" ng-click="okClicked()" ng-disabled="isOkButtonDisabled()" ng-show="error && error.isConflict" translate>ACTION.OK</button>
         </div>
 
         <div class="pull-right popup-error" ng-if="error && !error.isConflict">
@@ -56,4 +129,4 @@ under the License.
       </div>
     </div>
   </div>
-</div>
\ No newline at end of file
+</div>


[2/3] syncope git commit: [SYNCOPE-1054] Now migrated to Flowable 6.1

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/f27e1bb4/fit/console-reference/src/main/resources/stencilset.json
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/stencilset.json b/fit/console-reference/src/main/resources/stencilset.json
new file mode 100644
index 0000000..b8e703d
--- /dev/null
+++ b/fit/console-reference/src/main/resources/stencilset.json
@@ -0,0 +1,1627 @@
+{
+  "title" : "Process editor",
+  "namespace" : "http://b3mn.org/stencilset/bpmn2.0#",
+  "description" : "BPMN process editor",
+  "propertyPackages" : [ {
+    "name" : "process_idpackage",
+    "properties" : [ {
+      "id" : "process_id",
+      "type" : "String",
+      "title" : "Process identifier",
+      "value" : "process",
+      "description" : "Unique identifier of the process definition.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "overrideidpackage",
+    "properties" : [ {
+      "id" : "overrideid",
+      "type" : "String",
+      "title" : "Id",
+      "value" : "",
+      "description" : "Unique identifier of the element.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "namepackage",
+    "properties" : [ {
+      "id" : "name",
+      "type" : "String",
+      "title" : "Name",
+      "value" : "",
+      "description" : "The descriptive name of the BPMN element.",
+      "popular" : true,
+      "refToView" : "text_name"
+    } ]
+  }, {
+    "name" : "documentationpackage",
+    "properties" : [ {
+      "id" : "documentation",
+      "type" : "Text",
+      "title" : "Documentation",
+      "value" : "",
+      "description" : "The descriptive name of the BPMN element.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "process_authorpackage",
+    "properties" : [ {
+      "id" : "process_author",
+      "type" : "String",
+      "title" : "Process author",
+      "value" : "",
+      "description" : "Author of the process definition.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "process_versionpackage",
+    "properties" : [ {
+      "id" : "process_version",
+      "type" : "String",
+      "title" : "Process version string (documentation only)",
+      "value" : "",
+      "description" : "Version identifier for documentation purpose.",
+      "popular" : true
+    } ]
+  }, {
+	"name" : "process_potentialstarteruserpackage",
+	"properties" : [ {
+		"id" : "process_potentialstarteruser",
+		"type" : "String",
+		"title" : "Potential starter user",
+		"value" : "",
+		"description" : "Which user, can start the process?",
+		"popular" : true
+		} ]
+  }, {
+	"name" : "process_potentialstartergrouppackage",
+	"properties" : [ {
+		"id" : "process_potentialstartergroup",
+		"type" : "String",
+		"title" : "Potential starter group",
+		"value" : "",
+		"description" : "Which group, can start the process?",
+		"popular" : true
+	} ]
+  }, {
+    "name" : "process_namespacepackage",
+    "properties" : [ {
+      "id" : "process_namespace",
+      "type" : "String",
+      "title" : "Target namespace",
+      "value" : "http://www.flowable.org/processdef",
+      "description" : "Target namespace for the process definition.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "asynchronousdefinitionpackage",
+    "properties" : [ {
+      "id" : "asynchronousdefinition",
+      "type" : "Boolean",
+      "title" : "Asynchronous",
+      "value" : "false",
+      "description" : "Define the activity as asynchronous.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "exclusivedefinitionpackage",
+    "properties" : [ {
+      "id" : "exclusivedefinition",
+      "type" : "Boolean",
+      "title" : "Exclusive",
+      "value" : "false",
+      "description" : "Define the activity as exclusive.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "executionlistenerspackage",
+    "properties" : [ {
+      "id" : "executionlisteners",
+      "type" : "multiplecomplex",
+      "title" : "Execution listeners",
+      "value" : "",
+      "description" : "Listeners for an activity, process, sequence flow, start and end event.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "tasklistenerspackage",
+    "properties" : [ {
+      "id" : "tasklisteners",
+      "type" : "multiplecomplex",
+      "title" : "Task listeners",
+      "value" : "",
+      "description" : "Listeners for a user task",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "eventlistenerspackage",
+    "properties" : [ {
+      "id" : "eventlisteners",
+      "type" : "multiplecomplex",
+      "title" : "Event listeners",
+      "value" : "",
+      "description" : "Listeners for any event happening in the Flowable Engine. It's also possible to rethrow the event as a signal, message or error event",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "usertaskassignmentpackage",
+    "properties" : [ {
+      "id" : "usertaskassignment",
+      "type" : "Complex",
+      "title" : "Assignments",
+      "value" : "",
+      "description" : "Assignment definition for the user task",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "formpropertiespackage",
+    "properties" : [ {
+      "id" : "formproperties",
+      "type" : "Complex",
+      "title" : "Form properties",
+      "value" : "",
+      "description" : "Definition of the form with a list of form properties",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "formkeydefinitionpackage",
+    "properties" : [ {
+      "id" : "formkeydefinition",
+      "type" : "String",
+      "title" : "Form key",
+      "value" : "",
+      "description" : "Form key that provides a reference to a form.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "duedatedefinitionpackage",
+    "properties" : [ {
+      "id" : "duedatedefinition",
+      "type" : "String",
+      "title" : "Due date",
+      "value" : "",
+      "description" : "Due date of the user task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "prioritydefinitionpackage",
+    "properties" : [ {
+      "id" : "prioritydefinition",
+      "type" : "String",
+      "title" : "Priority",
+      "value" : "",
+      "description" : "Priority of the user task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "duedatedefinitionpackage",
+    "properties" : [ {
+      "id" : "duedatedefinition",
+      "type" : "String",
+      "title" : "Due date",
+      "value" : "",
+      "description" : "Due date of the user task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "servicetaskclasspackage",
+    "properties" : [ {
+      "id" : "servicetaskclass",
+      "type" : "String",
+      "title" : "Class",
+      "value" : "",
+      "description" : "Class that implements the service task logic.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "servicetaskexpressionpackage",
+    "properties" : [ {
+      "id" : "servicetaskexpression",
+      "type" : "Text",
+      "title" : "Expression",
+      "value" : "",
+      "description" : "Service task logic defined with an expression.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "servicetaskdelegateexpressionpackage",
+    "properties" : [ {
+      "id" : "servicetaskdelegateexpression",
+      "type" : "Text",
+      "title" : "Delegate expression",
+      "value" : "",
+      "description" : "Service task logic defined with a delegate expression.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "servicetaskfieldspackage",
+    "properties" : [ {
+      "id" : "servicetaskfields",
+      "type" : "Complex",
+      "title" : "Class fields",
+      "value" : "",
+      "description" : "Field extensions",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "servicetaskresultvariablepackage",
+    "properties" : [ {
+      "id" : "servicetaskresultvariable",
+      "type" : "String",
+      "title" : "Result variable name",
+      "value" : "",
+      "description" : "Process variable name to store the service task result.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "scriptformatpackage",
+    "properties" : [ {
+      "id" : "scriptformat",
+      "type" : "String",
+      "title" : "Script format",
+      "value" : "",
+      "description" : "Script format of the script task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "scripttextpackage",
+    "properties" : [ {
+      "id" : "scripttext",
+      "type" : "Text",
+      "title" : "Script",
+      "value" : "",
+      "description" : "Script text of the script task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "ruletask_rulespackage",
+    "properties" : [ {
+      "id" : "ruletask_rules",
+      "type" : "String",
+      "title" : "Rules",
+      "value" : "",
+      "description" : "Rules of the rule task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "ruletask_variables_inputpackage",
+    "properties" : [ {
+      "id" : "ruletask_variables_input",
+      "type" : "String",
+      "title" : "Input variables",
+      "value" : "",
+      "description" : "Input variables of the rule task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "ruletask_excludepackage",
+    "properties" : [ {
+      "id" : "ruletask_exclude",
+      "type" : "Boolean",
+      "title" : "Exclude",
+      "value" : "false",
+      "description" : "Use the rules property as exclusion.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "ruletask_resultpackage",
+    "properties" : [ {
+      "id" : "ruletask_result",
+      "type" : "String",
+      "title" : "Result variable",
+      "value" : "",
+      "description" : "Result variable of the rule task.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtasktopackage",
+    "properties" : [ {
+      "id" : "mailtaskto",
+      "type" : "Text",
+      "title" : "To",
+      "value" : "",
+      "description" : "The recipients if the e-mail. Multiple recipients are defined in a comma-separated list.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtaskfrompackage",
+    "properties" : [ {
+      "id" : "mailtaskfrom",
+      "type" : "Text",
+      "title" : "From",
+      "value" : "",
+      "description" : "The sender e-mail address. If not provided, the default configured from address is used.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtasksubjectpackage",
+    "properties" : [ {
+      "id" : "mailtasksubject",
+      "type" : "Text",
+      "title" : "Subject",
+      "value" : "",
+      "description" : "The subject of the e-mail.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtaskccpackage",
+    "properties" : [ {
+      "id" : "mailtaskcc",
+      "type" : "Text",
+      "title" : "Cc",
+      "value" : "",
+      "description" : "The cc's of the e-mail. Multiple recipients are defined in a comma-separated list",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtaskbccpackage",
+    "properties" : [ {
+      "id" : "mailtaskbcc",
+      "type" : "Text",
+      "title" : "Bcc",
+      "value" : "",
+      "description" : "The bcc's of the e-mail. Multiple recipients are defined in a comma-separated list",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtasktextpackage",
+    "properties" : [ {
+      "id" : "mailtasktext",
+      "type" : "Text",
+      "title" : "Text",
+      "value" : "",
+      "description" : "The content of the e-mail, in case one needs to send plain none-rich e-mails. Can be used in combination with html, for e-mail clients that don't support rich content. The client will then fall back to this text-only alternative.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtaskhtmlpackage",
+    "properties" : [ {
+      "id" : "mailtaskhtml",
+      "type" : "Text",
+      "title" : "Html",
+      "value" : "",
+      "description" : "A piece of HTML that is the content of the e-mail.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "mailtaskcharsetpackage",
+    "properties" : [ {
+      "id" : "mailtaskcharset",
+      "type" : "String",
+      "title" : "Charset",
+      "value" : "",
+      "description" : "Allows to change the charset of the email, which is necessary for many non-English languages. ",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskrequestmethodpackage",
+    "properties" : [ {
+      "id" : "httptaskrequestmethod",
+      "type" : "String",
+      "title" : "Request method",
+      "value" : "",
+      "description" : "Request method (For example - GET,POST,PUT etc).",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskrequesturlpackage",
+    "properties" : [ {
+      "id" : "httptaskrequesturl",
+      "type" : "Text",
+      "title" : "Request URL",
+      "value" : "",
+      "description" : "Request URL (For example - http://flowable.org).",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskrequestheaderspackage",
+    "properties" : [ {
+      "id" : "httptaskrequestheaders",
+      "type" : "Text",
+      "title" : "Request headers",
+      "value" : "",
+      "description" : "Line separated HTTP request headers (For example - Content-Type: application/json).",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskrequestbodypackage",
+    "properties" : [ {
+      "id" : "httptaskrequestbody",
+      "type" : "Text",
+      "title" : "Request body",
+      "value" : "",
+      "description" : "Request body (For example- ${sampleBody}).",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskrequesttimeoutpackage",
+    "properties" : [ {
+      "id" : "httptaskrequesttimeout",
+      "type" : "String",
+      "title" : "Request timeout",
+      "value" : "",
+      "description" : "Timeout in milliseconds for the request (For example - 5000).",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskdisallowredirectspackage",
+    "properties" : [ {
+      "id" : "httptaskdisallowredirects",
+      "type" : "String",
+      "title" : "Disallow redirects",
+      "value" : "",
+      "description" : "Flag to disallow HTTP redirects.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskfailstatuscodespackage",
+    "properties" : [ {
+      "id" : "httptaskfailstatuscodes",
+      "type" : "String",
+      "title" : "Fail status codes",
+      "value" : "",
+      "description" : "Comma separated list of HTTP response status codes to retry, for example 400,5XX.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskhandlestatuscodespackage",
+    "properties" : [ {
+      "id" : "httptaskhandlestatuscodes",
+      "type" : "String",
+      "title" : "Handle status codes",
+      "value" : "",
+      "description" : "Comma separated list of HTTP response status codes to ignore, for example 404,3XX.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskignoreexceptionpackage",
+    "properties" : [ {
+      "id" : "httptaskignoreexception",
+      "type" : "String",
+      "title" : "Ignore exception",
+      "value" : "",
+      "description" : "Flag to ignore exceptions.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskresponsevariablenamepackage",
+    "properties" : [ {
+      "id" : "httptaskresponsevariablename",
+      "type" : "String",
+      "title" : "Response variable name",
+      "value" : "",
+      "description" : "Define the variable name to store the http response.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptasksaverequestvariablespackage",
+    "properties" : [ {
+      "id" : "httptasksaverequestvariables",
+      "type" : "String",
+      "title" : "Save request variables",
+      "value" : "",
+      "description" : "Flag to save request variables.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptasksaveresponseparameterspackage",
+    "properties" : [ {
+      "id" : "httptasksaveresponseparameters",
+      "type" : "String",
+      "title" : "Save response status, headers",
+      "value" : "",
+      "description" : "Flag to save response status, headers etc.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "httptaskresultvariableprefixpackage",
+    "properties" : [ {
+      "id" : "httptaskresultvariableprefix",
+      "type" : "String",
+      "title" : "Result variable prefix",
+      "value" : "",
+      "description" : "Prefix for the execution variable names.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivitycalledelementpackage",
+    "properties" : [ {
+      "id" : "callactivitycalledelement",
+      "type" : "String",
+      "title" : "Called element",
+      "value" : "",
+      "description" : "Process reference.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivityinparameterspackage",
+    "properties" : [ {
+      "id" : "callactivityinparameters",
+      "type" : "Complex",
+      "title" : "In parameters",
+      "value" : "",
+      "description" : "Definition of the input parameters",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivityoutparameterspackage",
+    "properties" : [ {
+      "id" : "callactivityoutparameters",
+      "type" : "Complex",
+      "title" : "Out parameters",
+      "value" : "",
+      "description" : "Definition of the output parameters",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivityinheritvariablespackage",
+    "properties" : [ {
+      "id" : "callactivityinheritvariables",
+      "type" : "Boolean",
+      "title" : "Inherit variables in sub process",
+      "value" : "false",
+      "description" : "Inherit parent process variables in the sub process.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivityinheritbusinesskeypackage",
+    "properties" : [ {
+      "id" : "callactivityinheritbusinesskey",
+      "type" : "Boolean",
+      "title" : "Inherit business key",
+      "value" : "false",
+      "description" : "Inherit the business key from the parent process.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "callactivityuselocalscopeforoutparameterspackage",
+    "properties" : [ {
+      "id" : "callactivityuselocalscopeforoutparameters",
+      "type" : "Boolean",
+      "title" : "Use local scope for out parameters",
+      "value" : "false",
+      "description" : "Use local variable scope for out parameters.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "cameltaskcamelcontextpackage",
+    "properties" : [ {
+      "id" : "cameltaskcamelcontext",
+      "type" : "String",
+      "title" : "Camel context",
+      "value" : "",
+      "description" : "An optional camel context definition, if left empty the default is used.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "muletaskendpointurlpackage",
+    "properties" : [ {
+      "id" : "muletaskendpointurl",
+      "type" : "String",
+      "title" : "Endpoint url",
+      "value" : "",
+      "description" : "A required endpoint url to sent the message to Mule.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "muletasklanguagepackage",
+    "properties" : [ {
+      "id" : "muletasklanguage",
+      "type" : "String",
+      "title" : "Language",
+      "value" : "",
+      "description" : "A required definition for the language to resolve the payload expression, like juel.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "muletaskpayloadexpressionpackage",
+    "properties" : [ {
+      "id" : "muletaskpayloadexpression",
+      "type" : "Text",
+      "title" : "Payload expression",
+      "value" : "",
+      "description" : "A required definition for the payload of the message sent to Mule.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "muletaskresultvariablepackage",
+    "properties" : [ {
+      "id" : "muletaskresultvariable",
+      "type" : "String",
+      "title" : "Result variable",
+      "value" : "",
+      "description" : "An optional result variable for the payload returned.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "conditionsequenceflowpackage",
+    "properties" : [ {
+      "id" : "conditionsequenceflow",
+      "type" : "Complex",
+      "title" : "Flow condition",
+      "value" : "",
+      "description" : "The condition of the sequence flow",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "defaultflowpackage",
+    "properties" : [ {
+      "id" : "defaultflow",
+      "type" : "Boolean",
+      "title" : "Default flow",
+      "value" : "false",
+      "description" : "Define the sequence flow as default",
+      "popular" : true,
+      "refToView" : "default"
+    } ]
+  }, {
+    "name" : "conditionalflowpackage",
+    "properties" : [ {
+      "id" : "conditionalflow",
+      "type" : "Boolean",
+      "title" : "Conditional flow",
+      "value" : "false",
+      "description" : "Define the sequence flow with a condition",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "timercycledefinitionpackage",
+    "properties" : [ {
+      "id" : "timercycledefinition",
+      "type" : "String",
+      "title" : "Time cycle (e.g. R3/PT10H)",
+      "value" : "",
+      "description" : "Define the timer with a ISO-8601 cycle.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "timerdatedefinitionpackage",
+    "properties" : [ {
+      "id" : "timerdatedefinition",
+      "type" : "String",
+      "title" : "Time date in ISO-8601",
+      "value" : "",
+      "description" : "Define the timer with a ISO-8601 date definition.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "timerdurationdefinitionpackage",
+    "properties" : [ {
+      "id" : "timerdurationdefinition",
+      "type" : "String",
+      "title" : "Time duration (e.g. PT5M)",
+      "value" : "",
+      "description" : "Define the timer with a ISO-8601 duration.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "timerenddatedefinitionpackage",
+    "properties" : [ {
+      "id" : "timerenddatedefinition",
+      "type" : "String",
+      "title" : "Time End Date in ISO-8601",
+      "value" : "",
+      "description" : "Define the timer with a ISO-8601 duration.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "messagerefpackage",
+    "properties" : [ {
+      "id" : "messageref",
+      "type" : "String",
+      "title" : "Message reference",
+      "value" : "",
+      "description" : "Define the message name.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "signalrefpackage",
+    "properties" : [ {
+      "id" : "signalref",
+      "type" : "String",
+      "title" : "Signal reference",
+      "value" : "",
+      "description" : "Define the signal name.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "errorrefpackage",
+    "properties" : [ {
+      "id" : "errorref",
+      "type" : "String",
+      "title" : "Error reference",
+      "value" : "",
+      "description" : "Define the error name.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "cancelactivitypackage",
+    "properties" : [ {
+      "id" : "cancelactivity",
+      "type" : "Boolean",
+      "title" : "Cancel activity",
+      "value" : "true",
+      "description" : "Should the activity be cancelled",
+      "popular" : true,
+      "refToView" : [ "frame", "frame2" ]
+    } ]
+  }, {
+    "name" : "initiatorpackage",
+    "properties" : [ {
+      "id" : "initiator",
+      "type" : "String",
+      "title" : "Initiator",
+      "value" : "",
+      "description" : "Initiator of the process.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "textpackage",
+    "properties" : [ {
+      "id" : "text",
+      "type" : "String",
+      "title" : "Text",
+      "value" : "",
+      "description" : "The text of the text annotation.",
+      "popular" : true,
+      "refToView" : "text"
+    } ]
+  }, {
+    "name" : "multiinstance_typepackage",
+    "properties" : [ {
+      "id" : "multiinstance_type",
+      "type" : "flowable-multiinstance",
+      "title" : "Multi-instance type",
+      "value" : "None",
+      "description" : "Repeated activity execution (parallel or sequential) can be displayed through different loop types",
+      "popular" : true,
+      "refToView" : "multiinstance"
+    } ]
+  }, {
+    "name" : "multiinstance_cardinalitypackage",
+    "properties" : [ {
+      "id" : "multiinstance_cardinality",
+      "type" : "String",
+      "title" : "Cardinality (Multi-instance)",
+      "value" : "",
+      "description" : "Define the cardinality of multi instance.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "multiinstance_collectionpackage",
+    "properties" : [ {
+      "id" : "multiinstance_collection",
+      "type" : "String",
+      "title" : "Collection (Multi-instance)",
+      "value" : "",
+      "description" : "Define the collection for the multi instance.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "multiinstance_variablepackage",
+    "properties" : [ {
+      "id" : "multiinstance_variable",
+      "type" : "String",
+      "title" : "Element variable (Multi-instance)",
+      "value" : "",
+      "description" : "Define the element variable for the multi instance.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "multiinstance_conditionpackage",
+    "properties" : [ {
+      "id" : "multiinstance_condition",
+      "type" : "String",
+      "title" : "Completion condition (Multi-instance)",
+      "value" : "",
+      "description" : "Define the completion condition for the multi instance.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "isforcompensationpackage",
+    "properties" : [ {
+      "id" : "isforcompensation",
+      "type" : "Boolean",
+      "title" : "Is for compensation",
+      "value" : "false",
+      "description" : "A flag that identifies whether this activity is intended for the purposes of compensation.",
+      "popular" : true,
+      "refToView" : "compensation"
+    } ]
+  }, {
+    "name" : "sequencefloworderpackage",
+    "properties" : [ {
+      "id" : "sequencefloworder",
+      "type" : "Complex",
+      "title" : "Flow order",
+      "value" : "",
+      "description" : "Order outgoing sequence flows.",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "signaldefinitionspackage",
+    "properties" : [ {
+      "id" : "signaldefinitions",
+      "type" : "multiplecomplex",
+      "title" : "Signal definitions",
+      "value" : "",
+      "description" : "Signal definitions",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "messagedefinitionspackage",
+    "properties" : [ {
+      "id" : "messagedefinitions",
+      "type" : "multiplecomplex",
+      "title" : "Message definitions",
+      "value" : "",
+      "description" : "Message definitions",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "istransactionpackage",
+    "properties" : [ {
+      "id" : "istransaction",
+      "type" : "Boolean",
+      "title" : "Is a transaction sub process",
+      "value" : "false",
+      "description" : "A flag that identifies whether this sub process is of type transaction.",
+      "popular" : true,
+      "refToView" : "border"
+    } ]
+  }, {
+    "name" : "formreferencepackage",
+    "properties" : [ {
+      "id" : "formreference",
+      "type" : "Complex",
+      "title" : "Form reference",
+      "value" : "",
+      "description" : "Reference to a form",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "terminateAllpackage",
+    "properties" : [ {
+      "id" : "terminateAll",
+      "type" : "Boolean",
+      "title" : "Terminate all",
+      "value" : "false",
+      "description" : "Enable to terminate the process instance",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "decisiontaskdecisiontablereferencepackage",
+    "properties" : [ {
+      "id" : "decisiontaskdecisiontablereference",
+      "type" : "Complex",
+      "title" : "Decision table reference",
+      "value" : "",
+      "description" : "Set the decision table reference",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "interruptingpackage",
+    "properties" : [ {
+      "id" : "interrupting",
+      "type" : "Boolean",
+      "title" : "Interrupting",
+      "value" : "true",
+      "description" : "Should all parent executions be terminated?",
+      "popular" : true,
+      "refToView" : [ "frame" ]
+    } ]
+  }, {
+    "name" : "completionconditionpackage",
+    "properties" : [ {
+      "id" : "completioncondition",
+      "type" : "String",
+      "title" : "Completion condition",
+      "value" : "",
+      "description" : "The completion condition for the adhoc sub process",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "orderingpackage",
+    "properties" : [ {
+      "id" : "ordering",
+      "type" : "flowable-ordering",
+      "title" : "Ordering",
+      "value" : "Parallel",
+      "description" : "The ordering for the adhoc sub process",
+      "popular" : true
+    } ]
+  }, {
+    "name" : "cancelremaininginstancespackage",
+    "properties" : [ {
+      "id" : "cancelremaininginstances",
+      "type" : "Boolean",
+      "title" : "Cancel remaining instances",
+      "value" : "true",
+      "description" : "Cancel the remaining instances for the adhoc sub process?",
+      "popular" : true
+    } ]
+  } ],
+  "stencils" : [ {
+    "type" : "node",
+    "id" : "BPMNDiagram",
+    "title" : "BPMN-Diagram",
+    "description" : "A BPMN 2.0 diagram.",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n   width=\"800\"\n   height=\"600\"\n   version=\"1.0\">\n  <defs></defs>\n  <g pointer-events=\"fill\" >\n    <polygon stroke=\"black\" fill=\"black\" stroke-width=\"1\" points=\"0,0 0,590 9,599 799,599 799,9 790,0\" stroke-linecap=\"butt\" stroke-linejoin=\"miter\" stroke-miterlimit=\"10\" />\n    <rect id=\"diagramcanvas\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"790\" height=\"590\" stroke=\"black\" stroke-width=\"2\" fill=\"white\" />\n    \t<text font-size=\"22\" id=\"diagramtext\" x=\"400\" y=\"25\" oryx:align=\"top center\" stroke=\"#373e48\"></text>\n  </g>\n</svg>",
+    "icon" : "diagram.png",
+    "groups" : [ "Diagram" ],
+    "mayBeRoot" : true,
+    "hide" : true,
+    "propertyPackages" : [ "process_idpackage", "namepackage", "documentationpackage", "process_authorpackage", "process_versionpackage", "process_namespacepackage", "executionlistenerspackage", "eventlistenerspackage", "signaldefinitionspackage", "messagedefinitionspackage", "process_potentialstarteruserpackage","process_potentialstartergrouppackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ ]
+  }, {
+    "type" : "node",
+    "id" : "StartNoneEvent",
+    "title" : "Start event",
+    "description" : "A start event without a specific trigger",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   width=\"40\"\n   height=\"40\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"16\" oryx:cy=\"16\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\">\n    <circle id=\"bg_frame\" cx=\"16\" cy=\"16\" r=\"15\" stroke=\"#585858\" fill=\"#ffffff\" stroke-width=\"1\"/>\n\t<text font-size=\"11\" \n\t\tid=\"text_name\" \n\t\tx=\"16\" y=\"33\" \n\t\toryx:align=\"top center\" \n\t\tstroke=\"#373e48\"\n\t></text>\n  </g>\n</svg>",
+    "icon" : "startevent/none.png",
+    "groups" : [ "Start Events" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "initiatorpackage", "formkeydefinitionpackage", "formreferencepackage", "formpropertiespackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "StartTimerEvent",
+    "title" : "Start timer event",
+    "description" : "A start event with a timer trigger",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   width=\"40\"\n   height=\"40\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"16\" oryx:cy=\"16\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\">\n    <circle \n    \tid=\"bg_frame\" \n    \tcx=\"16\" \n    \tcy=\"16\" \n    \tr=\"15\" \n    \tstroke=\"#585858\" \n    \tfill=\"#ffffff\" \n    \tstroke-width=\"1\"\n    \tstyle=\"stroke-dasharray: 5.5, 3\" />\n    <circle id=\"frame\" cx=\"16\" cy=\"16\" r=\"15\" stroke=\"#585858\" fill=\"none\" stroke-width=\"1\"/>\n    \n    <path id=\"path1\" transform=\"translate(6,6)\"\n    \td=\"M 10 0 C 4.4771525 0 0 4.4771525 0 10 C 0 15.522847 4.4771525 20 10 20 C 15.522847 20 20 15.522847 20 10 C 20 4.4771525 15.522847 1.1842379e-15 10 0 z M 9.09375 1.03125 C 9.2292164 1.0174926 9.362825 1.0389311 9.5 1.03125 L 9
 .5 3.5 L 10.5 3.5 L 10.5 1.03125 C 15.063526 1.2867831 18.713217 4.9364738 18.96875 9.5 L 16.5 9.5 L 16.5 10.5 L 18.96875 10.5 C 18.713217 15.063526 15.063526 18.713217 10.5 18.96875 L 10.5 16.5 L 9.5 16.5 L 9.5 18.96875 C 4.9364738 18.713217 1.2867831 15.063526 1.03125 10.5 L 3.5 10.5 L 3.5 9.5 L 1.03125 9.5 C 1.279102 5.0736488 4.7225326 1.4751713 9.09375 1.03125 z M 9.5 5 L 9.5 8.0625 C 8.6373007 8.2844627 8 9.0680195 8 10 C 8 11.104569 8.8954305 12 10 12 C 10.931981 12 11.715537 11.362699 11.9375 10.5 L 14 10.5 L 14 9.5 L 11.9375 9.5 C 11.756642 8.7970599 11.20294 8.2433585 10.5 8.0625 L 10.5 5 L 9.5 5 z \"  \n    \tfill=\"#585858\" stroke=\"none\" />\n   \n\t<text font-size=\"11\" \n\t\tid=\"text_name\" \n\t\tx=\"16\" y=\"33\" \n\t\toryx:align=\"top center\" \n\t\tstroke=\"#373e48\"\n\t></text>\n  </g>\n</svg>",
+    "icon" : "startevent/timer.png",
+    "groups" : [ "Start Events" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "timercycledefinitionpackage", "timerdatedefinitionpackage", "timerdurationdefinitionpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "StartSignalEvent",
+    "title" : "Start signal event",
+    "description" : "A start event with a signal trigger",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   width=\"40\"\n   height=\"40\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"16\" oryx:cy=\"16\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\">\n\n    <circle \n    \tid=\"bg_frame\" \n    \tcx=\"16\" \n    \tcy=\"16\" \n    \tr=\"15\" \n    \tstroke=\"#585858\" \n    \tfill=\"#ffffff\" \n    \tstroke-width=\"1\"\n    \tstyle=\"stroke-dasharray: 5.5, 3\" />\n    <circle id=\"frame\" cx=\"16\" cy=\"16\" r=\"15\" stroke=\"#585858\" fill=\"none\" stroke-width=\"1\"/>\n    <path\n       d=\"M 8.7124971,21.247342 L 23.333334,21.247342 L 16.022915,8.5759512 L 8.7124971,21.247342 z\"\n       id=\"triangle\"\n       stroke=\"#585858\"\n       style=\"fill:none;stroke-width:1.4;stroke-miterlimit:4;stroke-dasharray:none\" />\n\t<text font-size=\"11\" \n\t\tid=\"
 text_name\" \n\t\tx=\"16\" y=\"33\" \n\t\toryx:align=\"top center\" \n\t\tstroke=\"#373e48\"\n\t></text>\n  </g>\n</svg>",
+    "icon" : "startevent/signal.png",
+    "groups" : [ "Start Events" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "signalrefpackage", "interruptingpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "StartMessageEvent",
+    "title" : "Start message event",
+    "description" : "A start event with a message trigger",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   width=\"40\"\n   height=\"40\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"16\" oryx:cy=\"16\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\">\n    <circle \n    \tid=\"bg_frame\" \n    \tcx=\"16\" \n    \tcy=\"16\" \n    \tr=\"15\" \n    \tstroke=\"#585858\" \n    \tfill=\"#ffffff\" \n    \tstroke-width=\"1\"\n    \tstyle=\"stroke-dasharray: 5.5, 3\" />\n    \n    <circle id=\"frame\" cx=\"16\" cy=\"16\" r=\"15\" stroke=\"#585858\" fill=\"none\" stroke-width=\"1\"/>\n    \n    <path transform=\"translate(7,7)\" id=\"path1\" stroke=\"none\" fill=\"#585858\" stroke-width=\"1\" d=\"m 0.5,2.5 0,13 17,0 0,-13 z M 2,4 6.5,8.5 2,13 z M 4,4 14,4 9,9 z m 12,0 0,9 -4.5,-4.5 z M 7.5,9.5 9,11 10.5,9.5 15,14 3,14 z\"/>\n\t<text font-size=\"11\" \n\t\tid=\"text_na
 me\" \n\t\tx=\"16\" y=\"33\" \n\t\toryx:align=\"top center\" \n\t\tstroke=\"#373e48\"\n\t></text>\n  </g>\n</svg>",
+    "icon" : "startevent/message.png",
+    "groups" : [ "Start Events" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "messagerefpackage", "interruptingpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "StartErrorEvent",
+    "title" : "Start error event",
+    "description" : "A start event that catches a thrown BPMN error",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   width=\"40\"\n   height=\"40\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"16\" oryx:cy=\"16\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <oryx:docker oryx:cx=\"16\" oryx:cy=\"16\" />\n  <g pointer-events=\"fill\">\n    <circle id=\"bg_frame\" cx=\"16\" cy=\"16\" r=\"15\" stroke=\"#585858\" fill=\"#ffffff\" stroke-width=\"1\"/>\n    \n    <path\n         stroke=\"#585858\"\n         style=\"fill:none;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10\"\n         d=\"M 22.820839,11.171502 L 19.36734,24.58992 L 13.54138,14.281819 L 9.3386512,20.071607 L 13.048949,6.8323057 L 18.996148,16.132659 L 22.820839,11.171502 z\"\n         id=\"errorPolygon\" />\n\t<text font-size=\"11\" \n\t\tid=\"text_name\" \n\t\tx=\"16\" y=\"33\" \n\t\toryx:align=\"top 
 center\" \n\t\tstroke=\"#373e48\"\n\t></text>\n  </g>\n</svg>",
+    "icon" : "startevent/error.png",
+    "groups" : [ "Start Events" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "executionlistenerspackage", "errorrefpackage", "interruptingpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "sequence_start", "Startevents_all", "StartEventsMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "UserTask",
+    "title" : "User task",
+    "description" : "A manual task assigned to a specific person",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"use
 rTask\" transform=\"translate(3,3)\">\n\t\t<path oryx:anchors=\"top left\"\n       \t\tstyle=\"fill:#d1b575;stroke:none;\"\n       \t\t d=\"m 1,17 16,0 0,-1.7778 -5.333332,-3.5555 0,-1.7778 c 1.244444,0 1.244444,-2.3111 1.244444,-2.3111 l 0,-3.0222 C 12.555557,0.8221 9.0000001,1.0001 9.0000001,1.0001 c 0,0 -3.5555556,-0.178 -3.9111111,3.5555 l 0,3.0222 c 0,0 0,2.3111 1.2444443,2.3111 l 0,1.7778 L 1,15.2222 1,17 17,17\" \n         />\n\t\t\n\t</g>\n  \n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\t\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.user.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "usertaskassignmentpackage", "formkeydefinitionpackage", "formreferencepackage", "duedatedefinitionpackage", "prioritydefinitionpackage", "formpropertiespackage", "tasklistenerspackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "ServiceTask",
+    "title" : "Service task",
+    "description" : "An automatic task with service logic",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"ser
 viceTask\" transform=\"translate(3,3)\">\n\t<path oryx:anchors=\"top left\"\n\t\tstyle=\"fill:#72a7d0;stroke:none\"\n     d=\"M 8,1 7.5,2.875 c 0,0 -0.02438,0.250763 -0.40625,0.4375 C 7.05724,3.330353 7.04387,3.358818 7,3.375 6.6676654,3.4929791 6.3336971,3.6092802 6.03125,3.78125 6.02349,3.78566 6.007733,3.77681 6,3.78125 5.8811373,3.761018 5.8125,3.71875 5.8125,3.71875 l -1.6875,-1 -1.40625,1.4375 0.96875,1.65625 c 0,0 0.065705,0.068637 0.09375,0.1875 0.002,0.00849 -0.00169,0.022138 0,0.03125 C 3.6092802,6.3336971 3.4929791,6.6676654 3.375,7 3.3629836,7.0338489 3.3239228,7.0596246 3.3125,7.09375 3.125763,7.4756184 2.875,7.5 2.875,7.5 L 1,8 l 0,2 1.875,0.5 c 0,0 0.250763,0.02438 0.4375,0.40625 0.017853,0.03651 0.046318,0.04988 0.0625,0.09375 0.1129372,0.318132 0.2124732,0.646641 0.375,0.9375 -0.00302,0.215512 -0.09375,0.34375 -0.09375,0.34375 L 2.6875,13.9375 4.09375,15.34375 5.78125,14.375 c 0,0 0.1229911,-0.09744 0.34375,-0.09375 0.2720511,0.147787 0.5795915,0.23888 0.875,0.34375
  0.033849,0.01202 0.059625,0.05108 0.09375,0.0625 C 7.4756199,14.874237 7.5,15.125 7.5,15.125 L 8,17 l 2,0 0.5,-1.875 c 0,0 0.02438,-0.250763 0.40625,-0.4375 0.03651,-0.01785 0.04988,-0.04632 0.09375,-0.0625 0.332335,-0.117979 0.666303,-0.23428 0.96875,-0.40625 0.177303,0.0173 0.28125,0.09375 0.28125,0.09375 l 1.65625,0.96875 1.40625,-1.40625 -0.96875,-1.65625 c 0,0 -0.07645,-0.103947 -0.09375,-0.28125 0.162527,-0.290859 0.262063,-0.619368 0.375,-0.9375 0.01618,-0.04387 0.04465,-0.05724 0.0625,-0.09375 C 14.874237,10.52438 15.125,10.5 15.125,10.5 L 17,10 17,8 15.125,7.5 c 0,0 -0.250763,-0.024382 -0.4375,-0.40625 C 14.669647,7.0572406 14.641181,7.0438697 14.625,7 14.55912,6.8144282 14.520616,6.6141566 14.4375,6.4375 c -0.224363,-0.4866 0,-0.71875 0,-0.71875 L 15.40625,4.0625 14,2.625 l -1.65625,1 c 0,0 -0.253337,0.1695664 -0.71875,-0.03125 l -0.03125,0 C 11.405359,3.5035185 11.198648,3.4455201 11,3.375 10.95613,3.3588185 10.942759,3.3303534 10.90625,3.3125 10.524382,3.125763 10.5,2.8
 75 10.5,2.875 L 10,1 8,1 z m 1,5 c 1.656854,0 3,1.3431458 3,3 0,1.656854 -1.343146,3 -3,3 C 7.3431458,12 6,10.656854 6,9 6,7.3431458 7.3431458,6 9,6 z\" />\n\t</g>\n  \n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\t\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.service.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "servicetaskclasspackage", "servicetaskexpressionpackage", "servicetaskdelegateexpressionpackage", "servicetaskfieldspackage", "servicetaskresultvariablepackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "ScriptTask",
+    "title" : "Script task",
+    "description" : "An automatic task with script logic",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"scr
 iptTask\" transform=\"translate(2,2)\">\n\t\t<path oryx:anchors=\"top left\"\n\t\t\td=\"m 5,2 0,0.094 c 0.23706,0.064 0.53189,0.1645 0.8125,0.375 0.5582,0.4186 1.05109,1.228 1.15625,2.5312 l 8.03125,0 1,0 1,0 c 0,-3 -2,-3 -2,-3 l -10,0 z M 4,3 4,13 2,13 c 0,3 2,3 2,3 l 9,0 c 0,0 2,0 2,-3 L 15,6 6,6 6,5.5 C 6,4.1111 5.5595,3.529 5.1875,3.25 4.8155,2.971 4.5,3 4.5,3 L 4,3 z\"\n     \t\tstyle=\"fill:#72a7d0;stroke:none\"\n\t\t/>\n\t</g>\n  \n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\t\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.script.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "scriptformatpackage", "scripttextpackage", "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "BusinessRule",
+    "title" : "Business rule task",
+    "description" : "An automatic task with rule logic",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n  \t<defs>\n\t\t<radialGradient id=\"background\" cx=\"10%\" cy=\"10%\" r=\"100%\" fx=\"10%\" fy=\"10%\">\n\t\t\t<stop offset=\"0%\" stop-color=\"#ffffff\" stop-opacity=\"1\"/>\n\t\t\t<stop id=\"fill_el\" offset=\"100%\" stop-color=\"#ffffcc\" stop-opacity=\"1\"/>\n\t\t</radialGradient>\n\t</defs>\n\t\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" r
 x=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    \n\t<g id=\"businessRuleTask\" transform=\"translate(4,3)\">\n\t\t<path oryx:anchors=\"top left\" \n\t\t\t d=\"m 1,2 0,14 16,0 0,-14 z m 1.45458,5.6000386 2.90906,0 0,2.7999224 -2.90906,0 z m 4.36364,0 8.72718,0 0,2.7999224 -8.72718,0 z m -4.36364,4.1998844 2.90906,0 0,2.800116 -2.90906,0 z m 4.36364,0 8.72718,0 0,2.800116 -8.72718,0 z\"\n     \t\tstyle=\"fill:#72a7d0;stroke:none\"\n\t\t/>\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,6
 8h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.business.rule.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "ruletask_rulespackage", "ruletask_variables_inputpackage", "ruletask_excludepackage", "ruletask_resultpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "ReceiveTask",
+    "title" : "Receive task",
+    "description" : "An task that waits for a signal",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    \n\t<g id=\"r
 eceiveTask\" transform=\"translate(4,3)\">\n\t\t<path oryx:anchors=\"left top\" \n\t\t\t style=\"fill:#16964d;stroke:none;\"\n     \t\t d=\"m 0.5,2.5 0,13 17,0 0,-13 z M 2,4 6.5,8.5 2,13 z M 4,4 14,4 9,9 z m 12,0 0,9 -4.5,-4.5 z M 7.5,9.5 9,11 10.5,9.5 15,14 3,14 z\"\n\t\t />\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.receive.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "ManualTask",
+    "title" : "Manual task",
+    "description" : "An automatic task with no logic",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    <g id=\"manua
 lTask\" transform=\"translate(3,1)\">\n    \t<path oryx:anchors=\"top left\"\n    \t\tstyle=\"fill:#d1b575;stroke=none\"\n     \t\td=\"m 17,9.3290326 c -0.0069,0.5512461 -0.455166,1.0455894 -0.940778,1.0376604 l -5.792746,0 c 0.0053,0.119381 0.0026,0.237107 0.0061,0.355965 l 5.154918,0 c 0.482032,-0.0096 0.925529,0.49051 0.919525,1.037574 -0.0078,0.537128 -0.446283,1.017531 -0.919521,1.007683 l -5.245273,0 c -0.01507,0.104484 -0.03389,0.204081 -0.05316,0.301591 l 2.630175,0 c 0.454137,-0.0096 0.872112,0.461754 0.866386,0.977186 C 13.619526,14.554106 13.206293,15.009498 12.75924,15 L 3.7753054,15 C 3.6045812,15 3.433552,14.94423 3.2916363,14.837136 c -0.00174,0 -0.00436,0 -0.00609,0 C 1.7212035,14.367801 0.99998255,11.458641 1,11.458641 L 1,7.4588393 c 0,0 0.6623144,-1.316333 1.8390583,-2.0872584 1.1767614,-0.7711868 6.8053358,-2.40497 7.2587847,-2.8052901 0.453484,-0.40032 1.660213,1.4859942 0.04775,2.4010487 C 8.5332315,5.882394 8.507351,5.7996113 8.4370292,5.7936859 l 6.3569748,-0
 .00871 c 0.497046,-0.00958 0.952273,0.5097676 0.94612,1.0738232 -0.0053,0.556126 -0.456176,1.0566566 -0.94612,1.0496854 l -4.72435,0 c 0.01307,0.1149374 0.0244,0.2281319 0.03721,0.3498661 l 5.952195,0 c 0.494517,-0.00871 0.947906,0.5066305 0.940795,1.0679848 z\"\n    \t/>\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.manual.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "MailTask",
+    "title" : "Mail task",
+    "description" : "An mail task",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    \n\t<g id=\"s
 endTask\" transform=\"translate(4,3)\">\n\t\n\t<!-- path here -->\n\t\t<path oryx:anchors=\"top left\"\n\t\t\tstyle=\"fill:#16964d;stroke:none;\"\n     \t\td=\"M 1 3 L 9 11 L 17 3 L 1 3 z M 1 5 L 1 13 L 5 9 L 1 5 z M 17 5 L 13 9 L 17 13 L 17 5 z M 6 10 L 1 15 L 17 15 L 12 10 L 9 13 L 6 10 z \"\n     \t/>\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.send.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "mailtasktopackage", "mailtaskfrompackage", "mailtasksubjectpackage", "mailtaskccpackage", "mailtaskbccpackage", "mailtasktextpackage", "mailtaskhtmlpackage", "mailtaskcharsetpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "CamelTask",
+    "title" : "Camel task",
+    "description" : "An task that sends a message to Camel",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"cam
 elTask\" transform=\"translate(4,4)\">\n\t\t<path\n     style=\"fill:#bd4848;fill-opacity:1\"\n     d=\"m 8.1878027,15.383782 c -0.824818,-0.3427 0.375093,-1.1925 0.404055,-1.7743 0.230509,-0.8159 -0.217173,-1.5329 -0.550642,-2.2283 -0.106244,-0.5273 -0.03299,-1.8886005 -0.747194,-1.7818005 -0.712355,0.3776 -0.9225,1.2309005 -1.253911,1.9055005 -0.175574,1.0874 -0.630353,2.114 -0.775834,3.2123 -0.244009,0.4224 -1.741203,0.3888 -1.554386,-0.1397 0.651324,-0.3302 1.13227,-0.9222 1.180246,-1.6705 0.0082,-0.7042 -0.133578,-1.3681 0.302178,-2.0083 0.08617,-0.3202 0.356348,-1.0224005 -0.218996,-0.8051 -0.694517,0.2372 -1.651062,0.6128 -2.057645,-0.2959005 -0.696769,0.3057005 -1.102947,-0.611 -1.393127,-1.0565 -0.231079,-0.6218 -0.437041,-1.3041 -0.202103,-1.9476 -0.185217,-0.7514 -0.39751099,-1.5209 -0.35214999,-2.301 -0.243425,-0.7796 0.86000899,-1.2456 0.08581,-1.8855 -0.76078999,0.1964 -1.41630099,-0.7569 -0.79351899,-1.2877 0.58743,-0.52829998 1.49031699,-0.242 2.09856399,-0.77049998 
 0.816875,-0.3212 1.256619,0.65019998 1.923119,0.71939998 0.01194,0.7333 -0.0031,1.5042 -0.18417,2.2232 -0.194069,0.564 -0.811196,1.6968 0.06669,1.9398 0.738382,-0.173 1.095723,-0.9364 1.659041,-1.3729 0.727298,-0.3962 1.093982,-1.117 1.344137,-1.8675 0.400558,-0.8287 1.697676,-0.6854 1.955367,0.1758 0.103564,0.5511 0.9073983,1.7538 1.2472763,0.6846 0.121868,-0.6687 0.785541,-1.4454 1.518183,-1.0431 0.813587,0.4875 0.658233,1.6033 1.285504,2.2454 0.768715,0.8117 1.745394,1.4801 2.196633,2.5469 0.313781,0.8074 0.568552,1.707 0.496624,2.5733 -0.35485,0.8576005 -1.224508,-0.216 -0.64725,-0.7284 0.01868,-0.3794 -0.01834,-1.3264 -0.370249,-1.3272 -0.123187,0.7586 -0.152778,1.547 -0.10869,2.3154 0.270285,0.6662005 1.310741,0.7653005 1.060553,1.6763005 -0.03493,0.9801 0.294343,1.9505 0.148048,2.9272 -0.320479,0.2406 -0.79575,0.097 -1.185062,0.1512 -0.165725,0.3657 -0.40138,0.921 -1.020848,0.6744 -0.564671,0.1141 -1.246404,-0.266 -0.578559,-0.7715 0.679736,-0.5602 0.898618,-1.5362 0.687058,-
 2.3673 -0.529674,-1.108 -1.275984,-2.0954005 -1.839206,-3.1831005 -0.634619,-0.1004 -1.251945,0.6779 -1.956789,0.7408 -0.6065893,-0.038 -1.0354363,-0.06 -0.8495673,0.6969005 0.01681,0.711 0.152396,1.3997 0.157345,2.1104 0.07947,0.7464 0.171287,1.4944 0.238271,2.2351 0.237411,1.0076 -0.687542,1.1488 -1.414811,0.8598 z m 6.8675483,-1.8379 c 0.114364,-0.3658 0.206751,-1.2704 -0.114466,-1.3553 -0.152626,0.5835 -0.225018,1.1888 -0.227537,1.7919 0.147087,-0.1166 0.265559,-0.2643 0.342003,-0.4366 z\"\n     />\n\t</g>\n  \n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\t\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 
 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.camel.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "cameltaskcamelcontextpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "HttpTask",
+    "title" : "Http task",
+    "description" : "A HTTP task",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    \n\t<g id=\"s
 endTask\" transform=\"translate(4,3)\">\n\t\n\t<!-- path here -->\n\t\t<path oryx:anchors=\"top left\"\n\t\t\tstyle=\"fill:#16964d;stroke:none;\"\n     \t\td=\"m 16.704699,5.9229055 q 0.358098,0 0.608767,0.2506681 0.250669,0.250668 0.250669,0.6087677 0,0.3580997 -0.250669,0.6087677 -0.250669,0.2506679 -0.608767,0.2506679 -0.358098,0 -0.608767,-0.2506679 -0.250669,-0.250668 -0.250669,-0.6087677 0,-0.3580997 0.250669,-0.6087677 0.250669,-0.2506681 0.608767,-0.2506681 z m 2.578308,-2.0053502 q -2.229162,0 -3.854034,0.6759125 -1.624871,0.6759067 -3.227361,2.2694472 -0.716197,0.725146 -1.575633,1.7457293 L 7.2329969,8.7876913 Q 7.0897576,8.8055849 7.000233,8.9309334 L 4.9948821,12.368677 q -0.035811,0.06267 -0.035811,0.143242 0,0.107426 0.080572,0.205905 l 0.5729577,0.572957 q 0.125334,0.116384 0.2864786,0.07162 l 2.4708789,-0.760963 2.5156417,2.515645 -0.76096,2.470876 q -0.009,0.02687 -0.009,0.08057 0,0.125338 0.08058,0.205905 l 0.572957,0.572958 q 0.170096,0.152194 0.349146,0.04476 l 
 3.437744,-2.005351 q 0.125335,-0.08953 0.143239,-0.232763 l 0.17905,-3.392986 q 1.02058,-0.859435 1.745729,-1.575629 1.67411,-1.6830612 2.309735,-3.2049805 0.635625,-1.5219191 0.635625,-3.8585111 0,-0.1253369 -0.08505,-0.2148575 -0.08505,-0.089526 -0.201431,-0.089526 z \"\n     \t/>\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.http.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "httptaskrequestmethodpackage", "httptaskrequesturlpackage", "httptaskrequestheaderspackage", "httptaskrequestbodypackage", "httptaskrequesttimeoutpackage", "httptaskdisallowredirectspackage", "httptaskfailstatuscodespackage", "httptaskhandlestatuscodespackage", "httptaskignoreexceptionpackage", "httptaskresponsevariablenamepackage", "httptasksaverequestvariablespackage", "httptasksaveresponseparameterspackage", "httptaskresultvariableprefixpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "MuleTask",
+    "title" : "Mule task",
+    "description" : "An task that sends a message to Mule",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"mul
 eTask\" transform=\"translate(4,4)\">\n\t\t<path\n     style=\"fill:#bd4848;fill-opacity:1\"\n     d=\"M 8,0 C 3.581722,0 0,3.5817 0,8 c 0,4.4183 3.581722,8 8,8 4.418278,0 8,-3.5817 8,-8 L 16,7.6562 C 15.813571,3.3775 12.282847,0 8,0 z M 5.1875,2.7812 8,7.3437 10.8125,2.7812 c 1.323522,0.4299 2.329453,1.5645 2.8125,2.8438 1.136151,2.8609 -0.380702,6.4569 -3.25,7.5937 -0.217837,-0.6102 -0.438416,-1.2022 -0.65625,-1.8125 0.701032,-0.2274 1.313373,-0.6949 1.71875,-1.3125 0.73624,-1.2317 0.939877,-2.6305 -0.03125,-4.3125 l -2.75,4.0625 -0.65625,0 -0.65625,0 -2.75,-4 C 3.5268433,7.6916 3.82626,8.862 4.5625,10.0937 4.967877,10.7113 5.580218,11.1788 6.28125,11.4062 6.063416,12.0165 5.842837,12.6085 5.625,13.2187 2.755702,12.0819 1.238849,8.4858 2.375,5.625 2.858047,4.3457 3.863978,3.2112 5.1875,2.7812 z\"\n     />\n\t</g>\n  \n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t<g id=
 \"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\t\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.mule.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage", "muletaskendpointurlpackage", "muletasklanguagepackage", "muletaskpayloadexpressionpackage", "muletaskresultvariablepackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "SendTask",
+    "title" : "Send task",
+    "description" : "An task that sends a message",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n    \n\t<g id=\"s
 endTask\" transform=\"translate(4,3)\">\n\t\n\t<!-- path here -->\n\t\t<path oryx:anchors=\"top left\"\n\t\t\tstyle=\"fill:#16964d;stroke:none;\"\n     \t\td=\"M 1 3 L 9 11 L 17 3 L 1 3 z M 1 5 L 1 13 L 5 9 L 1 5 z M 17 5 L 13 9 L 17 13 L 17 5 z M 6 10 L 1 15 L 17 15 L 12 10 L 9 13 L 6 10 z \"\n     \t/>\n\t</g>\n\t\n\t<g id=\"parallel\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M46 70 v8 M50 70 v8 M54 70 v8\" stroke-width=\"2\" />\n\t</g>\n\t\n\t<g id=\"sequential\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" stroke-width=\"2\" d=\"M46,76h10M46,72h10 M46,68h10\"/>\n\t</g>\n\n\t<g id=\"compensation\">\n\t\t<path oryx:anchors=\"bottom\" fill=\"none\" stroke=\"#bbbbbb\" d=\"M 62 74 L 66 70 L 66 78 L 62 74 L 62 70 L 58 74 L 62 78 L 62 74\" stroke-width=\"1\" />\n\t</g>\n  </g>\n</svg>",
+    "icon" : "activity/list/type.send.png",
+    "groups" : [ "Activities" ],
+    "propertyPackages" : [ "overrideidpackage", "namepackage", "documentationpackage", "asynchronousdefinitionpackage", "exclusivedefinitionpackage", "executionlistenerspackage", "multiinstance_typepackage", "multiinstance_cardinalitypackage", "multiinstance_collectionpackage", "multiinstance_variablepackage", "multiinstance_conditionpackage", "isforcompensationpackage" ],
+    "hiddenPropertyPackages" : [ ],
+    "roles" : [ "Activity", "sequence_start", "sequence_end", "ActivitiesMorph", "all" ]
+  }, {
+    "type" : "node",
+    "id" : "DecisionTask",
+    "title" : "Decision task",
+    "description" : "Task to use the Flowable DMN rule engine",
+    "view" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n   xmlns=\"http://www.w3.org/2000/svg\"\n   xmlns:svg=\"http://www.w3.org/2000/svg\"\n   xmlns:oryx=\"http://www.b3mn.org/oryx\"\n   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\n   width=\"102\"\n   height=\"82\"\n   version=\"1.0\">\n  <defs></defs>\n  <oryx:magnets>\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"20\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"40\" oryx:anchors=\"left\" />\n  \t<oryx:magnet oryx:cx=\"1\" oryx:cy=\"60\" oryx:anchors=\"left\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"79\" oryx:anchors=\"bottom\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"20\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\"40\" oryx:anchors=\"right\" />\n  \t<oryx:magnet oryx:cx=\"99\" oryx:cy=\
 "60\" oryx:anchors=\"right\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"25\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t<oryx:magnet oryx:cx=\"75\" oryx:cy=\"1\" oryx:anchors=\"top\" />\n  \t\n  \t<oryx:magnet oryx:cx=\"50\" oryx:cy=\"40\" oryx:default=\"yes\" />\n  </oryx:magnets>\n  <g pointer-events=\"fill\" oryx:minimumSize=\"50 40\">\n\t<rect id=\"text_frame\" oryx:anchors=\"bottom top right left\" x=\"1\" y=\"1\" width=\"94\" height=\"79\" rx=\"10\" ry=\"10\" stroke=\"none\" stroke-width=\"0\" fill=\"none\" />\n\t<rect id=\"bg_frame\" oryx:resize=\"vertical horizontal\" x=\"0\" y=\"0\" width=\"100\" height=\"80\" rx=\"10\" ry=\"10\" stroke=\"#bbbbbb\" stroke-width=\"1\" fill=\"#f9f9f9\" />\n\t\t<text \n\t\t\tfont-size=\"12\" \n\t\t\tid=\"text_name\" \n\t\t\tx=\"50\" \n\t\t\ty=\"40\" \n\t\t\toryx:align=\"middle center\"\n\t\t\toryx:fittoelem=\"text_frame\"\n\t\t\tstroke=\"#373e48\">\n\t\t</text>\n\t\n\t<g id=\"dec
 isionTask\" transform=\"translate(4,3)\">\n\t\t<path oryx:anchors=\"top left\"\n\t\t\t d=\"m 1,2 0,14 16,0 0,-14 z m 1.45458,5.6000386 2.90906,0 0,2.7999224 -2.90906,0 z m 4.36364,0 8.72718,0 0,2.7999224 -8.72718,0 z m -4.36364,4.1998844 2.90906,0 0,2.800116 -2.90906,0 z m 4.36364,0 8.72718,0 0,2.800116 -8.72718,0 z\"\n     \t\tstyle=\"fill:#72a7d0;stroke:none\"\n\t\t/>\n\t</g>\n\n\t<g id=\"parallel\">\n\t\t<path oryx:anc

<TRUNCATED>