mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-15 15:02:20 +00:00
Merge WOLF-1 to HEAD
108132: UTF-30 Fix version of share, built in Share codebase Fix version of share-po, built in Share codebase 108130: UTF-30 Fix version of artifacts built in Share codebase + package alfresco-platform and share-services AMP instead of share-enabled alfresco war 108128: UTF-30 Fix version of artifacts built in Share codebase + package alfresco-platform and share-services AMP instead of share-enabled alfresco war 107846: EOL-10: Remove JBPM bootstrap. Removed the JBPM boostrap bean ("workflowScheduler") and the schema validation from bootstrap-context.xml 107842: EOL-4 : Remove JBPM schema bootstrap reference. 107839: EOL-8 : Remove JBPMWorkflowTestSuite and re-instate InviteServiceTest 107823: Temp remove InviteServiceTest 107820: EOL-9: Remove workflow definitions for JBPM workflows 107813: EOL-6: Remove jBPM from MBeans SVN ignore settings 107810: EOL-8 : Attempt to update Invite service test to use activity. 107794:EOL-5: Remove jBPM from Admin Console 107790: EOL-8 : Remove JBPM Tests EOL-8 : more JBPM tests removed. EOL-8 : Remove JBPM tests from Workflow Test Suite EOL-8 : Remove JBPMEngineTest AIRWOLF - more enterprise pom work. UTF-143 - add the update tool JAR to the enterprise distribution. Airwolf - need to separate dependency.share.version EOL-8 - Remove system.workflow.engine.jbpm.enabled git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@108654 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -84,7 +84,7 @@ public class StartWorkflowActionExecuterTest extends BaseSpringTest
|
||||
{
|
||||
// Execute the action
|
||||
ActionImpl action = new ActionImpl(null, GUID.generate(), StartWorkflowActionExecuter.NAME, null);
|
||||
action.setParameterValue(StartWorkflowActionExecuter.PARAM_WORKFLOW_NAME, "jbpm$wf:review");
|
||||
action.setParameterValue(StartWorkflowActionExecuter.PARAM_WORKFLOW_NAME, "activiti$activitiReview");
|
||||
action.setParameterValue(WorkflowModel.PROP_WORKFLOW_DUE_DATE.toPrefixString(namespaceService), new Date());
|
||||
NodeRef reviewer = personService.getPerson(AuthenticationUtil.getAdminUserName());
|
||||
action.setParameterValue(WorkflowModel.ASSOC_ASSIGNEE.toPrefixString(namespaceService), reviewer);
|
||||
|
@@ -26,12 +26,6 @@ import org.alfresco.repo.workflow.activiti.ActivitiMultitenantWorkflowTest;
|
||||
import org.alfresco.repo.workflow.activiti.ActivitiSpringTransactionTest;
|
||||
import org.alfresco.repo.workflow.activiti.ActivitiTimerExecutionTest;
|
||||
import org.alfresco.repo.workflow.activiti.ActivitiWorkflowServiceIntegrationTest;
|
||||
import org.alfresco.repo.workflow.jbpm.AlfrescoJavaScriptIntegrationTest;
|
||||
import org.alfresco.repo.workflow.jbpm.JBPMEngineTest;
|
||||
import org.alfresco.repo.workflow.jbpm.JBPMSpringTest;
|
||||
import org.alfresco.repo.workflow.jbpm.JbpmMultitenantWorkflowTest;
|
||||
import org.alfresco.repo.workflow.jbpm.JbpmWorkflowServiceIntegrationTest;
|
||||
import org.alfresco.repo.workflow.jbpm.ReviewAndApproveTest;
|
||||
import org.alfresco.util.ApplicationContextHelper;
|
||||
|
||||
/**
|
||||
@@ -51,13 +45,8 @@ public class WorkflowTestSuite extends TestSuite
|
||||
// Ensure that the default context is available
|
||||
ApplicationContextHelper.getApplicationContext();
|
||||
|
||||
// Add the JBPM tests to be run
|
||||
suite.addTestSuite( StartWorkflowActionExecuterTest.class );
|
||||
suite.addTestSuite( JbpmWorkflowServiceIntegrationTest.class );
|
||||
suite.addTestSuite( ReviewAndApproveTest.class );
|
||||
suite.addTestSuite( JBPMSpringTest.class );
|
||||
suite.addTestSuite( JBPMEngineTest.class );
|
||||
suite.addTestSuite( AlfrescoJavaScriptIntegrationTest.class );
|
||||
|
||||
// Add the Activiti tests to be run
|
||||
suite.addTestSuite( ActivitiWorkflowServiceIntegrationTest.class );
|
||||
suite.addTestSuite( ActivitiSpringTransactionTest.class );
|
||||
@@ -69,9 +58,7 @@ public class WorkflowTestSuite extends TestSuite
|
||||
|
||||
// These tests use a different Spring config.
|
||||
suite.addTestSuite( ActivitiMultitenantWorkflowTest.class );
|
||||
|
||||
suite.addTestSuite( JbpmMultitenantWorkflowTest.class );
|
||||
|
||||
|
||||
// Note the following workflow tests are not included in this sutie:
|
||||
// ActivitiTaskComponentTest
|
||||
// ActivitiWorkflowComponentTest
|
||||
|
@@ -1,673 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2011 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.repo.workflow.jbpm;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.workflow.BPMEngineRegistry;
|
||||
import org.alfresco.repo.workflow.TaskComponent;
|
||||
import org.alfresco.repo.workflow.WorkflowComponent;
|
||||
import org.alfresco.repo.workflow.WorkflowModel;
|
||||
import org.alfresco.repo.workflow.WorkflowPackageComponent;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowException;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTaskState;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.test_category.BaseSpringTestsCategory;
|
||||
import org.alfresco.util.BaseAlfrescoSpringTest;
|
||||
import org.alfresco.util.PropertyMap;
|
||||
import org.junit.experimental.categories.Category;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.extensions.surf.util.I18NUtil;
|
||||
|
||||
|
||||
/**
|
||||
* JBPM Engine Tests
|
||||
*
|
||||
* @author davidc
|
||||
*/
|
||||
@Category(BaseSpringTestsCategory.class)
|
||||
public class JBPMEngineTest extends BaseAlfrescoSpringTest
|
||||
{
|
||||
private static final String USER1 = "JbpmEngineTestJohn";
|
||||
private static final String USER2 = "JbpmEngineTestJane";
|
||||
private static final String USER3 = "JbpmEngineTestJoe";
|
||||
|
||||
private WorkflowComponent workflowComponent;
|
||||
private TaskComponent taskComponent;
|
||||
private WorkflowPackageComponent packageComponent;
|
||||
private PersonService personService;
|
||||
private WorkflowDefinition testWorkflowDef;
|
||||
private NodeRef person1;
|
||||
private NodeRef person2;
|
||||
private NodeRef person3;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void onSetUpInTransaction() throws Exception
|
||||
{
|
||||
super.onSetUpInTransaction();
|
||||
|
||||
personService = (PersonService) applicationContext.getBean("PersonService");
|
||||
person1 = createPerson(USER1);
|
||||
person2 = createPerson(USER2);
|
||||
person3 = createPerson(USER3);
|
||||
|
||||
BPMEngineRegistry registry = (BPMEngineRegistry)applicationContext.getBean("bpm_engineRegistry");
|
||||
workflowComponent = registry.getWorkflowComponent(JBPMEngine.ENGINE_ID);
|
||||
taskComponent = registry.getTaskComponent(JBPMEngine.ENGINE_ID);
|
||||
packageComponent = (WorkflowPackageComponent)applicationContext.getBean("workflowPackageImpl");
|
||||
|
||||
// deploy test process messages
|
||||
I18NUtil.registerResourceBundle("jbpmresources/test-messages");
|
||||
|
||||
// deploy test process definition
|
||||
ClassPathResource processDef = new ClassPathResource("jbpmresources/test_processdefinition.xml");
|
||||
assertFalse(workflowComponent.isDefinitionDeployed(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML));
|
||||
WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML);
|
||||
testWorkflowDef = deployment.definition;
|
||||
assertNotNull(testWorkflowDef);
|
||||
assertEquals("jbpm$test", testWorkflowDef.name);
|
||||
assertEquals("1", testWorkflowDef.version);
|
||||
assertTrue(workflowComponent.isDefinitionDeployed(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML));
|
||||
|
||||
authenticationComponent.setCurrentUser(AuthenticationUtil.getAdminUserName());
|
||||
}
|
||||
|
||||
public void todoTestGetStartTask() throws Exception
|
||||
{
|
||||
//TODO Implement
|
||||
}
|
||||
|
||||
public void testGetWorkflowDefinitions()
|
||||
{
|
||||
List<WorkflowDefinition> workflowDefs = workflowComponent.getDefinitions();
|
||||
assertNotNull(workflowDefs);
|
||||
assertTrue(workflowDefs.size() > 0);
|
||||
}
|
||||
|
||||
|
||||
public void testDeployWorkflow() throws Exception
|
||||
{
|
||||
ClassPathResource processDef = new ClassPathResource("jbpmresources/test_processdefinition.xml");
|
||||
WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML);
|
||||
testWorkflowDef = deployment.getDefinition();
|
||||
assertNotNull(testWorkflowDef);
|
||||
assertEquals("jbpm$test", testWorkflowDef.getName());
|
||||
assertEquals("2", testWorkflowDef.getVersion());
|
||||
}
|
||||
|
||||
|
||||
public void testStartWorkflow()
|
||||
{
|
||||
try
|
||||
{
|
||||
workflowComponent.startWorkflow("norfolknchance", null);
|
||||
fail("Failed to catch invalid definition id");
|
||||
}
|
||||
catch(WorkflowException e)
|
||||
{
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
// TODO: Determine why process definition is loaded, even though it doesn't exist
|
||||
// try
|
||||
// {
|
||||
// workflowComponent.startProcess("1000", null);
|
||||
// fail("Failed to catch workflow definition id that does not exist");
|
||||
// }
|
||||
// catch(WorkflowException e)
|
||||
// {
|
||||
// }
|
||||
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
assertNotNull(path);
|
||||
assertTrue(path.getId().endsWith("-@"));
|
||||
assertNotNull(path.getNode());
|
||||
assertNotNull(path.getInstance());
|
||||
assertEquals(workflowDef.getId(), path.getInstance().getDefinition().getId());
|
||||
}
|
||||
|
||||
|
||||
public void testGetWorkflowById()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
assertNotNull(path);
|
||||
assertTrue(path.getId().endsWith("-@"));
|
||||
assertNotNull(path.getNode());
|
||||
assertNotNull(path.getInstance());
|
||||
assertEquals(workflowDef.getId(), path.getInstance().getDefinition().getId());
|
||||
WorkflowInstance instance = workflowComponent.getWorkflowById(path.getInstance().getId());
|
||||
assertNotNull(instance);
|
||||
assertEquals(path.getInstance().getId(), instance.getId());
|
||||
|
||||
workflowComponent.cancelWorkflow(instance.getId());
|
||||
WorkflowInstance result = workflowComponent.getWorkflowById(instance.getId());
|
||||
assertNull("The workflow isntance should be null!", result);
|
||||
}
|
||||
|
||||
|
||||
public void testStartWorkflowParameters()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
|
||||
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||
params.put(WorkflowModel.PROP_TASK_ID, 3); // protected - shouldn't be written
|
||||
params.put(WorkflowModel.PROP_DUE_DATE, new Date()); // task instance field
|
||||
params.put(WorkflowModel.PROP_PRIORITY, 1); // task instance field
|
||||
params.put(WorkflowModel.PROP_PERCENT_COMPLETE, 10); // context variable
|
||||
params.put(QName.createQName("", "Message"), "Hello World"); // context variable outside of task definition
|
||||
params.put(QName.createQName("", "Array"), new String[] { "one", "two" }); // context variable outside of task definition
|
||||
params.put(QName.createQName("", "NodeRef"), new NodeRef("workspace://1/1001")); // context variable outside of task definition
|
||||
params.put(ContentModel.PROP_OWNER, AuthenticationUtil.getAdminUserName()); // task assignment
|
||||
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params);
|
||||
assertNotNull(path);
|
||||
assertTrue(path.getId().endsWith("-@"));
|
||||
assertNotNull(path.getNode());
|
||||
assertNotNull(path.getInstance());
|
||||
assertEquals(workflowDef.getId(), path.getInstance().getDefinition().getId());
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
|
||||
WorkflowTask task = tasks1.get(0);
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_TASK_ID));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_DUE_DATE));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_PRIORITY));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_PERCENT_COMPLETE));
|
||||
assertTrue(task.getProperties().containsKey(ContentModel.PROP_OWNER));
|
||||
|
||||
NodeRef initiator = path.getInstance().getInitiator();
|
||||
String initiatorUsername = (String)nodeService.getProperty(initiator, ContentModel.PROP_USERNAME);
|
||||
assertEquals(AuthenticationUtil.getAdminUserName(), initiatorUsername);
|
||||
}
|
||||
|
||||
|
||||
public void testUpdateTask()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
|
||||
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||
params.put(WorkflowModel.PROP_TASK_ID, 3); // protected - shouldn't be written
|
||||
params.put(WorkflowModel.PROP_DUE_DATE, new Date()); // task instance field
|
||||
params.put(WorkflowModel.PROP_PRIORITY, 1); // task instance field
|
||||
params.put(WorkflowModel.PROP_PERCENT_COMPLETE, 10); // context variable
|
||||
params.put(QName.createQName("", "Message"), "Hello World"); // context variable outside of task definition
|
||||
params.put(QName.createQName("", "Array"), new String[] { "one", "two" }); // context variable outside of task definition
|
||||
params.put(QName.createQName("", "NodeRef"), new NodeRef("workspace://1/1001")); // context variable outside of task definition
|
||||
params.put(ContentModel.PROP_OWNER, AuthenticationUtil.getAdminUserName()); // task assignment
|
||||
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), params);
|
||||
assertNotNull(path);
|
||||
assertTrue(path.getId().endsWith("-@"));
|
||||
assertNotNull(path.getNode());
|
||||
assertNotNull(path.getInstance());
|
||||
assertEquals(workflowDef.getId(), path.getInstance().getDefinition().getId());
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
|
||||
WorkflowTask task = tasks1.get(0);
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_TASK_ID));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_DUE_DATE));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_PRIORITY));
|
||||
assertTrue(task.getProperties().containsKey(WorkflowModel.PROP_PERCENT_COMPLETE));
|
||||
assertTrue(task.getProperties().containsKey(ContentModel.PROP_OWNER));
|
||||
|
||||
// update with null parameters
|
||||
try
|
||||
{
|
||||
WorkflowTask taskU1 = taskComponent.updateTask(task.getId(), null, null, null);
|
||||
assertNotNull(taskU1);
|
||||
}
|
||||
catch(Throwable e)
|
||||
{
|
||||
fail("Task update failed with null parameters");
|
||||
}
|
||||
|
||||
// update property value
|
||||
Map<QName, Serializable> updateProperties2 = new HashMap<QName, Serializable>();
|
||||
updateProperties2.put(WorkflowModel.PROP_PERCENT_COMPLETE, 100);
|
||||
WorkflowTask taskU2 = taskComponent.updateTask(task.getId(), updateProperties2, null, null);
|
||||
assertEquals(100, taskU2.getProperties().get(WorkflowModel.PROP_PERCENT_COMPLETE));
|
||||
|
||||
// add to assocation
|
||||
QName assocName = QName.createQName("", "TestAssoc");
|
||||
List<NodeRef> toAdd = new ArrayList<NodeRef>();
|
||||
toAdd.add(new NodeRef("workspace://1/1001"));
|
||||
toAdd.add(new NodeRef("workspace://1/1002"));
|
||||
toAdd.add(new NodeRef("workspace://1/1003"));
|
||||
Map<QName, List<NodeRef>> addAssocs = new HashMap<QName, List<NodeRef>>();
|
||||
addAssocs.put(assocName, toAdd);
|
||||
WorkflowTask taskU3 = taskComponent.updateTask(task.getId(), null, addAssocs, null);
|
||||
assertNotNull(taskU3.getProperties().get(assocName));
|
||||
assertEquals(3, ((List<?>)taskU3.getProperties().get(assocName)).size());
|
||||
|
||||
// add to assocation again
|
||||
List<NodeRef> toAddAgain = new ArrayList<NodeRef>();
|
||||
toAddAgain.add(new NodeRef("workspace://1/1004"));
|
||||
toAddAgain.add(new NodeRef("workspace://1/1005"));
|
||||
Map<QName, List<NodeRef>> addAssocsAgain = new HashMap<QName, List<NodeRef>>();
|
||||
addAssocsAgain.put(assocName, toAddAgain);
|
||||
WorkflowTask taskU4 = taskComponent.updateTask(task.getId(), null, addAssocsAgain, null);
|
||||
assertNotNull(taskU4.getProperties().get(assocName));
|
||||
assertEquals(5, ((List<?>)taskU4.getProperties().get(assocName)).size());
|
||||
|
||||
// remove assocation
|
||||
List<NodeRef> toRemove = new ArrayList<NodeRef>();
|
||||
toRemove.add(new NodeRef("workspace://1/1002"));
|
||||
toRemove.add(new NodeRef("workspace://1/1003"));
|
||||
Map<QName, List<NodeRef>> removeAssocs = new HashMap<QName, List<NodeRef>>();
|
||||
removeAssocs.put(assocName, toRemove);
|
||||
WorkflowTask taskU5 = taskComponent.updateTask(task.getId(), null, null, removeAssocs);
|
||||
assertNotNull(taskU5.getProperties().get(assocName));
|
||||
assertEquals(3, ((List<?>)taskU5.getProperties().get(assocName)).size());
|
||||
}
|
||||
|
||||
|
||||
public void testGetWorkflowInstances()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
List<WorkflowInstance> instances = workflowComponent.getActiveWorkflows(workflowDef.getId());
|
||||
assertNotNull(instances);
|
||||
assertEquals(2, instances.size());
|
||||
for (WorkflowInstance instance : instances)
|
||||
{
|
||||
assertEquals(workflowDef.getId(), instance.getDefinition().getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void testGetPositions()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
List<WorkflowInstance> instances = workflowComponent.getActiveWorkflows(workflowDef.getId());
|
||||
assertNotNull(instances);
|
||||
assertEquals(1, instances.size());
|
||||
List<WorkflowPath> paths = workflowComponent.getWorkflowPaths(instances.get(0).getId());
|
||||
assertNotNull(paths);
|
||||
assertEquals(1, paths.size());
|
||||
assertEquals(instances.get(0).getId(), paths.get(0).getInstance().getId());
|
||||
assertTrue(paths.get(0).getId().endsWith("-@"));
|
||||
}
|
||||
|
||||
|
||||
public void testCancelWorkflowInstance() throws Exception
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
workflowComponent.startWorkflow(workflowDef.getId(), null);
|
||||
List<WorkflowInstance> instances1 = workflowComponent.getActiveWorkflows(workflowDef.getId());
|
||||
assertNotNull(instances1);
|
||||
assertEquals(1, instances1.size());
|
||||
List<WorkflowTask> tasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.IN_PROGRESS, false);
|
||||
assertNotNull(tasks);
|
||||
assertTrue(tasks.size() > 0);
|
||||
WorkflowInstance cancelledInstance = workflowComponent.cancelWorkflow(instances1.get(0).getId());
|
||||
assertNotNull(cancelledInstance);
|
||||
assertFalse(cancelledInstance.isActive());
|
||||
List<WorkflowInstance> instances2 = workflowComponent.getActiveWorkflows(workflowDef.getId());
|
||||
assertNotNull(instances2);
|
||||
assertEquals(0, instances2.size());
|
||||
List<WorkflowTask> tasks1 = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.IN_PROGRESS, false);
|
||||
assertNotNull(tasks1);
|
||||
tasks1 = filterTasksByWorkflowInstance(tasks1, cancelledInstance.getId());
|
||||
assertEquals(0, tasks1.size());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* See Alf-2764 in Jira.
|
||||
* @throws Exception
|
||||
*/
|
||||
public void testCancelForEachFork() throws Exception
|
||||
{
|
||||
// Deploy Parallel Loop Review process definition.
|
||||
ClassPathResource processDef = new ClassPathResource("test/alfresco/parallel_loop_review_processdefinition.xml");
|
||||
WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(),
|
||||
MimetypeMap.MIMETYPE_XML);
|
||||
WorkflowDefinition parallelDef = deployment.getDefinition();
|
||||
assertNotNull(parallelDef);
|
||||
|
||||
// Set Current User to USER1.
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(USER1);
|
||||
|
||||
// Set up parameters
|
||||
QName approvePercentName = QName.createQName(NamespaceService.WORKFLOW_MODEL_1_0_URI, "requiredApprovePercent");
|
||||
NodeRef pckgNode = packageComponent.createPackage(null);
|
||||
List<NodeRef> assignees = Arrays.asList(person1, person2, person3);
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(WorkflowModel.ASSOC_ASSIGNEES, (Serializable) assignees);
|
||||
parameters.put(WorkflowModel.ASSOC_PACKAGE, pckgNode);
|
||||
parameters.put(approvePercentName, 60f );
|
||||
|
||||
// Start workflow
|
||||
WorkflowPath path = workflowComponent.startWorkflow(parallelDef.getId(), parameters);
|
||||
WorkflowTask startTask = workflowComponent.getTasksForWorkflowPath(path.getId()).get(0);
|
||||
taskComponent.endTask(startTask.getId(), null);
|
||||
checkInstanceExists(path.getInstance().getId(), parallelDef.getId(), true);
|
||||
|
||||
// Set all users to reject document.
|
||||
ParallelReject(USER1);
|
||||
ParallelReject(USER2);
|
||||
ParallelReject(USER3);
|
||||
|
||||
// Send review back round the loop.
|
||||
List<WorkflowTask> tasks = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertEquals(1, tasks.size());
|
||||
taskComponent.endTask(tasks.get(0).getId(), "again");
|
||||
|
||||
// Try to cancel workflow
|
||||
WorkflowInstance cancelledWf = workflowComponent.cancelWorkflow(path.getInstance().getId());
|
||||
checkInstanceExists(cancelledWf.getId(), parallelDef.getId(), false);
|
||||
}
|
||||
|
||||
private void checkInstanceExists(String instanceId, String defId, boolean expected)
|
||||
{
|
||||
boolean match=false;
|
||||
List<WorkflowInstance> activeWfs = workflowComponent.getActiveWorkflows(defId);
|
||||
for (WorkflowInstance instance : activeWfs)
|
||||
{
|
||||
if(instance.getId().equals(instanceId))
|
||||
{
|
||||
match = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
assertEquals( expected, match);
|
||||
}
|
||||
|
||||
private void ParallelReject(String user)
|
||||
{
|
||||
List<WorkflowTask> tasks = taskComponent.getAssignedTasks(user, WorkflowTaskState.IN_PROGRESS, false);
|
||||
assertEquals(1, tasks.size());
|
||||
WorkflowTask task = tasks.get(0);
|
||||
taskComponent.endTask(task.getId(), "reject");
|
||||
}
|
||||
|
||||
public void testSignal()
|
||||
{
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
WorkflowPath updatedPath = workflowComponent.signal(path.getId(), path.getNode().getTransitions()[1].getId());
|
||||
assertNotNull(updatedPath);
|
||||
}
|
||||
|
||||
|
||||
public void testGetAssignedTasks()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "reviewer"), AuthenticationUtil.getAdminUserName());
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
parameters.put(QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "package"), packageComponent.createPackage(null));
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks);
|
||||
assertEquals(1, tasks.size());
|
||||
WorkflowTask updatedTask = taskComponent.endTask(tasks.get(0).getId(), path.getNode().getTransitions()[0].getId());
|
||||
assertNotNull(updatedTask);
|
||||
List<WorkflowTask> completedTasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.COMPLETED, false);
|
||||
assertNotNull(completedTasks);
|
||||
completedTasks = filterTasksByWorkflowInstance(completedTasks, path.getInstance().getId());
|
||||
assertEquals(1, completedTasks.size());
|
||||
List<WorkflowTask> assignedTasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.IN_PROGRESS, false);
|
||||
assertNotNull(assignedTasks);
|
||||
assignedTasks = filterTasksByWorkflowInstance(assignedTasks, path.getInstance().getId());
|
||||
assertEquals(1, assignedTasks.size());
|
||||
assertEquals("review", assignedTasks.get(0).getName());
|
||||
}
|
||||
|
||||
|
||||
public void xtestMultiAssign()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
List<String> bpm_assignees = new ArrayList<String>();
|
||||
bpm_assignees.add(AuthenticationUtil.getAdminUserName());
|
||||
bpm_assignees.add("bob");
|
||||
bpm_assignees.add("fred");
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "assignees"), (Serializable)bpm_assignees);
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks);
|
||||
assertEquals(1, tasks.size());
|
||||
WorkflowTask updatedTask = taskComponent.endTask(tasks.get(0).getId(), "multi");
|
||||
assertNotNull(updatedTask);
|
||||
}
|
||||
|
||||
|
||||
public void testEndTask()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "reviewer"), AuthenticationUtil.getAdminUserName());
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
parameters.put(QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "package"), packageComponent.createPackage(null));
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
assertEquals(WorkflowTaskState.IN_PROGRESS, tasks1.get(0).getState());
|
||||
WorkflowTask updatedTask = taskComponent.endTask(tasks1.get(0).getId(), null);
|
||||
assertNotNull(updatedTask);
|
||||
assertEquals(WorkflowTaskState.COMPLETED, updatedTask.getState());
|
||||
List<WorkflowTask> completedTasks = taskComponent.getAssignedTasks(AuthenticationUtil.getAdminUserName(), WorkflowTaskState.COMPLETED, false);
|
||||
assertNotNull(completedTasks);
|
||||
completedTasks = filterTasksByWorkflowInstance(completedTasks, path.getInstance().getId());
|
||||
assertEquals(1, completedTasks.size());
|
||||
assertEquals(WorkflowTaskState.COMPLETED, completedTasks.get(0).getState());
|
||||
}
|
||||
|
||||
|
||||
public void testGetTask()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "reviewer"), AuthenticationUtil.getAdminUserName());
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
WorkflowTask getTask = taskComponent.getTaskById(tasks1.get(0).getId());
|
||||
assertNotNull(getTask);
|
||||
assertEquals(getTask.getId(), tasks1.get(0).getId());
|
||||
}
|
||||
|
||||
|
||||
public void testNodeRef()
|
||||
{
|
||||
WorkflowDefinition workflowDef = getTestDefinition();
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "reviewer"), AuthenticationUtil.getAdminUserName());
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
parameters.put(QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "package"), packageComponent.createPackage(null));
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
assertEquals(WorkflowTaskState.IN_PROGRESS, tasks1.get(0).getState());
|
||||
WorkflowTask updatedTask = taskComponent.endTask(tasks1.get(0).getId(), null);
|
||||
assertNotNull(updatedTask);
|
||||
}
|
||||
|
||||
|
||||
public void testScript() throws IOException
|
||||
{
|
||||
// deploy test script definition
|
||||
ClassPathResource processDef = new ClassPathResource("jbpmresources/test_script.xml");
|
||||
assertFalse(workflowComponent.isDefinitionDeployed(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML));
|
||||
WorkflowDeployment deployment = workflowComponent.deployDefinition(processDef.getInputStream(), MimetypeMap.MIMETYPE_XML);
|
||||
assertNotNull(deployment);
|
||||
|
||||
WorkflowDefinition workflowDef = deployment.getDefinition();
|
||||
Map<QName, Serializable> parameters = new HashMap<QName, Serializable>();
|
||||
parameters.put(QName.createQName(NamespaceService.DEFAULT_URI, "testNode"), rootNodeRef);
|
||||
parameters.put(QName.createQName(NamespaceService.BPM_MODEL_1_0_URI, "package"), packageComponent.createPackage(null));
|
||||
WorkflowPath path = workflowComponent.startWorkflow(workflowDef.getId(), parameters);
|
||||
assertNotNull(path);
|
||||
List<WorkflowTask> tasks1 = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
assertNotNull(tasks1);
|
||||
assertEquals(1, tasks1.size());
|
||||
assertEquals(WorkflowTaskState.IN_PROGRESS, tasks1.get(0).getState());
|
||||
WorkflowTask updatedTask = taskComponent.endTask(tasks1.get(0).getId(), null);
|
||||
assertNotNull(updatedTask);
|
||||
}
|
||||
|
||||
public void testWorkflowDefinitionVisibility()
|
||||
{
|
||||
// retrieve workflow definitions
|
||||
List<WorkflowDefinition> defs = workflowComponent.getDefinitions();
|
||||
List<WorkflowDefinition> allDefs = workflowComponent.getAllDefinitions();
|
||||
|
||||
assertFalse(defs.isEmpty());
|
||||
assertFalse(allDefs.isEmpty());
|
||||
}
|
||||
|
||||
// public void testAssignTaskVariablesWithScript() throws Exception
|
||||
// {
|
||||
// WorkflowDefinition definition = workflowComponent.getDefinitionByName("jbpm$testwf:testTaskVarScriptAssign");
|
||||
// assertNotNull(definition);
|
||||
//
|
||||
// String testwfUrl = "http://www.alfresco.org/model/workflow/test/1.0";
|
||||
// QName simpleTextName = QName.createQName(testwfUrl, "simpleText");
|
||||
// QName listConstrainedName = QName.createQName(testwfUrl, "listConstrainedText");
|
||||
//
|
||||
// String simpleTextValue = "Foo";
|
||||
// String listConstrainedValue = "Second";
|
||||
//
|
||||
//
|
||||
// Map<QName, Serializable> params = new HashMap<QName, Serializable>();
|
||||
// params.put(simpleTextName, simpleTextValue);
|
||||
// params.put(listConstrainedName, listConstrainedValue);
|
||||
// params.put(WorkflowModel.ASSOC_PACKAGE, packageComponent.createPackage(null));
|
||||
//
|
||||
// WorkflowPath path = workflowComponent.startWorkflow(definition.getId(), params);
|
||||
// // End start task.
|
||||
// List<WorkflowTask> tasks = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
//
|
||||
// // Get Start Task
|
||||
// assertEquals(1, tasks.size());
|
||||
// WorkflowTask startTask = tasks.get(0);
|
||||
// QName startTaskName = definition.getStartTaskDefinition().getMetadata().getName();
|
||||
// assertEquals("This is not the start task!", startTaskName, startTask.getDefinition().getMetadata().getName());
|
||||
//
|
||||
// taskComponent.endTask(startTask.getId(), null);
|
||||
//
|
||||
// tasks = workflowComponent.getTasksForWorkflowPath(path.getId());
|
||||
//
|
||||
// // Get Task
|
||||
// assertEquals(1, tasks.size());
|
||||
// WorkflowTask task = tasks.get(0);
|
||||
// QName taskName = QName.createQName(testwfUrl, "assignVarTask");
|
||||
// assertEquals("This is not the start task!", taskName, task.getDefinition().getMetadata().getName());
|
||||
//
|
||||
// Map<QName, Serializable> props = task.getProperties();
|
||||
// assertEquals("Simple Text property value doesn't match!", simpleTextValue, props.get(simpleTextName));
|
||||
// assertEquals("List Constrained property value doesn't match!", listConstrainedValue, props.get(listConstrainedName));
|
||||
// }
|
||||
|
||||
/**
|
||||
* Locate the Test Workflow Definition
|
||||
*
|
||||
* @return workflow definition
|
||||
*/
|
||||
private WorkflowDefinition getTestDefinition()
|
||||
{
|
||||
return testWorkflowDef;
|
||||
}
|
||||
|
||||
|
||||
private NodeRef createPerson(String userName)
|
||||
{
|
||||
// if user with given user name doesn't already exist then create user
|
||||
if (this.authenticationService.authenticationExists(userName) == false)
|
||||
{
|
||||
// create user
|
||||
this.authenticationService.createAuthentication(userName, "password".toCharArray());
|
||||
}
|
||||
|
||||
// if person node with given user name doesn't already exist then create
|
||||
// person
|
||||
if (this.personService.personExists(userName) == false)
|
||||
{
|
||||
// create person properties
|
||||
PropertyMap personProps = new PropertyMap();
|
||||
personProps.put(ContentModel.PROP_USERNAME, userName);
|
||||
|
||||
// create person node for user
|
||||
return personService.createPerson(personProps);
|
||||
}
|
||||
return personService.getPerson(userName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter task list by workflow instance
|
||||
*
|
||||
* @param tasks
|
||||
* @param workflowInstanceId
|
||||
* @return
|
||||
*/
|
||||
private List<WorkflowTask> filterTasksByWorkflowInstance(List<WorkflowTask> tasks, String workflowInstanceId)
|
||||
{
|
||||
List<WorkflowTask> filteredTasks = new ArrayList<WorkflowTask>();
|
||||
for (WorkflowTask task : tasks)
|
||||
{
|
||||
if (task.getPath().getInstance().getId().equals(workflowInstanceId))
|
||||
{
|
||||
filteredTasks.add(task);
|
||||
}
|
||||
}
|
||||
return filteredTasks;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user