[SYNCOPE-620] IT with Activiti
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/1327b2a4 Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/1327b2a4 Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/1327b2a4 Branch: refs/heads/2_0_X Commit: 1327b2a44abe1cc1cea08540af17749bdbd88d4e Parents: 702810d Author: Francesco Chicchiriccò <[email protected]> Authored: Mon Jan 26 15:47:02 2015 +0100 Committer: Francesco Chicchiriccò <[email protected]> Committed: Mon Jan 26 15:47:02 2015 +0100 ---------------------------------------------------------------------- .../syncope/common/to/WorkflowFormTO.java | 1 - .../syncope/client/lib/SyncopeClient.java | 28 - .../apache/syncope/common/lib/to/SyncopeTO.java | 186 ++++ .../common/lib/to/WorkflowFormPropertyTO.java | 12 +- .../syncope/common/lib/to/WorkflowFormTO.java | 24 +- .../common/lib/wrap/CorrelationRuleClass.java | 30 - .../syncope/common/lib/wrap/JobClass.java | 30 - .../syncope/common/lib/wrap/MailTemplate.java | 30 - .../common/lib/wrap/PropagationActionClass.java | 30 - .../common/lib/wrap/PushActionClass.java | 30 - .../common/lib/wrap/SyncActionClass.java | 30 - .../syncope/common/lib/wrap/Validator.java | 30 - .../rest/api/service/ConfigurationService.java | 23 - .../common/rest/api/service/PolicyService.java | 11 - .../rest/api/service/ResourceService.java | 11 - .../common/rest/api/service/SyncopeService.java | 33 + .../common/rest/api/service/TaskService.java | 36 +- syncope620/fit/reference/pom.xml | 56 +- .../src/main/resources/userWorkflow.bpmn20.xml | 577 ++++++++++++ .../src/main/resources/workflow.properties | 20 + .../fit/server/reference/AbstractITCase.java | 4 + .../fit/server/reference/ActivitiDetector.java | 10 +- .../server/reference/AuthenticationITCase.java | 2 +- .../fit/server/reference/PolicyITCase.java | 2 +- .../fit/server/reference/ResourceITCase.java | 3 +- .../fit/server/reference/TaskITCase.java | 12 +- .../fit/server/reference/UserITCase.java | 6 +- .../fit/server/reference/UserSelfITCase.java | 14 +- .../server/reference/UserWorkflowITCase.java | 6 +- .../fit/server/reference/WorkflowITCase.java | 17 +- .../src/test/resources/addActivitiToContent.xsl | 50 ++ syncope620/pom.xml | 15 +- .../server/logic/ConfigurationLogic.java | 47 - .../syncope/server/logic/EntitlementLogic.java | 2 +- .../syncope/server/logic/LoggerLogic.java | 2 +- .../syncope/server/logic/NotificationLogic.java | 12 +- .../syncope/server/logic/PolicyLogic.java | 10 - .../syncope/server/logic/ReportLogic.java | 40 +- .../syncope/server/logic/ResourceLogic.java | 27 +- .../apache/syncope/server/logic/RoleLogic.java | 14 +- .../syncope/server/logic/SchemaLogic.java | 19 +- .../server/logic/SecurityQuestionLogic.java | 12 +- .../syncope/server/logic/SyncopeLogic.java | 143 +++ .../apache/syncope/server/logic/TaskLogic.java | 32 +- .../apache/syncope/server/logic/UserLogic.java | 16 +- .../init/ImplementationClassNamesLoader.java | 15 +- .../logic/src/main/resources/logicContext.xml | 4 + .../src/test/resources/content.xml | 2 +- .../provisioning/api/ConnIdBundleManager.java | 2 + .../java/ConnIdBundleManagerImpl.java | 7 + .../provisioning/java/sync/SyncJobImpl.java | 4 +- .../cxf/service/ConfigurationServiceImpl.java | 14 - .../rest/cxf/service/PolicyServiceImpl.java | 9 +- .../rest/cxf/service/ResourceServiceImpl.java | 7 - .../rest/cxf/service/SyncopeServiceImpl.java | 38 + .../rest/cxf/service/TaskServiceImpl.java | 19 - syncope620/server/workflow-activiti/pom.xml | 5 + .../activiti/ActivitiDefinitionLoader.java | 104 +++ .../workflow/activiti/ActivitiImportUtils.java | 92 ++ .../activiti/ActivitiUserWorkflowAdapter.java | 893 +++++++++++++++++++ .../activiti/SyncopeEntitiesVariableType.java | 35 + .../workflow/activiti/SyncopeGroupManager.java | 122 +++ .../activiti/SyncopeGroupQueryImpl.java | 157 ++++ .../workflow/activiti/SyncopeSession.java | 26 + .../activiti/SyncopeSessionFactory.java | 45 + .../workflow/activiti/SyncopeUserManager.java | 170 ++++ .../workflow/activiti/SyncopeUserQueryImpl.java | 218 +++++ .../task/AbstractActivitiServiceTask.java | 48 + .../workflow/activiti/task/AutoActivate.java | 31 + .../server/workflow/activiti/task/Create.java | 51 ++ .../server/workflow/activiti/task/Delete.java | 40 + .../workflow/activiti/task/GenerateToken.java | 43 + .../server/workflow/activiti/task/Notify.java | 62 ++ .../workflow/activiti/task/PasswordReset.java | 44 + .../workflow/activiti/task/Reactivate.java | 29 + .../server/workflow/activiti/task/Suspend.java | 29 + .../server/workflow/activiti/task/Update.java | 54 ++ .../activiti/ActivitiDefinitionLoader.java | 104 --- .../workflow/activiti/ActivitiImportUtils.java | 92 -- .../activiti/ActivitiUserWorkflowAdapter.java | 893 ------------------- .../activiti/SyncopeEntitiesVariableType.java | 35 - .../workflow/activiti/SyncopeGroupManager.java | 122 --- .../activiti/SyncopeGroupQueryImpl.java | 157 ---- .../workflow/activiti/SyncopeSession.java | 26 - .../activiti/SyncopeSessionFactory.java | 45 - .../workflow/activiti/SyncopeUserManager.java | 170 ---- .../workflow/activiti/SyncopeUserQueryImpl.java | 218 ----- .../task/AbstractActivitiServiceTask.java | 48 - .../workflow/activiti/task/AutoActivate.java | 31 - .../syncope/workflow/activiti/task/Create.java | 51 -- .../syncope/workflow/activiti/task/Delete.java | 40 - .../workflow/activiti/task/GenerateToken.java | 43 - .../syncope/workflow/activiti/task/Notify.java | 62 -- .../workflow/activiti/task/PasswordReset.java | 44 - .../workflow/activiti/task/Reactivate.java | 29 - .../syncope/workflow/activiti/task/Suspend.java | 29 - .../syncope/workflow/activiti/task/Update.java | 54 -- .../src/main/resources/workflow.properties | 20 + .../main/resources/workflowActivitiContext.xml | 14 +- .../src/main/resources/workflow.properties | 2 + 100 files changed, 3584 insertions(+), 2909 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java ---------------------------------------------------------------------- diff --git a/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java b/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java index 0269e92..26d023b 100644 --- a/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java +++ b/common/src/main/java/org/apache/syncope/common/to/WorkflowFormTO.java @@ -32,7 +32,6 @@ import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import org.apache.syncope.common.AbstractBaseBean; -import org.apache.syncope.common.to.WorkflowFormPropertyTO; @XmlRootElement(name = "workflowForm") @XmlType http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java ---------------------------------------------------------------------- diff --git a/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java b/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java index 8407662..11bfa51 100644 --- a/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java +++ b/syncope620/client/lib/src/main/java/org/apache/syncope/client/lib/SyncopeClient.java @@ -20,16 +20,13 @@ package org.apache.syncope.client.lib; import javax.ws.rs.core.EntityTag; import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.syncope.common.lib.search.OrderByClauseBuilder; import org.apache.syncope.common.lib.search.RoleFiqlSearchConditionBuilder; import org.apache.syncope.common.lib.search.UserFiqlSearchConditionBuilder; -import org.apache.syncope.common.lib.types.SubjectType; import org.apache.syncope.common.rest.api.Preference; import org.apache.syncope.common.rest.api.RESTHeaders; import org.apache.syncope.common.rest.api.service.UserSelfService; -import org.apache.syncope.common.rest.api.service.WorkflowService; /** * Entry point for client access to all REST services exposed by Syncope core; obtain instances via @@ -239,31 +236,6 @@ public class SyncopeClient { } /** - * Checks whether Activiti workflow is enabled for users / roles, by calling <tt>WorkflowService</tt>'s options. - * - * @param subjectType user / role - * @return whether Activiti workflow is enabled for given attributable type - * @see WorkflowService#getOptions(org.apache.syncope.common.types.SubjectType) - */ - public boolean isActivitiEnabledFor(final SubjectType subjectType) { - Response options = getService(WorkflowService.class).getOptions(subjectType); - - boolean result; - switch (subjectType) { - case ROLE: - result = Boolean.valueOf(options.getHeaderString(RESTHeaders.ACTIVITI_ROLE_ENABLED)); - break; - - case USER: - default: - result = Boolean.valueOf(options.getHeaderString(RESTHeaders.ACTIVITI_USER_ENABLED)); - break; - } - - return result; - } - - /** * Fetches <tt>ETag</tt> header value from latest service run (if available). * * @param <T> any service class http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java new file mode 100644 index 0000000..d21e03f --- /dev/null +++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/SyncopeTO.java @@ -0,0 +1,186 @@ +/* + * 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.common.lib.to; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import org.apache.syncope.common.lib.AbstractBaseBean; + +@XmlRootElement(name = "syncope") +@XmlType +public class SyncopeTO extends AbstractBaseBean { + + private static final long serialVersionUID = -7941853999417673827L; + + private String version; + + private final List<String> connIdLocations = new ArrayList<>(); + + private String attributableTransformer; + + private String userWorkflowAdapter; + + private String roleWorkflowAdapter; + + private String userProvisioningManager; + + private String roleProvisioningManager; + + private final List<String> reportlets = new ArrayList<>(); + + private final List<String> taskJobs = new ArrayList<>(); + + private final List<String> propagationActions = new ArrayList<>(); + + private final List<String> syncActions = new ArrayList<>(); + + private final List<String> pushActions = new ArrayList<>(); + + private final List<String> syncCorrelationRules = new ArrayList<>(); + + private final List<String> pushCorrelationRules = new ArrayList<>(); + + private final List<String> validators = new ArrayList<>(); + + private final List<String> mailTemplates = new ArrayList<>(); + + public String getVersion() { + return version; + } + + @XmlElementWrapper(name = "connIdLocations") + @XmlElement(name = "connIdLocation") + @JsonProperty("connIdLocations") + public List<String> getConnIdLocations() { + return connIdLocations; + } + + public String getAttributableTransformer() { + return attributableTransformer; + } + + public String getUserWorkflowAdapter() { + return userWorkflowAdapter; + } + + public String getRoleWorkflowAdapter() { + return roleWorkflowAdapter; + } + + public String getUserProvisioningManager() { + return userProvisioningManager; + } + + public String getRoleProvisioningManager() { + return roleProvisioningManager; + } + + @XmlElementWrapper(name = "reportlets") + @XmlElement(name = "reportlet") + @JsonProperty("reportlets") + public List<String> getReportlets() { + return reportlets; + } + + @XmlElementWrapper(name = "taskJobs") + @XmlElement(name = "taskJob") + @JsonProperty("taskJobs") + public List<String> getTaskJobs() { + return taskJobs; + } + + @XmlElementWrapper(name = "propagationActions") + @XmlElement(name = "propagationAction") + @JsonProperty("propagationActions") + public List<String> getPropagationActions() { + return propagationActions; + } + + @XmlElementWrapper(name = "syncActions") + @XmlElement(name = "syncAction") + @JsonProperty("syncActions") + public List<String> getSyncActions() { + return syncActions; + } + + @XmlElementWrapper(name = "pushActions") + @XmlElement(name = "pushAction") + @JsonProperty("pushActions") + public List<String> getPushActions() { + return pushActions; + } + + @XmlElementWrapper(name = "syncCorrelationRules") + @XmlElement(name = "syncCorrelationRule") + @JsonProperty("syncCorrelationRules") + public List<String> getSyncCorrelationRules() { + return syncCorrelationRules; + } + + @XmlElementWrapper(name = "pushCorrelationRules") + @XmlElement(name = "pushCorrelationRule") + @JsonProperty("pushCorrelationRules") + public List<String> getPushCorrelationRules() { + return pushCorrelationRules; + } + + @XmlElementWrapper(name = "validators") + @XmlElement(name = "validator") + @JsonProperty("validators") + public List<String> getValidators() { + return validators; + } + + @XmlElementWrapper(name = "mailTemplates") + @XmlElement(name = "mailTemplate") + @JsonProperty("mailTemplates") + public List<String> getMailTemplates() { + return mailTemplates; + } + + public void setVersion(final String version) { + this.version = version; + } + + public void setAttributableTransformer(final String attributableTransformer) { + this.attributableTransformer = attributableTransformer; + } + + public void setUserWorkflowAdapter(final String userWorkflowAdapter) { + this.userWorkflowAdapter = userWorkflowAdapter; + } + + public void setRoleWorkflowAdapter(final String roleWorkflowAdapter) { + this.roleWorkflowAdapter = roleWorkflowAdapter; + } + + public void setUserProvisioningManager(final String userProvisioningManager) { + this.userProvisioningManager = userProvisioningManager; + } + + public void setRoleProvisioningManager(final String roleProvisioningManager) { + this.roleProvisioningManager = roleProvisioningManager; + } + +} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java index c89bfcd..5b67c92 100644 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java +++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormPropertyTO.java @@ -31,7 +31,7 @@ public class WorkflowFormPropertyTO extends AbstractBaseBean { private static final long serialVersionUID = 9139969592634304261L; - private String key; + private String id; private String name; @@ -47,14 +47,14 @@ public class WorkflowFormPropertyTO extends AbstractBaseBean { private String datePattern; - private Map<String, String> enumValues = new HashMap<>(); + private final Map<String, String> enumValues = new HashMap<>(); - public String getKey() { - return key; + public String getId() { + return id; } - public void setKey(final String key) { - this.key = key; + public void setId(final String id) { + this.id = id; } public String getName() { http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java index f63d9fe..90dc7c2 100644 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java +++ b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowFormTO.java @@ -52,11 +52,7 @@ public class WorkflowFormTO extends AbstractBaseBean { private String owner; - private final List<WorkflowFormPropertyTO> properties; - - public WorkflowFormTO() { - properties = new ArrayList<>(); - } + private final List<WorkflowFormPropertyTO> properties = new ArrayList<>(); public long getUserKey() { return userKey; @@ -133,27 +129,21 @@ public class WorkflowFormTO extends AbstractBaseBean { @JsonIgnore public Map<String, WorkflowFormPropertyTO> getPropertyMap() { - Map<String, WorkflowFormPropertyTO> result; - - if (getProperties() == null) { - result = Collections.emptyMap(); - } else { - result = new HashMap<>(); - for (WorkflowFormPropertyTO prop : getProperties()) { - result.put(prop.getKey(), prop); - } - result = Collections.unmodifiableMap(result); + Map<String, WorkflowFormPropertyTO> result = new HashMap<>(); + for (WorkflowFormPropertyTO prop : getProperties()) { + result.put(prop.getId(), prop); } + result = Collections.unmodifiableMap(result); return result; } @JsonIgnore public Map<String, String> getPropertiesForSubmit() { - Map<String, String> props = new HashMap<String, String>(); + Map<String, String> props = new HashMap<>(); for (WorkflowFormPropertyTO prop : getProperties()) { if (prop.isWritable()) { - props.put(prop.getKey(), prop.getValue()); + props.put(prop.getId(), prop.getValue()); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java deleted file mode 100644 index 6a8997c..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/CorrelationRuleClass.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "correlationRuleClass") -@XmlType -public class CorrelationRuleClass extends AbstractWrappable<String> { - - private static final long serialVersionUID = -6715106427060816725L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java deleted file mode 100644 index b85a6f5..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/JobClass.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "jobClass") -@XmlType -public class JobClass extends AbstractWrappable<String> { - - private static final long serialVersionUID = -1953799905627918822L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java deleted file mode 100644 index 11e254d..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/MailTemplate.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "mailTemplate") -@XmlType -public class MailTemplate extends AbstractWrappable<String> { - - private static final long serialVersionUID = 7232619557172031478L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java deleted file mode 100644 index f8e54b6..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PropagationActionClass.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "propagationActionClass") -@XmlType -public class PropagationActionClass extends AbstractWrappable<String> { - - private static final long serialVersionUID = 2187654394121198308L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java deleted file mode 100644 index e12fd8e..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/PushActionClass.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "pushActionClass") -@XmlType -public class PushActionClass extends AbstractWrappable<String> { - - private static final long serialVersionUID = 1669581609310071906L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java deleted file mode 100644 index d6c7a77..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/SyncActionClass.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "syncActionClass") -@XmlType -public class SyncActionClass extends AbstractWrappable<String> { - - private static final long serialVersionUID = 1669581609310071905L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java ---------------------------------------------------------------------- diff --git a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java b/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java deleted file mode 100644 index 71cad00..0000000 --- a/syncope620/common/lib/src/main/java/org/apache/syncope/common/lib/wrap/Validator.java +++ /dev/null @@ -1,30 +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.common.lib.wrap; - -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -@XmlRootElement(name = "validator") -@XmlType -public class Validator extends AbstractWrappable<String> { - - private static final long serialVersionUID = 7233619557177034453L; - -} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java ---------------------------------------------------------------------- diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java index d886b91..3fa5f8a 100644 --- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java +++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java @@ -18,7 +18,6 @@ */ package org.apache.syncope.common.rest.api.service; -import java.util.List; import javax.validation.constraints.NotNull; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; @@ -31,8 +30,6 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.syncope.common.lib.to.AttrTO; import org.apache.syncope.common.lib.to.ConfTO; -import org.apache.syncope.common.lib.wrap.MailTemplate; -import org.apache.syncope.common.lib.wrap.Validator; /** * REST operations for configuration. @@ -50,26 +47,6 @@ public interface ConfigurationService extends JAXRSService { Response export(); /** - * Returns a list of known mail-template names. - * - * @return a list of known mail-template names - */ - @GET - @Path("mailTemplates") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<MailTemplate> getMailTemplates(); - - /** - * Returns a list of known validator names. - * - * @return a list of known validator names - */ - @GET - @Path("validators") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<Validator> getValidators(); - - /** * Returns all configuration parameters. * * @return all configuration parameters http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java ---------------------------------------------------------------------- diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java index 6050d9c..c2a4e6a 100644 --- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java +++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java @@ -36,7 +36,6 @@ import org.apache.cxf.jaxrs.model.wadl.Descriptions; import org.apache.cxf.jaxrs.model.wadl.DocTarget; import org.apache.syncope.common.lib.to.AbstractPolicyTO; import org.apache.syncope.common.lib.types.PolicyType; -import org.apache.syncope.common.lib.wrap.CorrelationRuleClass; /** * REST operations for policies. @@ -45,16 +44,6 @@ import org.apache.syncope.common.lib.wrap.CorrelationRuleClass; public interface PolicyService extends JAXRSService { /** - * Returns a list of classes to be used as correlation rules. - * - * @return list of classes to be used as correlation rules - */ - @GET - @Path("syncCorrelationRuleClasses") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<CorrelationRuleClass> getSyncCorrelationRuleClasses(); - - /** * Returns the policy matching the given key. * * @param policyKey key of requested policy http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java ---------------------------------------------------------------------- diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java index 044025b..313b0e9 100644 --- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java +++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java @@ -40,7 +40,6 @@ import org.apache.syncope.common.lib.to.ConnObjectTO; import org.apache.syncope.common.lib.to.ResourceTO; import org.apache.syncope.common.lib.types.ResourceDeassociationActionType; import org.apache.syncope.common.lib.types.SubjectType; -import org.apache.syncope.common.lib.wrap.PropagationActionClass; import org.apache.syncope.common.lib.wrap.SubjectId; /** @@ -64,16 +63,6 @@ public interface ResourceService extends JAXRSService { @NotNull @PathParam("type") SubjectType type, @NotNull @PathParam("key") Long key); /** - * Returns a list of classes that can be used to customize the propagation process. - * - * @return list of classes that can be used to customize the propagation process - */ - @GET - @Path("propagationActionsClasses") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<PropagationActionClass> getPropagationActionsClasses(); - - /** * Returns the resource with matching name. * * @param resourceKey Name of resource to be read http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java ---------------------------------------------------------------------- diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java new file mode 100644 index 0000000..55cc092 --- /dev/null +++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SyncopeService.java @@ -0,0 +1,33 @@ +/* + * 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.common.rest.api.service; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import org.apache.syncope.common.lib.to.SyncopeTO; + +@Path("") +public interface SyncopeService extends JAXRSService { + + @GET + @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_XHTML_XML }) + SyncopeTO info(); +} http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java ---------------------------------------------------------------------- diff --git a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java index c3296dd..24c9b0e 100644 --- a/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java +++ b/syncope620/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java @@ -18,7 +18,6 @@ */ package org.apache.syncope.common.rest.api.service; -import java.util.List; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.ws.rs.Consumes; @@ -45,9 +44,6 @@ import org.apache.syncope.common.lib.to.ReportExecTO; import org.apache.syncope.common.lib.to.SchedTaskTO; import org.apache.syncope.common.lib.to.TaskExecTO; import org.apache.syncope.common.lib.types.TaskType; -import org.apache.syncope.common.lib.wrap.JobClass; -import org.apache.syncope.common.lib.wrap.PushActionClass; -import org.apache.syncope.common.lib.wrap.SyncActionClass; /** * REST operations for tasks. @@ -56,37 +52,7 @@ import org.apache.syncope.common.lib.wrap.SyncActionClass; public interface TaskService extends JAXRSService { /** - * Returns a list of classes to be used for jobs. - * - * @return list of classes to be used for jobs - */ - @GET - @Path("jobClasses") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<JobClass> getJobClasses(); - - /** - * Returns a list of classes to be used as synchronization actions. - * - * @return list of classes to be used as synchronization actions - */ - @GET - @Path("syncActionsClasses") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<SyncActionClass> getSyncActionsClasses(); - - /** - * Returns a list of classes to be used as push actions. - * - * @return list of classes to be used as push actions - */ - @GET - @Path("pushActionsClasses") - @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - List<PushActionClass> getPushActionsClasses(); - - /** - * Returns the task matching the given id. + * Returns the task matching the given key. * * @param taskKey key of task to be read * @param <T> type of taskTO http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/pom.xml ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/pom.xml b/syncope620/fit/reference/pom.xml index 564d8f0..ec094cb 100644 --- a/syncope620/fit/reference/pom.xml +++ b/syncope620/fit/reference/pom.xml @@ -241,7 +241,7 @@ under the License. <cargo.tomcat.ajp.port>${cargo.tomcat.ajp.port}</cargo.tomcat.ajp.port> <cargo.rmi.port>${cargo.rmi.port}</cargo.rmi.port> - <cargo.jvmargs>-noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs> + <cargo.jvmargs>-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs> </properties> <configfiles> <configfile> @@ -355,7 +355,7 @@ under the License. <configuration> <properties> <cargo.jvmargs>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n - -noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs> + -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=512m</cargo.jvmargs> </properties> </configuration> </configuration> @@ -427,5 +427,57 @@ under the License. </plugins> </build> </profile> + + <profile> + <id>all</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + + <dependencies> + <dependency> + <groupId>org.apache.syncope.server</groupId> + <artifactId>syncope-server-workflow-activiti</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <!-- Adds Activiti test content --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>xml-maven-plugin</artifactId> + <inherited>true</inherited> + <executions> + <execution> + <phase>prepare-package</phase> + <goals> + <goal>transform</goal> + </goals> + </execution> + </executions> + <configuration> + <transformationSets> + <transformationSet> + <dir>${project.build.directory}/classes</dir> + <includes> + <include>content.xml</include> + </includes> + <outputDir>${project.build.directory}/classes</outputDir> + <stylesheet>${basedir}/src/test/resources/addActivitiToContent.xsl</stylesheet> + <outputProperties> + <outputProperty> + <name>indent</name> + <value>yes</value> + </outputProperty> + </outputProperties> + </transformationSet> + </transformationSets> + </configuration> + </plugin> + </plugins> + </build> + </profile> </profiles> </project> http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml b/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml new file mode 100644 index 0000000..d26dbe3 --- /dev/null +++ b/syncope620/fit/reference/src/main/resources/userWorkflow.bpmn20.xml @@ -0,0 +1,577 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +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. +--> +<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:activiti="http://activiti.org/bpmn" + xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" + xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" + xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" + typeLanguage="http://www.w3.org/2001/XMLSchema" + expressionLanguage="http://www.w3.org/1999/XPath" + targetNamespace="http://activiti.org/bpmn20"> + + <process id="userWorkflow" name="User Workflow" isExecutable="true"> + <startEvent id="theStart"/> + <sequenceFlow id="flow1" sourceRef="theStart" targetRef="create"/> + <serviceTask id="create" name="Create" activiti:expression="#{create.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow2" sourceRef="create" targetRef="createGW"/> + <exclusiveGateway id="createGW"/> + <sequenceFlow id="createAsAnonymous2Approval" sourceRef="createGW" targetRef="createApproval"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == 'anonymous' || user.getRoleKeys().contains(9)}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="create2Activate" sourceRef="createGW" targetRef="enableGW"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!user.getRoleKeys().contains(9)}]]></conditionExpression> + </sequenceFlow> + <userTask id="createApproval" name="Create approval" activiti:candidateGroups="7" activiti:formKey="createApproval"> + <extensionElements> + <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> + </extensionElements> + </userTask> + <sequenceFlow id="flow3" sourceRef="createApproval" targetRef="createApprovalGW"/> + <exclusiveGateway id="createApprovalGW"/> + <sequenceFlow id="createApprovalGW2EnableGW" sourceRef="createApprovalGW" targetRef="enableGW"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="createApproval2Reject" sourceRef="createApprovalGW" targetRef="reject"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> + </sequenceFlow> + <exclusiveGateway id="enableGW"/> + <sequenceFlow id="createApprovalGW2OptIn" sourceRef="enableGW" targetRef="generateToken"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${user.getRoleKeys().contains(11)}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="createApprovalGW2Activate" sourceRef="enableGW" targetRef="activate"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${enabled == null}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="createApprovalGW2Active" sourceRef="enableGW" targetRef="active"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${enabled}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="createApprovalGW2Suspended" sourceRef="enableGW" targetRef="suspend"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!enabled}]]></conditionExpression> + </sequenceFlow> + <serviceTask id="activate" name="Activate" activiti:expression="#{autoActivate.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow4" sourceRef="activate" targetRef="active"/> + <serviceTask id="generateToken" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow5" sourceRef="generateToken" targetRef="created"/> + <userTask id="created" name="Created"/> + <sequenceFlow id="flow6" sourceRef="created" targetRef="optinGW"/> + <exclusiveGateway id="optinGW"/> + <sequenceFlow id="created2Activate" sourceRef="optinGW" targetRef="removeToken"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${user.checkToken(token)}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="created2Created" sourceRef="optinGW" targetRef="created"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!user.checkToken(token)}]]></conditionExpression> + </sequenceFlow> + <scriptTask id="removeToken" name="Remove Token and Activate" scriptFormat="groovy" activiti:autoStoreVariables="false"> + <script> + user.removeToken() + </script> + </scriptTask> + <sequenceFlow id="flow7" sourceRef="removeToken" targetRef="active"/> + <userTask id="active" name="Active"/> + <sequenceFlow id="flow8" sourceRef="active" targetRef="activeGw"/> + <exclusiveGateway id="activeGw"/> + <sequenceFlow id="active2UpdateApproval" sourceRef="activeGw" targetRef="updateApproval"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == user.getUsername() and task == 'update' + and (!userMod.getMembershipsToAdd().isEmpty() or !userMod.getMembershipsToRemove().isEmpty())}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2DeleteApproval" sourceRef="activeGw" targetRef="deleteApproval"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${wfExecutor == user.getUsername() and task == 'delete'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2Update" sourceRef="activeGw" targetRef="update"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'update'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2Suspend" sourceRef="activeGw" targetRef="suspend"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'suspend'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2Delete" sourceRef="activeGw" targetRef="delete"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2RequestPasswordReset" sourceRef="activeGw" targetRef="generateToken4PasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'requestPasswordReset'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="active2ConfirmPasswordReset" sourceRef="activeGw" targetRef="checkToken4ConfirmPasswordReset"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'confirmPasswordReset'}]]></conditionExpression> + </sequenceFlow> + <userTask id="updateApproval" name="Update approval" activiti:candidateGroups="7" activiti:formKey="updateApproval"> + <extensionElements> + <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> + </extensionElements> + </userTask> + <sequenceFlow id="flow8bis" sourceRef="updateApproval" targetRef="updateApprovalGW"/> + <exclusiveGateway id="updateApprovalGW"/> + <sequenceFlow id="updateApprovalGW2Update" sourceRef="updateApprovalGW" targetRef="update"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="updateApprovalGW2Reject" sourceRef="updateApprovalGW" targetRef="rejectUpdate"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> + </sequenceFlow> + <scriptTask id="rejectUpdate" name="Reject update" scriptFormat="groovy" activiti:autoStoreVariables="false"> + <script> + execution.setVariable("propByResource", null); + </script> + </scriptTask> + <sequenceFlow id="flow8ter" sourceRef="rejectUpdate" targetRef="active"/> + <serviceTask id="update" name="Update" activiti:expression="#{update.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow9" sourceRef="update" targetRef="active"/> + <serviceTask id="suspend" name="Suspend" activiti:expression="#{suspend.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow10" sourceRef="suspend" targetRef="suspended"/> + <userTask id="suspended" name="Suspended"/> + <sequenceFlow id="flow11" sourceRef="suspended" targetRef="suspendedGw"/> + <exclusiveGateway id="suspendedGw"/> + <sequenceFlow id="suspended2Reactivate" sourceRef="suspendedGw" targetRef="reactivate"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'reactivate'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="suspended2Delete" sourceRef="suspendedGw" targetRef="delete"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> + </sequenceFlow> + <serviceTask id="reactivate" name="Reactivate" activiti:expression="#{reactivate.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow12" sourceRef="reactivate" targetRef="active"/> + <scriptTask id="reject" name="Reject" scriptFormat="groovy" activiti:autoStoreVariables="false"> + <script> + def scriptVar = rejectReason + execution.setVariable("propByResource", null); + </script> + </scriptTask> + <sequenceFlow id="flow13" sourceRef="reject" targetRef="rejected"/> + <userTask id="rejected" name="Rejected"/> + <sequenceFlow id="flow14" sourceRef="rejected" targetRef="rejectedGw"/> + <exclusiveGateway id="rejectedGw"/> + <sequenceFlow id="rejected2Delete" sourceRef="rejectedGw" targetRef="delete"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${task == 'delete'}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="rejected2Rejected" sourceRef="rejectedGw" targetRef="rejected"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${empty task}]]></conditionExpression> + </sequenceFlow> + <userTask id="deleteApproval" name="Delete approval" activiti:candidateGroups="7" activiti:formKey="deleteApproval"> + <extensionElements> + <activiti:formProperty id="username" name="Username" type="string" expression="${user.username}" writable="false"/> + <activiti:formProperty id="approve" name="Approve?" type="boolean" variable="approve" required="true"/> + <activiti:formProperty id="rejectReason" name="Reason for rejecting" type="string" variable="rejectReason"/> + </extensionElements> + </userTask> + <sequenceFlow id="flow14bis" sourceRef="deleteApproval" targetRef="deleteApprovalGW"/> + <exclusiveGateway id="deleteApprovalGW"/> + <sequenceFlow id="deleteApprovalGW2Delete" sourceRef="deleteApprovalGW" targetRef="delete"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve}]]></conditionExpression> + </sequenceFlow> + <sequenceFlow id="deleteApprovalGW2Reject" sourceRef="deleteApprovalGW" targetRef="rejectDelete"> + <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approve}]]></conditionExpression> + </sequenceFlow> + <scriptTask id="rejectDelete" name="Reject delete" scriptFormat="groovy" activiti:autoStoreVariables="false"> + <script> + execution.setVariable("propByResource", null); + </script> + </scriptTask> + <sequenceFlow id="flow14ter" sourceRef="rejectDelete" targetRef="active"/> + + <serviceTask id="generateToken4PasswordReset" name="Generate token" activiti:expression="#{generateToken.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow15" sourceRef="generateToken4PasswordReset" targetRef="notify4RequestPasswordReset"/> + <serviceTask id="notify4RequestPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow16" sourceRef="notify4RequestPasswordReset" targetRef="active"/> + + <serviceTask id="checkToken4ConfirmPasswordReset" name="Check token, remove and update password" activiti:expression="#{passwordReset.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow17" sourceRef="checkToken4ConfirmPasswordReset" targetRef="notify4ConfirmPasswordReset"/> + <serviceTask id="notify4ConfirmPasswordReset" name="Notification" activiti:expression="#{notify.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow18" sourceRef="notify4ConfirmPasswordReset" targetRef="active"/> + + <serviceTask id="delete" name="Delete" activiti:expression="#{delete.execute(execution.processInstanceId)}"/> + <sequenceFlow id="flow99" sourceRef="delete" targetRef="theEnd"/> + <endEvent id="theEnd"/> + </process> + + <bpmndi:BPMNDiagram id="BPMNDiagram_userWorkflow"> + <bpmndi:BPMNPlane bpmnElement="userWorkflow" id="BPMNPlane_userWorkflow"> + <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart"> + <omgdc:Bounds height="30.0" width="30.0" x="0.0" y="512.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="create" id="BPMNShape_create"> + <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="497.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="createGW" id="BPMNShape_createGW"> + <omgdc:Bounds height="40.0" width="40.0" x="230.0" y="506.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="createApproval" id="BPMNShape_createApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="320.0" y="560.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="createApprovalGW" id="BPMNShape_createApprovalGW"> + <omgdc:Bounds height="40.0" width="40.0" x="470.0" y="556.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="enableGW" id="BPMNShape_enableGW"> + <omgdc:Bounds height="40.0" width="40.0" x="590.0" y="429.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="activate" id="BPMNShape_activate"> + <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="610.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="generateToken" id="BPMNShape_generateToken"> + <omgdc:Bounds height="60.0" width="100.0" x="702.0" y="188.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="created" id="BPMNShape_created"> + <omgdc:Bounds height="60.0" width="100.0" x="852.0" y="213.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="optinGW" id="BPMNShape_optinGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1002.0" y="240.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="removeToken" id="BPMNShape_removeToken"> + <omgdc:Bounds height="60.0" width="100.0" x="1092.0" y="248.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="active" id="BPMNShape_active"> + <omgdc:Bounds height="60.0" width="100.0" x="1030.0" y="511.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="activeGw" id="BPMNShape_activeGw"> + <omgdc:Bounds height="40.0" width="40.0" x="1400.0" y="520.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="updateApproval" id="BPMNShape_updateApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="740.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="updateApprovalGW" id="BPMNShape_updateApprovalGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="740.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="rejectUpdate" id="BPMNShape_rejectUpdate"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="840.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="700.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="suspend" id="BPMNShape_suspend"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="100.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="suspended" id="BPMNShape_suspended"> + <omgdc:Bounds height="60.0" width="100.0" x="1640.0" y="120.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="suspendedGw" id="BPMNShape_suspendedGw"> + <omgdc:Bounds height="40.0" width="40.0" x="1820.0" y="180.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="reactivate" id="BPMNShape_reactivate"> + <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="110.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="reject" id="BPMNShape_reject"> + <omgdc:Bounds height="60.0" width="100.0" x="560.0" y="659.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="rejected" id="BPMNShape_rejected"> + <omgdc:Bounds height="60.0" width="100.0" x="710.0" y="770.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="rejectedGw" id="BPMNShape_rejectedGw"> + <omgdc:Bounds height="40.0" width="40.0" x="890.0" y="775.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="deleteApproval" id="BPMNShape_deleteApproval"> + <omgdc:Bounds height="60.0" width="100.0" x="1490.0" y="280.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="deleteApprovalGW" id="BPMNShape_deleteApprovalGW"> + <omgdc:Bounds height="40.0" width="40.0" x="1670.0" y="300.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="rejectDelete" id="BPMNShape_rejectDelete"> + <omgdc:Bounds height="60.0" width="100.0" x="1790.0" y="240.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="delete" id="BPMNShape_delete"> + <omgdc:Bounds height="60.0" width="100.0" x="1940.0" y="358.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd"> + <omgdc:Bounds height="28.0" width="28.0" x="2078.1893792531678" y="374.0"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="generateToken4PasswordReset" id="BPMNShape_generateToken4PasswordReset"> + <omgdc:Bounds height="59.99999999999994" width="100.0" x="1543.209935088986" y="452.6749142927693"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="notify4RequestPasswordReset" id="BPMNShape_notify4RequestPasswordReset"> + <omgdc:Bounds height="60.00000000000006" width="100.0" x="1748.9712597675173" y="452.6749142927692"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="checkToken4ConfirmPasswordReset" id="BPMNShape_checkToken4ConfirmPasswordReset"> + <omgdc:Bounds height="60.0" width="100.0" x="1558.797798366986" y="561.167207412115"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNShape bpmnElement="notify4ConfirmPasswordReset" id="BPMNShape_notify4ConfirmPasswordReset"> + <omgdc:Bounds height="60.0" width="100.0" x="1748.971259767517" y="561.167207412115"/> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge bpmnElement="flow17" id="BPMNEdge_flow17"> + <omgdi:waypoint x="1658.797798366986" y="591.167207412115"/> + <omgdi:waypoint x="1748.971259767517" y="591.167207412115"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12"> + <omgdi:waypoint x="1940.0" y="129.51612903225805"/> + <omgdi:waypoint x="1928.0" y="127.0"/> + <omgdi:waypoint x="1378.0" y="40.0"/> + <omgdi:waypoint x="1097.8443113772455" y="511.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11"> + <omgdi:waypoint x="1740.0" y="150.0"/> + <omgdi:waypoint x="1752.0" y="150.0"/> + <omgdi:waypoint x="1752.0" y="200.0"/> + <omgdi:waypoint x="1820.0" y="200.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2DeleteApproval" id="BPMNEdge_active2DeleteApproval"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="310.0"/> + <omgdi:waypoint x="1490.0" y="310.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow14bis" id="BPMNEdge_flow14bis"> + <omgdi:waypoint x="1590.0" y="310.0"/> + <omgdi:waypoint x="1602.0" y="310.0"/> + <omgdi:waypoint x="1602.0" y="320.0"/> + <omgdi:waypoint x="1670.0" y="320.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow10" id="BPMNEdge_flow10"> + <omgdi:waypoint x="1590.0" y="130.0"/> + <omgdi:waypoint x="1602.0" y="130.0"/> + <omgdi:waypoint x="1602.0" y="150.0"/> + <omgdi:waypoint x="1640.0" y="150.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2RequestPasswordReset" id="BPMNEdge_active2RequestPasswordReset"> + <omgdi:waypoint x="1439.5" y="540.5"/> + <omgdi:waypoint x="1593.209935088986" y="540.5"/> + <omgdi:waypoint x="1593.209935088986" y="512.6749142927692"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2ConfirmPasswordReset" id="BPMNEdge_active2ConfirmPasswordReset"> + <omgdi:waypoint x="1439.5" y="540.5"/> + <omgdi:waypoint x="1608.797798366986" y="540.5"/> + <omgdi:waypoint x="1608.797798366986" y="561.167207412115"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Delete" id="BPMNEdge_deleteApprovalGW2Delete"> + <omgdi:waypoint x="1710.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="388.0"/> + <omgdi:waypoint x="1940.0" y="388.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApproval2Reject" id="BPMNEdge_createApproval2Reject"> + <omgdi:waypoint x="510.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="689.0"/> + <omgdi:waypoint x="560.0" y="689.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2Delete" id="BPMNEdge_active2Delete"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="680.6812757582483"/> + <omgdi:waypoint x="1955.9214707261015" y="680.6812757582483"/> + <omgdi:waypoint x="1986.506931044467" y="418.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Update" id="BPMNEdge_updateApprovalGW2Update"> + <omgdi:waypoint x="1710.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="730.0"/> + <omgdi:waypoint x="1790.0" y="730.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2UpdateApproval" id="BPMNEdge_active2UpdateApproval"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="540.0"/> + <omgdi:waypoint x="1454.0" y="770.0"/> + <omgdi:waypoint x="1490.0" y="770.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="rejected2Delete" id="BPMNEdge_rejected2Delete"> + <omgdi:waypoint x="930.0" y="795.0"/> + <omgdi:waypoint x="972.0" y="795.0"/> + <omgdi:waypoint x="1470.0" y="911.0"/> + <omgdi:waypoint x="1990.0" y="911.0"/> + <omgdi:waypoint x="1990.0" y="418.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Active" id="BPMNEdge_createApprovalGW2Active"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="540.0"/> + <omgdi:waypoint x="1030.0" y="540.8768472906404"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="updateApprovalGW2Reject" id="BPMNEdge_updateApprovalGW2Reject"> + <omgdi:waypoint x="1710.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="760.0"/> + <omgdi:waypoint x="1752.0" y="870.0"/> + <omgdi:waypoint x="1790.0" y="870.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow8ter" id="BPMNEdge_flow8ter"> + <omgdi:waypoint x="1790.0" y="879.6774193548387"/> + <omgdi:waypoint x="1778.0" y="882.0"/> + <omgdi:waypoint x="1225.0" y="787.0"/> + <omgdi:waypoint x="1080.0" y="726.0"/> + <omgdi:waypoint x="1080.0" y="571.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15"> + <omgdi:waypoint x="1643.209935088986" y="482.6749142927693"/> + <omgdi:waypoint x="1748.9712597675173" y="482.67491429276924"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="suspended2Reactivate" id="BPMNEdge_suspended2Reactivate"> + <omgdi:waypoint x="1860.0" y="200.0"/> + <omgdi:waypoint x="1902.0" y="200.0"/> + <omgdi:waypoint x="1902.0" y="140.0"/> + <omgdi:waypoint x="1940.0" y="140.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13"> + <omgdi:waypoint x="660.0" y="689.0"/> + <omgdi:waypoint x="672.0" y="689.0"/> + <omgdi:waypoint x="672.0" y="800.0"/> + <omgdi:waypoint x="710.0" y="800.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14"> + <omgdi:waypoint x="760.0" y="770.0"/> + <omgdi:waypoint x="760.0" y="732.8074937730017"/> + <omgdi:waypoint x="910.0" y="732.8074937730017"/> + <omgdi:waypoint x="910.0" y="775.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2EnableGW" id="BPMNEdge_createApprovalGW2EnableGW"> + <omgdi:waypoint x="510.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="576.0"/> + <omgdi:waypoint x="522.0" y="449.0"/> + <omgdi:waypoint x="590.0" y="449.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2Update" id="BPMNEdge_active2Update"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1456.0" y="540.0"/> + <omgdi:waypoint x="1456.0" y="730.0"/> + <omgdi:waypoint x="1790.0" y="730.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="create2Activate" id="BPMNEdge_create2Activate"> + <omgdi:waypoint x="270.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="449.0"/> + <omgdi:waypoint x="590.0" y="449.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="active2Suspend" id="BPMNEdge_active2Suspend"> + <omgdi:waypoint x="1440.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="540.0"/> + <omgdi:waypoint x="1452.0" y="130.0"/> + <omgdi:waypoint x="1490.0" y="130.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="suspended2Delete" id="BPMNEdge_suspended2Delete"> + <omgdi:waypoint x="1860.0" y="200.0"/> + <omgdi:waypoint x="1990.0" y="200.0"/> + <omgdi:waypoint x="1990.0" y="358.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="created2Activate" id="BPMNEdge_created2Activate"> + <omgdi:waypoint x="1042.0" y="260.0"/> + <omgdi:waypoint x="1054.0" y="260.0"/> + <omgdi:waypoint x="1054.0" y="278.0"/> + <omgdi:waypoint x="1092.0" y="278.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createAsAnonymous2Approval" id="BPMNEdge_createAsAnonymous2Approval"> + <omgdi:waypoint x="270.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="526.0"/> + <omgdi:waypoint x="282.0" y="590.0"/> + <omgdi:waypoint x="320.0" y="590.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> + <omgdi:waypoint x="420.0" y="590.0"/> + <omgdi:waypoint x="432.0" y="590.0"/> + <omgdi:waypoint x="432.0" y="576.0"/> + <omgdi:waypoint x="470.0" y="576.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> + <omgdi:waypoint x="180.0" y="527.0"/> + <omgdi:waypoint x="192.0" y="527.0"/> + <omgdi:waypoint x="192.0" y="526.0"/> + <omgdi:waypoint x="230.0" y="526.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="rejected2Rejected" id="BPMNEdge_rejected2Rejected"> + <omgdi:waypoint x="890.6451612903226" y="795.6451612903226"/> + <omgdi:waypoint x="810.0" y="798.3333333333334"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5"> + <omgdi:waypoint x="802.0" y="218.0"/> + <omgdi:waypoint x="814.0" y="218.0"/> + <omgdi:waypoint x="814.0" y="243.0"/> + <omgdi:waypoint x="852.0" y="243.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4"> + <omgdi:waypoint x="810.0" y="640.0"/> + <omgdi:waypoint x="822.0" y="640.0"/> + <omgdi:waypoint x="959.0" y="640.0"/> + <omgdi:waypoint x="1043.3333333333333" y="571.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Suspended" id="BPMNEdge_createApprovalGW2Suspended"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="130.0"/> + <omgdi:waypoint x="1490.0" y="130.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow14ter" id="BPMNEdge_flow14ter"> + <omgdi:waypoint x="1790.0" y="260.7608891486752"/> + <omgdi:waypoint x="1424.117736926915" y="193.1523534073587"/> + <omgdi:waypoint x="1109.678315230625" y="511.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2OptIn" id="BPMNEdge_createApprovalGW2OptIn"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="674.0" y="449.0"/> + <omgdi:waypoint x="700.0" y="449.0"/> + <omgdi:waypoint x="745.2467532467532" y="248.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> + <omgdi:waypoint x="30.0" y="527.0"/> + <omgdi:waypoint x="80.0" y="527.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow16" id="BPMNEdge_flow16"> + <omgdi:waypoint x="1748.9712597675173" y="459.5470829510475"/> + <omgdi:waypoint x="1592.4096593525787" y="387.128477171313"/> + <omgdi:waypoint x="1130.0" y="525.9854974413342"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="created2Created" id="BPMNEdge_created2Created"> + <omgdi:waypoint x="1002.0" y="260.0"/> + <omgdi:waypoint x="990.0" y="260.0"/> + <omgdi:waypoint x="990.0" y="243.0"/> + <omgdi:waypoint x="952.0" y="243.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow18" id="BPMNEdge_flow18"> + <omgdi:waypoint x="1748.971259767517" y="619.7464352880323"/> + <omgdi:waypoint x="1673.525420205687" y="662.8701121105813"/> + <omgdi:waypoint x="1130.0" y="551.266629529393"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="createApprovalGW2Activate" id="BPMNEdge_createApprovalGW2Activate"> + <omgdi:waypoint x="630.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="449.0"/> + <omgdi:waypoint x="672.0" y="640.0"/> + <omgdi:waypoint x="710.0" y="640.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7"> + <omgdi:waypoint x="1134.9277566539924" y="308.0"/> + <omgdi:waypoint x="1087.0722433460076" y="511.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6"> + <omgdi:waypoint x="952.0" y="252.67741935483872"/> + <omgdi:waypoint x="964.0" y="255.0"/> + <omgdi:waypoint x="964.0" y="260.0"/> + <omgdi:waypoint x="1002.0" y="260.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9"> + <omgdi:waypoint x="1828.6246202240113" y="760.0"/> + <omgdi:waypoint x="1811.88836468294" y="804.1381014189917"/> + <omgdi:waypoint x="1474.4398193359375" y="804.1381014189917"/> + <omgdi:waypoint x="1124.969521769241" y="571.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="deleteApprovalGW2Reject" id="BPMNEdge_deleteApprovalGW2Reject"> + <omgdi:waypoint x="1710.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="320.0"/> + <omgdi:waypoint x="1752.0" y="270.0"/> + <omgdi:waypoint x="1790.0" y="270.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow8bis" id="BPMNEdge_flow8bis"> + <omgdi:waypoint x="1590.0" y="770.0"/> + <omgdi:waypoint x="1602.0" y="770.0"/> + <omgdi:waypoint x="1602.0" y="760.0"/> + <omgdi:waypoint x="1670.0" y="760.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow99" id="BPMNEdge_flow99"> + <omgdi:waypoint x="2040.0" y="388.0"/> + <omgdi:waypoint x="2078.1893792531678" y="388.0"/> + </bpmndi:BPMNEdge> + <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8"> + <omgdi:waypoint x="1130.0" y="540.8529411764706"/> + <omgdi:waypoint x="1400.058651026393" y="540.0586510263929"/> + </bpmndi:BPMNEdge> + </bpmndi:BPMNPlane> + </bpmndi:BPMNDiagram> +</definitions> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/main/resources/workflow.properties ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/main/resources/workflow.properties b/syncope620/fit/reference/src/main/resources/workflow.properties new file mode 100644 index 0000000..0cad37e --- /dev/null +++ b/syncope620/fit/reference/src/main/resources/workflow.properties @@ -0,0 +1,20 @@ +# 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. +wf.directory=${conf.directory} +jobExecutorActivate=true +uwfAdapter=org.apache.syncope.server.workflow.activiti.ActivitiUserWorkflowAdapter +rwfAdapter=org.apache.syncope.server.workflow.java.DefaultRoleWorkflowAdapter \ No newline at end of file http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java index fc81657..255666c 100644 --- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java +++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AbstractITCase.java @@ -59,6 +59,7 @@ import org.apache.syncope.common.rest.api.service.ResourceService; import org.apache.syncope.common.rest.api.service.RoleService; import org.apache.syncope.common.rest.api.service.SchemaService; import org.apache.syncope.common.rest.api.service.SecurityQuestionService; +import org.apache.syncope.common.rest.api.service.SyncopeService; import org.apache.syncope.common.rest.api.service.TaskService; import org.apache.syncope.common.rest.api.service.UserSelfService; import org.apache.syncope.common.rest.api.service.UserService; @@ -142,6 +143,8 @@ public abstract class AbstractITCase { protected static SyncopeClient adminClient; + protected static SyncopeService syncopeService; + protected static UserService userService; protected static UserSelfService userSelfService; @@ -207,6 +210,7 @@ public abstract class AbstractITCase { adminClient = clientFactory.create(ADMIN_UNAME, ADMIN_PWD); + syncopeService = adminClient.getService(SyncopeService.class); userService = adminClient.getService(UserService.class); userSelfService = adminClient.getService(UserSelfService.class); userWorkflowService = adminClient.getService(UserWorkflowService.class); http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java index ae35a23..03b686b 100644 --- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java +++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ActivitiDetector.java @@ -18,19 +18,19 @@ */ package org.apache.syncope.fit.server.reference; +import org.apache.syncope.common.rest.api.service.SyncopeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -// TODO: REMOVE!!! public class ActivitiDetector { private static final Logger LOG = LoggerFactory.getLogger(ActivitiDetector.class); - public static boolean isActivitiEnabledForUsers() { - return false; + public static boolean isActivitiEnabledForUsers(final SyncopeService syncopeService) { + return syncopeService.info().getUserWorkflowAdapter().indexOf("Activiti") != -1; } - public static boolean isActivitiEnabledForRoles() { - return false; + public static boolean isActivitiEnabledForRoles(final SyncopeService syncopeService) { + return syncopeService.info().getRoleWorkflowAdapter().indexOf("Activiti") != -1; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java index 9c18a4d..5b3b4b0 100644 --- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java +++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/AuthenticationITCase.java @@ -366,7 +366,7 @@ public class AuthenticationITCase extends AbstractITCase { @Test public void issueSYNCOPE434() { - Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers()); + Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers(syncopeService)); // 1. create user with role 9 (users with role 9 are defined in workflow as subject to approval) UserTO userTO = UserITCase.getUniqueSampleTO("[email protected]"); http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java index 075cdd9..c25dc7f 100644 --- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java +++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/PolicyITCase.java @@ -205,7 +205,7 @@ public class PolicyITCase extends AbstractITCase { @Test public void getCorrelationRules() { - assertEquals(1, policyService.getSyncCorrelationRuleClasses().size()); + assertEquals(1, syncopeService.info().getSyncCorrelationRules().size()); } @Test http://git-wip-us.apache.org/repos/asf/syncope/blob/1327b2a4/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java ---------------------------------------------------------------------- diff --git a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java index 6cb624a..69f26e3 100644 --- a/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java +++ b/syncope620/fit/reference/src/test/java/org/apache/syncope/fit/server/reference/ResourceITCase.java @@ -43,7 +43,6 @@ import org.apache.syncope.common.lib.types.ConnConfProperty; import org.apache.syncope.common.lib.types.EntityViolationType; import org.apache.syncope.common.lib.types.IntMappingType; import org.apache.syncope.common.lib.types.MappingPurpose; -import org.apache.syncope.common.lib.wrap.PropagationActionClass; import org.apache.syncope.common.rest.api.service.ResourceService; import org.junit.FixMethodOrder; import org.junit.Test; @@ -88,7 +87,7 @@ public class ResourceITCase extends AbstractITCase { @Test public void getPropagationActionsClasses() { - List<PropagationActionClass> actions = resourceService.getPropagationActionsClasses(); + List<String> actions = syncopeService.info().getPropagationActions(); assertNotNull(actions); assertFalse(actions.isEmpty()); }
