Search in sources :

Example 6 with WorkflowPath

use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.

the class AbstractWorkflowRestApiTest method testTaskInstancesForWorkflowGet.

public void testTaskInstancesForWorkflowGet() throws Exception {
    // Check starts with no workflow.
    personManager.setUser(USER2);
    sendRequest(new GetRequest(MessageFormat.format(URL_WORKFLOW_TASKS, "Foo")), Status.STATUS_INTERNAL_SERVER_ERROR);
    // Start workflow as USER1 and assign task to USER2.
    personManager.setUser(USER1);
    WorkflowDefinition adhocDef = workflowService.getDefinitionByName(getAdhocWorkflowDefinitionName());
    Map<QName, Serializable> params = new HashMap<QName, Serializable>();
    params.put(WorkflowModel.ASSOC_ASSIGNEE, personManager.get(USER2));
    Calendar dueDateCal = Calendar.getInstance();
    Date dueDate = dueDateCal.getTime();
    params.put(WorkflowModel.PROP_DUE_DATE, dueDate);
    params.put(WorkflowModel.PROP_PRIORITY, 1);
    params.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
    WorkflowPath adhocPath = workflowService.startWorkflow(adhocDef.getId(), params);
    String workflowId = adhocPath.getInstance().getId();
    workflows.add(workflowId);
    // End start task.
    WorkflowTask startTask = workflowService.getStartTask(workflowId);
    String startTaskId = startTask.getId();
    workflowService.endTask(startTaskId, null);
    // Check USER2 now has one task.
    List<WorkflowTask> tasks = workflowService.getAssignedTasks(USER2, WorkflowTaskState.IN_PROGRESS);
    assertEquals(1, tasks.size());
    WorkflowTask task = tasks.get(0);
    // Retrieve tasks using the workflow instance
    String baseUrl = MessageFormat.format(URL_WORKFLOW_TASKS, workflowId);
    // Check returns the completed start task.
    String adhocTaskId = task.getId();
    checkTasksMatch(baseUrl, startTaskId);
    String completedUrl = baseUrl + "?state=" + WorkflowTaskState.COMPLETED;
    checkTasksMatch(completedUrl, startTaskId);
    personManager.setUser(USER2);
    String inProgressUrl = baseUrl + "?state=" + WorkflowTaskState.IN_PROGRESS;
    checkTasksMatch(inProgressUrl, adhocTaskId);
    String user1Url = baseUrl + "?authority=" + USER1;
    checkTasksMatch(user1Url, startTaskId);
    String user2Url = baseUrl + "?authority=" + USER2;
    checkTasksMatch(user2Url, adhocTaskId);
    String user1CompletedURL = user1Url + "&state=" + WorkflowTaskState.COMPLETED;
    checkTasksMatch(user1CompletedURL, startTaskId);
    String user1InProgressURL = user1Url + "&state=" + WorkflowTaskState.IN_PROGRESS;
    checkTasksMatch(user1InProgressURL);
    String user2CompletedURL = user2Url + "&state=" + WorkflowTaskState.COMPLETED;
    checkTasksMatch(user2CompletedURL);
    String user2InProgressURL = user2Url + "&state=" + WorkflowTaskState.IN_PROGRESS;
    checkTasksMatch(user2InProgressURL, adhocTaskId);
}
Also used : Serializable(java.io.Serializable) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) GetRequest(org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest) Calendar(java.util.Calendar) WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask) Date(java.util.Date)

Example 7 with WorkflowPath

use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.

the class WorkflowModelBuilderTest method makePath.

private WorkflowPath makePath() {
    String id = "pathId$1";
    Date startDate = new Date();
    WorkflowDefinition definition = new WorkflowDefinition("The Id", "The Name", "1", "The Title", "The Description", null);
    WorkflowInstance instance = new WorkflowInstance("", definition, null, null, null, workflowPackage, true, startDate, null);
    return new WorkflowPath(id, instance, null, true);
}
Also used : WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowInstance(org.alfresco.service.cmr.workflow.WorkflowInstance) Date(java.util.Date)

Example 8 with WorkflowPath

use of org.alfresco.service.cmr.workflow.WorkflowPath in project acs-community-packaging by Alfresco.

the class StartWorkflowWizard method finishImpl.

@Override
protected String finishImpl(FacesContext context, String outcome) throws Exception {
    if (logger.isDebugEnabled())
        logger.debug("Starting workflow: " + this.selectedWorkflow);
    // prepare the parameters from the current state of the property sheet
    Map<QName, Serializable> params = WorkflowUtil.prepareTaskParams(this.startTaskNode);
    if (logger.isDebugEnabled())
        logger.debug("Starting workflow with parameters: " + params);
    // create a workflow package for the attached items and add them
    NodeRef workflowPackage = this.getWorkflowService().createPackage(null);
    params.put(WorkflowModel.ASSOC_PACKAGE, workflowPackage);
    for (String addedItem : this.packageItemsToAdd) {
        NodeRef addedNodeRef = new NodeRef(addedItem);
        // MNT-11522. fix bug. add behavior filter for add items in workflow package.
        try {
            this.getBehaviourFilter().disableBehaviour(addedNodeRef, ContentModel.ASPECT_AUDITABLE);
            this.getUnprotectedNodeService().addChild(workflowPackage, addedNodeRef, WorkflowModel.ASSOC_PACKAGE_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName((String) this.getNodeService().getProperty(addedNodeRef, ContentModel.PROP_NAME))));
        } finally {
            this.getBehaviourFilter().enableBehaviour(addedNodeRef, ContentModel.ASPECT_AUDITABLE);
        }
    }
    // setup the context for the workflow (this is the space the workflow was launched from)
    Node workflowContext = this.navigator.getCurrentNode();
    if (workflowContext != null) {
        params.put(WorkflowModel.PROP_CONTEXT, (Serializable) workflowContext.getNodeRef());
    }
    // start the workflow to get access to the start task
    WorkflowPath path = this.getWorkflowService().startWorkflow(this.selectedWorkflow, params);
    if (path != null) {
        // extract the start task
        List<WorkflowTask> tasks = this.getWorkflowService().getTasksForWorkflowPath(path.id);
        if (tasks.size() == 1) {
            WorkflowTask startTask = tasks.get(0);
            if (logger.isDebugEnabled())
                logger.debug("Found start task:" + startTask);
            if (startTask.state == WorkflowTaskState.IN_PROGRESS) {
                // end the start task to trigger the first 'proper'
                // task in the workflow
                this.getWorkflowService().endTask(startTask.id, null);
            }
        }
        if (logger.isDebugEnabled())
            logger.debug("Started workflow: " + this.selectedWorkflow);
    }
    return outcome;
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) Serializable(java.io.Serializable) QName(org.alfresco.service.namespace.QName) Node(org.alfresco.web.bean.repository.Node) TransientNode(org.alfresco.web.bean.repository.TransientNode) MapNode(org.alfresco.web.bean.repository.MapNode) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask)

Example 9 with WorkflowPath

use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.

the class AbstractWorkflowRestApiTest method testWorkflowInstanceDeleteAsAdministrator.

public void testWorkflowInstanceDeleteAsAdministrator() throws Exception {
    // Start workflow as USER1
    personManager.setUser(USER1);
    WorkflowDefinition adhocDef = workflowService.getDefinitionByName(getAdhocWorkflowDefinitionName());
    Map<QName, Serializable> params = new HashMap<QName, Serializable>();
    params.put(WorkflowModel.ASSOC_ASSIGNEE, personManager.get(USER2));
    Date dueDate = new Date();
    params.put(WorkflowModel.PROP_DUE_DATE, dueDate);
    params.put(WorkflowModel.PROP_PRIORITY, 1);
    params.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
    params.put(WorkflowModel.PROP_CONTEXT, packageRef);
    WorkflowPath adhocPath = workflowService.startWorkflow(adhocDef.getId(), params);
    WorkflowTask startTask = workflowService.getTasksForWorkflowPath(adhocPath.getId()).get(0);
    startTask = workflowService.endTask(startTask.getId(), null);
    WorkflowInstance adhocInstance = startTask.getPath().getInstance();
    // Run next request as admin
    String admin = authenticationComponent.getDefaultAdministratorUserNames().iterator().next();
    AuthenticationUtil.setFullyAuthenticatedUser(admin);
    sendRequest(new DeleteRequest(URL_WORKFLOW_INSTANCES + "/" + adhocInstance.getId()), Status.STATUS_OK);
    WorkflowInstance instance = workflowService.getWorkflowById(adhocInstance.getId());
    if (instance != null) {
        assertFalse("The deleted workflow is still active!", instance.isActive());
    }
    List<WorkflowInstance> instances = workflowService.getActiveWorkflows(adhocInstance.getDefinition().getId());
    for (WorkflowInstance activeInstance : instances) {
        assertFalse(adhocInstance.getId().equals(activeInstance.getId()));
    }
}
Also used : Serializable(java.io.Serializable) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask) WorkflowInstance(org.alfresco.service.cmr.workflow.WorkflowInstance) DeleteRequest(org.springframework.extensions.webscripts.TestWebScriptServer.DeleteRequest) Date(java.util.Date)

Example 10 with WorkflowPath

use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.

the class AbstractWorkflowRestApiTest method testWorkflowPermissions.

public void testWorkflowPermissions() throws Exception {
    // Start workflow as USER1 and assign task to USER1.
    personManager.setUser(USER1);
    WorkflowDefinition adhocDef = workflowService.getDefinitionByName(getAdhocWorkflowDefinitionName());
    Map<QName, Serializable> params = new HashMap<QName, Serializable>();
    params.put(WorkflowModel.ASSOC_ASSIGNEE, personManager.get(USER1));
    Calendar dueDateCal = Calendar.getInstance();
    Date dueDate = dueDateCal.getTime();
    params.put(WorkflowModel.PROP_DUE_DATE, dueDate);
    params.put(WorkflowModel.PROP_PRIORITY, 1);
    params.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
    WorkflowPath adhocPath = workflowService.startWorkflow(adhocDef.getId(), params);
    String workflowId = adhocPath.getInstance().getId();
    workflows.add(workflowId);
    WorkflowTask startTask = workflowService.getStartTask(workflowId);
    workflowService.endTask(startTask.getId(), null);
    // Check tasks of USER1 from behalf of USER2
    personManager.setUser(USER2);
    Response response = sendRequest(new GetRequest(MessageFormat.format(URL_USER_TASKS, USER1)), 200);
    assertEquals(Status.STATUS_OK, response.getStatus());
    String jsonStr = response.getContentAsString();
    JSONObject json = new JSONObject(jsonStr);
    JSONArray results = json.getJSONArray("data");
    assertNotNull(results);
    assertTrue("User2 should not see any tasks if he is not initiator or assignee", results.length() == 0);
}
Also used : Serializable(java.io.Serializable) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) Calendar(java.util.Calendar) JSONArray(org.json.JSONArray) WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask) Date(java.util.Date) Response(org.springframework.extensions.webscripts.TestWebScriptServer.Response) JSONObject(org.json.JSONObject) GetRequest(org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest)

Aggregations

WorkflowPath (org.alfresco.service.cmr.workflow.WorkflowPath)18 Serializable (java.io.Serializable)17 QName (org.alfresco.service.namespace.QName)17 WorkflowDefinition (org.alfresco.service.cmr.workflow.WorkflowDefinition)16 Date (java.util.Date)15 HashMap (java.util.HashMap)15 WorkflowTask (org.alfresco.service.cmr.workflow.WorkflowTask)15 GetRequest (org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest)12 JSONObject (org.json.JSONObject)11 Response (org.springframework.extensions.webscripts.TestWebScriptServer.Response)11 JSONArray (org.json.JSONArray)8 Calendar (java.util.Calendar)6 WorkflowInstance (org.alfresco.service.cmr.workflow.WorkflowInstance)5 DeleteRequest (org.springframework.extensions.webscripts.TestWebScriptServer.DeleteRequest)3 PutRequest (org.springframework.extensions.webscripts.TestWebScriptServer.PutRequest)3 NodeRef (org.alfresco.service.cmr.repository.NodeRef)2 WorkflowTaskDefinition (org.alfresco.service.cmr.workflow.WorkflowTaskDefinition)1 WorkflowTaskState (org.alfresco.service.cmr.workflow.WorkflowTaskState)1 MapNode (org.alfresco.web.bean.repository.MapNode)1 Node (org.alfresco.web.bean.repository.Node)1