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=\"</head>\"\n"
+ " value=\"<script type="text/javascript">window.onunload = "
- + "refreshParent; function refreshParent() { window.opener.location.reload(); }<"
- + "/script></head>\"/>\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'] && this.facade.getCanvas().getChildShapes().size() > 0);\"\n"
- + " value=\"return this.changeDifference !== 0 \n"
- + " || (typeof this.facade.getModelMetaData() != 'undefined' \n"
- + " && this.facade.getModelMetaData()['new'] && this.facade.getCanvas()."
- + "getChildShapes().size() > 0);\"/>\n"
+ + "refreshParent; function refreshParent() { window.opener.location.reload(); }</script>"
+ + "</head>\"/>\n"
+ " <replace file=\"${flowable-modeler.directory}/editor-app/configuration/"
+ "toolbar-default-actions.js\"\n"
- + " token=\"window.location.href = "./";\"\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="</head>"
value="<script type="text/javascript">window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); }</script></head>"/>
- <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'] && this.facade.getCanvas().getChildShapes().size() > 0);"
- value="return this.changeDifference !== 0
- || (typeof this.facade.getModelMetaData() != 'undefined'
- && this.facade.getModelMetaData()['new'] && this.facade.getCanvas().getChildShapes().size() > 0);"/>
<replace file="${flowable-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
- token="window.location.href = "./";"
+ 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="</head>"
value="<script type="text/javascript">window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); }</script></head>"/>
- <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'] && this.facade.getCanvas().getChildShapes().size() > 0);"
- value="return this.changeDifference !== 0
- || (typeof this.facade.getModelMetaData() != 'undefined'
- && this.facade.getModelMetaData()['new'] && this.facade.getCanvas().getChildShapes().size() > 0);"/>
<replace file="${flowable-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
- token="window.location.href = "./";"
+ 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>