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);
}
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);
}
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;
}
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()));
}
}
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);
}
Aggregations