public WorkflowTask transition(String transitionId) { update(); return workflowService.endTask(taskId, transitionId); }
/** * End the task * * @param transitionId * transition to end the task for */ public void endTask(String transitionId) { workflowService.endTask(task.getId(), transitionId); }
public WorkflowTask transition(String transitionId) { update(); return workflowService.endTask(taskId, transitionId); }
/** * End the task * * @param transitionId * transition to end the task for */ public void endTask(String transitionId) { workflowService.endTask(task.getId(), transitionId); }
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); } } } } }
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); } } } } }
private void signalStartTask(WorkflowPath path) { List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); if (tasks.size() == 1) { WorkflowTask startTask = tasks.get(0); workflowService.endTask(startTask.getId(), null); } else { throw new WorkflowException("Start task not found! Expected 1 task but found: " + tasks.size()); } } }
private void signalStartTask(WorkflowPath path) { List<WorkflowTask> tasks = workflowService.getTasksForWorkflowPath(path.getId()); if (tasks.size() == 1) { WorkflowTask startTask = tasks.get(0); workflowService.endTask(startTask.getId(), null); } else { throw new WorkflowException("Start task not found! Expected 1 task but found: " + tasks.size()); } } }
workflowService.endTask(startTask.getId(), null);
@SuppressWarnings("unchecked") public void testPersistTransitions() throws Exception { // Check updates but doesn't transition if no transition prop set. processPersist("prop_bpm_foo", "foo"); // Check endTask is never called. verify(workflowService, times(1)).updateTask(eq(TASK_ID), anyMap(), anyMap(), anyMap()); verify(workflowService, never()).endTask(eq(TASK_ID), anyString()); // Check default transition. String dataKey = makeDataKeyName(TransitionFieldProcessor.KEY); processPersist(dataKey, null); verify(workflowService, times(1)).endTask(TASK_ID, null); // Check specific transition. processPersist(dataKey, "foo"); verify(workflowService, times(1)).endTask(TASK_ID, "foo"); }
@Override public void requestReset(String userId, String clientName) { ParameterCheck.mandatoryString("userId", userId); ParameterCheck.mandatoryString("clientName", clientName); String userEmail = validateUserAndGetEmail(userId); // Get the (latest) workflow definition for reset-password. WorkflowDefinition wfDefinition = workflowService.getDefinitionByName(WorkflowModelResetPassword.WORKFLOW_DEFINITION_NAME); // create workflow properties Map<QName, Serializable> props = new HashMap<>(7); props.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, I18NUtil.getMessage(WORKFLOW_DESCRIPTION_KEY)); props.put(WorkflowModelResetPassword.WF_PROP_USERNAME, userId); props.put(WorkflowModelResetPassword.WF_PROP_USER_EMAIL, userEmail); props.put(WorkflowModelResetPassword.WF_PROP_CLIENT_NAME, clientName); props.put(WorkflowModel.ASSOC_PACKAGE, workflowService.createPackage(null)); String guid = GUID.generate(); props.put(WorkflowModelResetPassword.WF_PROP_KEY, guid); props.put(WorkflowModelResetPassword.WF_PROP_TIMER_END, timerEnd); // start the workflow WorkflowPath path = workflowService.startWorkflow(wfDefinition.getId(), props); if (path.isActive()) { WorkflowTask startTask = workflowService.getStartTask(path.getInstance().getId()); workflowService.endTask(startTask.getId(), null); } }
@Override public void requestReset(String userId, String clientName) { ParameterCheck.mandatoryString("userId", userId); ParameterCheck.mandatoryString("clientName", clientName); String userEmail = validateUserAndGetEmail(userId); // Get the (latest) workflow definition for reset-password. WorkflowDefinition wfDefinition = workflowService.getDefinitionByName(WorkflowModelResetPassword.WORKFLOW_DEFINITION_NAME); // create workflow properties Map<QName, Serializable> props = new HashMap<>(7); props.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, I18NUtil.getMessage(WORKFLOW_DESCRIPTION_KEY)); props.put(WorkflowModelResetPassword.WF_PROP_USERNAME, userId); props.put(WorkflowModelResetPassword.WF_PROP_USER_EMAIL, userEmail); props.put(WorkflowModelResetPassword.WF_PROP_CLIENT_NAME, clientName); props.put(WorkflowModel.ASSOC_PACKAGE, workflowService.createPackage(null)); String guid = GUID.generate(); props.put(WorkflowModelResetPassword.WF_PROP_KEY, guid); props.put(WorkflowModelResetPassword.WF_PROP_TIMER_END, timerEnd); // start the workflow WorkflowPath path = workflowService.startWorkflow(wfDefinition.getId(), props); if (path.isActive()) { WorkflowTask startTask = workflowService.getStartTask(path.getInstance().getId()); workflowService.endTask(startTask.getId(), null); } }
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); } }
workflowService.endTask(taskId, null);
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); } }
@SuppressWarnings("unchecked") public void testPersistPropertyAndTransition() throws Exception { FormData data = new FormData(); data.addFieldData("prop_bpm_foo", "bar"); String dataKey = makeDataKeyName(TransitionFieldProcessor.KEY); data.addFieldData(dataKey, "foo"); WorkflowTask persistedItem = (WorkflowTask) processor.persist(item, data); // make sure task is correct and update and endTask were called assertEquals(newTask, persistedItem); verify(workflowService, times(1)).updateTask(eq(TASK_ID), anyMap(), anyMap(), anyMap()); verify(workflowService, times(1)).endTask(TASK_ID, "foo"); }
private void executeAdhocWorkflow(WorkflowDefinition workflowDef) { personManager.setUser(USER3); String workflowId = startAdhocWorkflow(workflowDef, USER3); // End start task to progress workflow WorkflowTask startTask = workflowService.getStartTask(workflowId); String startTaskId = startTask.getId(); workflowService.endTask(startTaskId, null); // finish the adhoc task WorkflowTask adhocTask = getNextTaskForWorkflow(workflowId); workflowService.endTask(adhocTask.getId(), null); // finish the workflow WorkflowTask lastTask = getNextTaskForWorkflow(workflowId); workflowService.endTask(lastTask.getId(), null); // ensure the workflow has completed assertFalse(workflowService.getWorkflowById(workflowId).isActive()); }
private WorkflowTask getWorkflowTask(String definitionName) { WorkflowDefinition reviewDef = workflowService.getDefinitionByName(definitionName); Map<QName, Serializable> properties = new HashMap<QName, Serializable>(); properties.put(WorkflowModel.ASSOC_ASSIGNEE, personManager.get(USER_ONE)); properties.put(WorkflowModel.ASSOC_PACKAGE, folder); WorkflowPath path = workflowService.startWorkflow(reviewDef.getId(), properties); WorkflowTask task = getTaskForPath(path); String startTaskId = reviewDef.getStartTaskDefinition().getId(); if (startTaskId.equals(task.getDefinition().getId())) { workflowService.endTask(task.getId(), null); task = getTaskForPath(path); } return task; }
/** * 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); }
@Category(RedundantTests.class) @Test public void testStartWorkflowFromTaskListener() throws Exception { WorkflowDefinition testDefinition = deployDefinition("activiti/testStartWfFromListener.bpmn20.xml"); AuthenticationUtil.setAdminUserAsFullyAuthenticatedUser(); Map<QName, Serializable> props = new HashMap<QName, Serializable>(); props.put(ContentModel.PROP_NAME, "MNT-11926-testfile.txt"); final ChildAssociationRef childAssoc = nodeService.createNode(companyHome, ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_PREFIX, "MNT-11926-test"), ContentModel.TYPE_CONTENT, props); try { // Create workflow parameters Map<QName, Serializable> params = new HashMap<QName, Serializable>(); Serializable wfPackage = workflowService.createPackage(null); params.put(WorkflowModel.ASSOC_PACKAGE, wfPackage); NodeRef assignee = personManager.get(USER1); params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee); // task instance field WorkflowPath path = workflowService.startWorkflow(testDefinition.getId(), params); String instanceId = path.getInstance().getId(); WorkflowTask startTask = workflowService.getStartTask(instanceId); workflowService.endTask(startTask.getId(), null); } finally { // tidy up nodeService.deleteNode(childAssoc.getChildRef()); } }