/** * Cancel workflow instance */ public void cancel() { serviceRegistry.getWorkflowService().cancelWorkflow(this.id); }
@Override protected void executeImpl(Action action, NodeRef actionedUponNodeRef) { @SuppressWarnings("unchecked") List<String> workflowIds = (List<String>) action.getParameterValue(PARAM_WORKFLOW_ID_LIST); if (log.isTraceEnabled()) { log.trace("Cancelling " + (workflowIds == null ? 0 : workflowIds.size()) + " workflows by ID."); } if (workflowIds != null && !workflowIds.isEmpty()) { this.workflowService.cancelWorkflows(workflowIds); } }
private Invitation startWorkflow(WorkflowDefinition wfDefinition, Map<QName, Serializable> workflowProps) NodeRef wfPackage = workflowService.createPackage(null); workflowProps.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); WorkflowPath wfPath = this.workflowService.startWorkflow(wfDefinition.getId(), workflowProps); WorkflowTask startTask = workflowService.getStartTask(workflowId); workflowService.endTask(startTask.getId(), null);
private void endStartTaskForPath(WorkflowPath path) { if (path != null) { List<WorkflowTask> tasks = this.workflowService.getTasksForWorkflowPath(path.id); if (tasks.size() == 1) { WorkflowTask startTask = tasks.get(0); if (startTask.state == WorkflowTaskState.IN_PROGRESS) { // end the start task to trigger the first 'proper' // task in the workflow this.workflowService.endTask(startTask.id, null); } } } } }
public void undeploy(NodeRef nodeRef) { // Ignore if the node is a working copy if (nodeService.hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY) == false) { String defName = (String)nodeService.getProperty(nodeRef, WorkflowModel.PROP_WORKFLOW_DEF_NAME); if (defName != null) { // Undeploy the workflow definition List<WorkflowDefinition> defs = workflowService.getAllDefinitionsByName(defName); for (WorkflowDefinition def: defs) { if (logger.isDebugEnabled()) logger.debug("Undeploying workflow '" + defName + "' ..."); workflowService.undeployDefinition(def.getId()); if (logger.isDebugEnabled()) logger.debug("... undeployed '" + def.getId() + "' v" + def.getVersion()); } } } else { if (logger.isDebugEnabled()) logger.debug("Workflow deployer: Definition '" + nodeRef + "' not undeployed since it is a working copy"); } }
defs = workflowService.getAllDefinitions(); defs = workflowService.getDefinitions(); for (WorkflowDefinition def : workflowService.getAllDefinitions()) List<WorkflowInstance> workflows = workflowService.getActiveWorkflows(def.getId()); for (WorkflowInstance workflow : workflows) List<WorkflowInstance> workflows = workflowService.getActiveWorkflows(id); for (WorkflowInstance workflow : workflows) List<WorkflowPath> paths = workflowService.getWorkflowPaths(workflowId); for (WorkflowPath path : paths) List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(pathId); for (WorkflowTask task : tasks) List<WorkflowPath> paths = workflowService.getWorkflowPaths(workflowId); if (paths.size() == 0) List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); for (WorkflowTask task : tasks) for (WorkflowDefinition def : workflowService.getAllDefinitions()) List<WorkflowInstance> workflows = workflowService.getActiveWorkflows(def.getId()); for (WorkflowInstance workflow : workflows)
Serializable wfPackage = workflowService.createPackage(null); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); Date dueDate = new Date(); WorkflowPath path = workflowService.startWorkflow(workflowDef.getId(), params); assertNotNull(path); assertTrue(path.isActive()); WorkflowTask startTask = workflowService.getStartTask(workflowInstanceId); String startTaskId = startTask.getId(); workflowService.endTask(startTaskId, null); startTask = workflowService.getTaskById(startTaskId); assertNotNull(startTask); assertEquals(startTask.getState(), WorkflowTaskState.COMPLETED); assertFalse(workflowService.isTaskClaimable(startTask, USER1)); assertFalse(workflowService.isTaskEditable(startTask, USER1)); assertFalse(workflowService.isTaskReassignable(startTask, USER1)); assertFalse(workflowService.isTaskReleasable(startTask, USER1)); List<WorkflowPath> paths = workflowService.getWorkflowPaths(workflowInstanceId); assertNotNull(paths); assertEquals(1, paths.size()); List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); assertEquals(1, tasks.size()); WorkflowTask currentTask = tasks.get(0); assertFalse(workflowService.isTaskClaimable(currentTask, USER1));
NodeRef wfPackage = workflowService.createPackage(null); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); NodeRef assignee = personManager.get(USER2); WorkflowPath path = workflowService.startWorkflow(definition.getId(), params); String instanceId = path.getInstance().getId(); WorkflowTask startTask = workflowService.getStartTask(instanceId); workflowService.endTask(startTask.getId(), null); List<NodeRef> taskPackage = workflowService.getPackageContents(startTask.getId()); assertTrue(taskPackage.isEmpty()); List<NodeRef> packageContents = workflowService.getPackageContents(wfPackage); assertTrue(packageContents.isEmpty()); List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); assertEquals(1, tasks.size()); workflowService.updateTask(tasks.get(0).getId(), Collections.singletonMap(WorkflowModel.ASSOC_ASSIGNEE, (Serializable) personManager.get(USER3)), null, null); startTask = workflowService.getStartTask(instanceId); assertNotNull(startTask); startTask = workflowService.getTaskById(startTask.getId()); assertNotNull(startTask); workflowService.getStartTask(instanceId); fail("AccessDeniedException expected");
WorkflowDefinition def = workflowService.getDefinitionByName(workflowName); workflowPackage = workflowService.createPackage(workflowPackage); ChildAssociationRef childAssoc = nodeService.getPrimaryParent(actionedUponNodeRef); nodeService.addChild(workflowPackage, actionedUponNodeRef, WorkflowModel.ASSOC_PACKAGE_CONTAINS, childAssoc.getQName()); WorkflowPath path = workflowService.startWorkflow(def.getId(), workflowParameters); List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); for (WorkflowTask task : tasks) workflowService.endTask(task.getId(), startTaskTransition);
Serializable wfPackage = workflowService.createPackage(null); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); NodeRef assignee = personManager.get(USER2); WorkflowPath path = workflowService.startWorkflow(definition.getId(), params); String instanceId = path.getInstance().getId(); WorkflowTask startTask = workflowService.getStartTask(instanceId); workflowService.endTask(startTask.getId(), null); List<WorkflowPath> paths = workflowService.getWorkflowPaths(instanceId); assertEquals(1, paths.size()); path = paths.get(0); List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); assertEquals(1, tasks.size()); WorkflowTask reviewTask = tasks.get(0); Map<QName, Serializable> props = new HashMap<QName, Serializable>(); props.put(outcomePropName, "Approve"); workflowService.updateTask(reviewTask.getId(), props, null, null); WorkflowTask result = workflowService.endTask(reviewTask.getId(), null); Serializable outcome = result.getProperties().get(WorkflowModel.PROP_OUTCOME); assertEquals("Approve", outcome);
List<WorkflowInstance> workflows = workflowService.getActiveWorkflows(fakeDefId); assertTrue(workflows.isEmpty()); workflows = workflowService.getCompletedWorkflows(fakeDefId); assertTrue(workflows.isEmpty()); workflows = workflowService.getWorkflows(fakeDefId); assertTrue(workflows.isEmpty()); workflows = workflowService.getActiveWorkflows(defId); assertTrue(workflows.isEmpty()); workflows = workflowService.getCompletedWorkflows(defId); assertTrue(workflows.isEmpty()); workflows = workflowService.getWorkflows(defId); assertTrue(workflows.isEmpty()); Serializable wfPackage1 = workflowService.createPackage(null); Map<QName, Serializable> params = new HashMap<QName, Serializable>(); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage1); WorkflowPath path1 = workflowService.startWorkflow(defId, params); String instance1 = path1.getInstance().getId(); Serializable wfPackage2 = workflowService.createPackage(null); params = new HashMap<QName, Serializable>(); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage2); WorkflowPath path2 = workflowService.startWorkflow(defId, params); String instance2 = path2.getInstance().getId(); WorkflowTask startTask1 = workflowService.getStartTask(instance1);
Serializable wfPackage = workflowService.createPackage(null); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); Date dueDate = new Date(); WorkflowPath path = workflowService.startWorkflow(workflowDef.getId(), params); assertNotNull(path); assertTrue(path.isActive()); List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); assertEquals(1, tasks.size()); WorkflowTask startTask = tasks.get(0); startTask = workflowService.getStartTask(path.getInstance().getId()); assertNotNull(startTask); assertEquals(startTaskDefId, startTask.getDefinition().getId()); workflowService.endTask(startTask.getId(), null); WorkflowTask task = workflowService.getTaskById(startTask.getId()); Map<QName, Serializable> props = task.getProperties(); assertEquals(dueDate, props.get(WorkflowModel.PROP_DUE_DATE));
@Test public void testWorkflowVarious() throws Exception { WorkflowDefinition definition = deployDefinition(getTestDefinitionPath()); // Start the Workflow WorkflowPath path = workflowService.startWorkflow(definition.getId(), null); String instanceId = path.getInstance().getId(); List<WorkflowTask> workflowTasks = workflowService.getStartTasks(Arrays.asList(instanceId), true); assertNotNull(workflowTasks); assertEquals(1, workflowTasks.size()); assertFalse(workflowService.hasWorkflowImage(instanceId)); assertNull(workflowService.getWorkflowImage(instanceId)); List<WorkflowInstance> instances = workflowService.cancelWorkflows(null); assertTrue(instances.isEmpty()); WorkflowInstance wfi = workflowService.deleteWorkflow(instanceId); assertEquals(instanceId, wfi.getId()); try { byte[] image = workflowService.getDefinitionImage(definition.getId()); } catch (WorkflowException we ) { assertTrue(we.getMessage().contains("Failed to retrieve workflow definition")); } }
workflowService.isDefinitionDeployed(incorrectNode.getNodeRef()); fail("The content type is incorrect, it should not get here"); boolean isDeployed = workflowService.isDefinitionDeployed(workflowNode); workflowService.deployDefinition(incorrectNode.getNodeRef()); fail("The content type is incorrect, it should not get here"); assertFalse(workflowService.isDefinitionDeployed(workflowNode)); WorkflowDeployment workflowDeployment = workflowService.deployDefinition(workflowNode); assertNotNull(workflowDeployment); assertTrue(workflowService.isDefinitionDeployed(workflowNode)); List<WorkflowDefinition> defs = workflowService.getAllDefinitionsByName(workflowDeployment.getDefinition().getName()); assertNotNull(defs); assertEquals(1, defs.size()); workflowService.undeployDefinition(workflowDeployment.getDefinition().getId()); assertFalse(workflowService.isDefinitionDeployed(workflowNode)); workflowService.startWorkflowFromTemplate(incorrectNode.getNodeRef()); fail("This method hasn't be implemented"); boolean multi = workflowService.isMultiTenantWorkflowDeploymentEnabled(); assertTrue(multi);
/** * Test for MNT-11247 */ @Test public void testAssignmentListener() { WorkflowDefinition definition = deployDefinition(getAssignmentListenerDefinitionPath()); Map<QName, Serializable> params = new HashMap<QName, Serializable>(); params.put(ContentModel.PROP_OWNER, USER1); NodeRef assignee = personManager.get(USER1); params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee); WorkflowPath path = workflowService.startWorkflow(definition.getId(), params); // end start task List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); workflowService.endTask(tasks.get(0).getId(), null); // end user task 1 tasks = workflowService.getTasksForWorkflowPath(path.getId()); workflowService.updateTask(tasks.get(0).getId(), params, null, null); workflowService.endTask(tasks.get(0).getId(), null); WorkflowTask result = workflowService.getTaskById(tasks.get(0).getId()); Map<QName, Serializable> props = result.getProperties(); Double create1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "create1")); assertEquals("Create listener was not triggered", new Double(1), create1); Double complete1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "complete1")); assertEquals("Complete listener was not triggered", new Double(1), complete1); Double assignment1 = (Double) props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "assignment1")); assertEquals("Assign listener was not triggered", new Double(1), assignment1); }
public void testDeployWorkflowDefinition() List<WorkflowDefinition> defs = workflowService.getDefinitions(); List<WorkflowDefinition> newDefs = workflowService.getDefinitions(); checkDefinitions(definition, true, newDefs.toArray(new WorkflowDefinition[0])); assertEquals(defs.size()+1, newDefs.size()); WorkflowDefinition defById = workflowService.getDefinitionById(id); checkDefinition(definition, defById); WorkflowDefinition defByName = workflowService.getDefinitionByName(definition.getName()); checkDefinition(definition, defByName); assertFalse(workflowService.getDefinitions().isEmpty()); assertFalse(workflowService.getAllDefinitions().isEmpty()); assertTrue(workflowService.getDefinitions().isEmpty()); assertTrue(workflowService.getAllDefinitions().isEmpty());
when(service.getTaskById(anyString())).thenAnswer(new Answer<WorkflowTask>() when(service.updateTask(anyString(), anyMap(), anyMap(), anyMap())) .thenAnswer(new Answer<WorkflowTask>() when(service.endTask(eq(TASK_ID), anyString())) .thenReturn(newTask); when(service.isTaskEditable((WorkflowTask)any(), anyString())).thenReturn(true);
private void endInvitation(WorkflowTask startTask, String transition, Map<QName, Serializable> properties, QName... taskTypes ) { // Deleting a person can cancel their invitations. Cancelling invitations can delete inactive persons! So prevent infinite looping here if (TransactionalResourceHelper.getSet(getClass().getName()).add(startTask.getPath().getInstance().getId())) { List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(startTask.getPath().getId()); if(tasks.size()==1) { WorkflowTask task = tasks.get(0); if(taskTypeMatches(task, taskTypes)) { if(properties != null) { workflowService.updateTask(task.getId(), properties, null, null); } workflowService.endTask(task.getId(), transition); return; } } // Throw exception if the task not found. Object objs[] = { startTask.getPath().getInstance().getId() }; throw new InvitationExceptionUserError("invitation.invite.already_finished", objs); } }
WorkflowTask startTask = workflowService.getStartTask(workflowInstanceId); String startTaskId = startTask.getId(); workflowService.endTask(startTaskId, null); workflowService.updateTask(theTask.getId(), params, null, null); workflowService.endTask(theTask.getId(), null); workflowService.endTask(lastTask.getId(), null);
List<WorkflowTask> tasks = workflowService.queryTasks(processTaskQuery, false); workflowService.updateTask(taskId, props, null, null); workflowService.endTask(taskId, null);