use of org.alfresco.rest.workflow.api.model.ProcessInfo in project alfresco-remote-api by Alfresco.
the class ProcessWorkflowApiTest method testMNT12382.
@Test
public void testMNT12382() throws Exception {
currentNetwork = getTestFixture().getRandomNetwork();
TestPerson initiator = currentNetwork.getPeople().get(0);
RequestContext requestContext = new RequestContext(currentNetwork.getId(), initiator.getId());
publicApiClient.setRequestContext(requestContext);
ProcessInfo processInfo = startReviewPooledProcess(requestContext);
final List<TestPerson> persons = transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<List<TestPerson>>() {
@SuppressWarnings("synthetic-access")
public List<TestPerson> execute() throws Throwable {
ArrayList<TestPerson> persons = new ArrayList<TestPerson>();
persons.add(currentNetwork.createUser(new PersonInfo("Maxim0", "Bobyleu0", "maxim0.bobyleu0", "password", null, "skype", "location", "telephone", "mob", "instant", "google")));
persons.add(currentNetwork.createUser(new PersonInfo("Maxim1", "Bobyleu1", "maxim1.bobyleu1", "password", null, "skype", "location", "telephone", "mob", "instant", "google")));
persons.add(currentNetwork.createUser(new PersonInfo("Maxim2", "Bobyleu2", "maxim2.bobyleu2", "password", null, "skype", "location", "telephone", "mob", "instant", "google")));
return persons;
}
}, false, true);
final MemberOfSite memberOfSite = currentNetwork.getSiteMemberships(initiator.getId()).get(0);
// startReviewPooledProcess() uses initiator's site id and role name for construct bpm_groupAssignee, thus we need appropriate things for created users
transactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>() {
public Void execute() throws Throwable {
TenantUtil.runAsUserTenant(new TenantRunAsWork<Void>() {
@Override
public Void doWork() throws Exception {
TestSite initiatorSite = (TestSite) memberOfSite.getSite();
initiatorSite.inviteToSite(persons.get(0).getId(), memberOfSite.getRole());
initiatorSite.inviteToSite(persons.get(1).getId(), memberOfSite.getRole());
// this user wouldn't be in group
initiatorSite.inviteToSite(persons.get(2).getId(), SiteRole.SiteConsumer == memberOfSite.getRole() ? SiteRole.SiteCollaborator : SiteRole.SiteConsumer);
return null;
}
}, AuthenticationUtil.getAdminUserName(), currentNetwork.getId());
return null;
}
}, false, true);
String processId = processInfo.getId();
// getting process items by workflow initiator
ProcessesClient processesClient = publicApiClient.processesClient();
JSONObject initiatorItems = processesClient.findProcessItems(processId);
// getting unclaimed process items by user in group
requestContext = new RequestContext(currentNetwork.getId(), persons.get(0).getId());
publicApiClient.setRequestContext(requestContext);
JSONObject items1 = processesClient.findProcessItems(processId);
assertEquals(initiatorItems.toJSONString(), items1.toJSONString());
// getting unclaimed process items by user not in group
requestContext = new RequestContext(currentNetwork.getId(), persons.get(2).getId());
publicApiClient.setRequestContext(requestContext);
try {
JSONObject items2 = processesClient.findProcessItems(processId);
fail("User not from group should not see items.");
} catch (PublicApiException e) {
// expected
assertEquals(403, e.getHttpResponse().getStatusCode());
}
// claim task
TaskService taskService = activitiProcessEngine.getTaskService();
Task task = taskService.createTaskQuery().processInstanceId(processId).singleResult();
TestPerson assignee = persons.get(1);
taskService.setAssignee(task.getId(), assignee.getId());
// getting claimed process items by assignee
requestContext = new RequestContext(currentNetwork.getId(), assignee.getId());
publicApiClient.setRequestContext(requestContext);
JSONObject items3 = processesClient.findProcessItems(processId);
assertEquals(initiatorItems.toJSONString(), items3.toJSONString());
// getting claimed process items by user in group
requestContext = new RequestContext(currentNetwork.getId(), persons.get(0).getId());
publicApiClient.setRequestContext(requestContext);
try {
JSONObject items4 = processesClient.findProcessItems(processId);
fail("User from group should not see items for claimed task by another user.");
} catch (PublicApiException e) {
// expected
assertEquals(403, e.getHttpResponse().getStatusCode());
} finally {
cleanupProcessInstance(processId);
}
}
use of org.alfresco.rest.workflow.api.model.ProcessInfo in project alfresco-remote-api by Alfresco.
the class ProcessWorkflowApiTest method testGetProcessInstancesWithSorting.
@Test
public void testGetProcessInstancesWithSorting() throws Exception {
final RequestContext requestContext = initApiClientWithTestUser();
final ProcessInfo process1 = startAdhocProcess(requestContext, null, "akey");
final ProcessInfo process2 = startAdhocProcess(requestContext, null, "bkey");
final ProcessInfo process3 = startAdhocProcess(requestContext, null, "aakey");
try {
// sort on business key ascending
ProcessesClient processesClient = publicApiClient.processesClient();
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("orderBy", "businessKey ASC");
ListResponse<ProcessInfo> processList = processesClient.getProcesses(paramMap);
assertNotNull(processList);
assertEquals(3, processList.getList().size());
assertEquals(process3.getId(), processList.getList().get(0).getId());
assertEquals(process1.getId(), processList.getList().get(1).getId());
assertEquals(process2.getId(), processList.getList().get(2).getId());
// sort on business key descending
paramMap.put("orderBy", "businessKey DESC");
processList = processesClient.getProcesses(paramMap);
assertNotNull(processList);
assertEquals(3, processList.getList().size());
assertEquals(process2.getId(), processList.getList().get(0).getId());
assertEquals(process1.getId(), processList.getList().get(1).getId());
assertEquals(process3.getId(), processList.getList().get(2).getId());
paramMap.put("orderBy", "startedAt ASC");
processList = processesClient.getProcesses(paramMap);
assertNotNull(processList);
paramMap.put("orderBy", "endedAt ASC");
processList = processesClient.getProcesses(paramMap);
assertNotNull(processList);
paramMap.put("orderBy", "durationInMillis ASC");
processList = processesClient.getProcesses(paramMap);
assertNotNull(processList);
// sort on more than 1.
paramMap.put("orderBy", "startedAt, endedAt");
try {
processList = processesClient.getProcesses(paramMap);
fail();
} catch (PublicApiException e) {
assertEquals(HttpStatus.BAD_REQUEST.value(), e.getHttpResponse().getStatusCode());
}
// sort on non existing key
paramMap.put("orderBy", "businessKey2 ASC");
try {
processList = processesClient.getProcesses(paramMap);
fail();
} catch (PublicApiException e) {
assertEquals(HttpStatus.BAD_REQUEST.value(), e.getHttpResponse().getStatusCode());
}
// sort on non existing sort order
try {
paramMap.put("orderBy", "businessKey ASC2");
processList = processesClient.getProcesses(paramMap);
fail("forbidden expected");
} catch (PublicApiException e) {
assertEquals(HttpStatus.BAD_REQUEST.value(), e.getHttpResponse().getStatusCode());
}
} finally {
cleanupProcessInstance(process1.getId(), process2.getId(), process3.getId());
}
}
use of org.alfresco.rest.workflow.api.model.ProcessInfo in project alfresco-remote-api by Alfresco.
the class ProcessWorkflowApiTest method testDeleteProcessVariable.
@Test
public void testDeleteProcessVariable() throws Exception {
RequestContext requestContext = initApiClientWithTestUser();
ProcessInfo processRest = startAdhocProcess(requestContext, null);
try {
assertNotNull(processRest);
String processId = processRest.getId();
// Create a variable to be deleted
activitiProcessEngine.getRuntimeService().setVariable(processId, "deleteMe", "This is a string");
// Delete variable
publicApiClient.processesClient().deleteVariable(processId, "deleteMe");
assertFalse(activitiProcessEngine.getRuntimeService().hasVariable(processId, "deleteMe"));
// Deleting again should fail with 404, as variable doesn't exist anymore
try {
publicApiClient.processesClient().deleteVariable(processId, "deleteMe");
fail("Exception expected");
} catch (PublicApiException expected) {
assertEquals(HttpStatus.NOT_FOUND.value(), expected.getHttpResponse().getStatusCode());
assertErrorSummary("The entity with id: deleteMe was not found", expected.getHttpResponse());
}
} finally {
cleanupProcessInstance(processRest.getId());
}
}
use of org.alfresco.rest.workflow.api.model.ProcessInfo in project alfresco-remote-api by Alfresco.
the class ProcessWorkflowApiTest method testGetProcessActivities.
@Test
public void testGetProcessActivities() throws Exception {
final RequestContext requestContext = initApiClientWithTestUser();
String tenantAdmin = AuthenticationUtil.getAdminUserName() + "@" + requestContext.getNetworkId();
final RequestContext adminContext = new RequestContext(requestContext.getNetworkId(), tenantAdmin);
TestNetwork anotherNetwork = getOtherNetwork(requestContext.getNetworkId());
tenantAdmin = AuthenticationUtil.getAdminUserName() + "@" + anotherNetwork.getId();
final RequestContext otherContext = new RequestContext(anotherNetwork.getId(), tenantAdmin);
final ProcessInfo process1 = startAdhocProcess(requestContext, null);
try {
ProcessesClient processesClient = publicApiClient.processesClient();
Map<String, String> paramMap = new HashMap<String, String>();
JSONObject activitiesJSON = processesClient.getActivities(process1.getId(), paramMap);
assertNotNull(activitiesJSON);
JSONArray entriesJSON = (JSONArray) activitiesJSON.get("entries");
assertNotNull(entriesJSON);
assertTrue(entriesJSON.size() == 2);
Map<String, JSONObject> activitiesMap = new HashMap<String, JSONObject>();
for (Object entry : entriesJSON) {
JSONObject jsonEntry = (JSONObject) entry;
JSONObject activityJSONObject = (JSONObject) jsonEntry.get("entry");
activitiesMap.put((String) activityJSONObject.get("activityDefinitionId"), activityJSONObject);
}
JSONObject activityJSONObject = activitiesMap.get("start");
assertNotNull(activityJSONObject);
assertNotNull(activityJSONObject.get("id"));
assertEquals("start", activityJSONObject.get("activityDefinitionId"));
assertNull(activityJSONObject.get("activityDefinitionName"));
assertEquals("startEvent", activityJSONObject.get("activityDefinitionType"));
assertNotNull(activityJSONObject.get("startedAt"));
assertNotNull(activityJSONObject.get("endedAt"));
assertNotNull(activityJSONObject.get("durationInMs"));
activityJSONObject = activitiesMap.get("adhocTask");
assertNotNull(activityJSONObject);
assertNotNull(activityJSONObject.get("id"));
assertEquals("adhocTask", activityJSONObject.get("activityDefinitionId"));
assertEquals("Adhoc Task", activityJSONObject.get("activityDefinitionName"));
assertEquals("userTask", activityJSONObject.get("activityDefinitionType"));
assertNotNull(activityJSONObject.get("startedAt"));
assertNull(activityJSONObject.get("endedAt"));
assertNull(activityJSONObject.get("durationInMs"));
paramMap = new HashMap<String, String>();
paramMap.put("status", "active");
activitiesJSON = processesClient.getActivities(process1.getId(), paramMap);
assertNotNull(activitiesJSON);
entriesJSON = (JSONArray) activitiesJSON.get("entries");
assertNotNull(entriesJSON);
assertTrue(entriesJSON.size() == 1);
paramMap = new HashMap<String, String>();
paramMap.put("status", "completed");
activitiesJSON = processesClient.getActivities(process1.getId(), paramMap);
assertNotNull(activitiesJSON);
entriesJSON = (JSONArray) activitiesJSON.get("entries");
assertNotNull(entriesJSON);
assertTrue(entriesJSON.size() == 1);
paramMap = new HashMap<String, String>();
try {
processesClient.getActivities("fakeid", paramMap);
fail("Exception expected");
} catch (PublicApiException expected) {
assertEquals(HttpStatus.NOT_FOUND.value(), expected.getHttpResponse().getStatusCode());
assertErrorSummary("The entity with id: fakeid was not found", expected.getHttpResponse());
}
// get activities with admin from the same tenant as the process initiator
publicApiClient.setRequestContext(adminContext);
paramMap = new HashMap<String, String>();
activitiesJSON = processesClient.getActivities(process1.getId(), paramMap);
assertNotNull(activitiesJSON);
entriesJSON = (JSONArray) activitiesJSON.get("entries");
assertNotNull(entriesJSON);
assertTrue(entriesJSON.size() == 2);
// get tasks with admin from another tenant as the process initiator
publicApiClient.setRequestContext(otherContext);
paramMap = new HashMap<String, String>();
try {
processesClient.getActivities(process1.getId(), paramMap);
fail("forbidden expected");
} catch (PublicApiException e) {
assertEquals(HttpStatus.FORBIDDEN.value(), e.getHttpResponse().getStatusCode());
}
} finally {
cleanupProcessInstance(process1.getId());
}
}
use of org.alfresco.rest.workflow.api.model.ProcessInfo in project alfresco-remote-api by Alfresco.
the class ProcessWorkflowApiTest method testCreateVariablesPresentInModel.
@Test
@SuppressWarnings("unchecked")
public void testCreateVariablesPresentInModel() throws Exception {
RequestContext requestContext = initApiClientWithTestUser();
ProcessInfo processInstance = startAdhocProcess(requestContext, null);
try {
JSONArray variablesArray = new JSONArray();
JSONObject variableBody = new JSONObject();
variableBody.put("name", "bpm_percentComplete");
variableBody.put("value", 20);
variableBody.put("type", "d:int");
variablesArray.add(variableBody);
variableBody = new JSONObject();
variableBody.put("name", "bpm_workflowPriority");
variableBody.put("value", 50);
variableBody.put("type", "d:int");
variablesArray.add(variableBody);
JSONObject result = publicApiClient.processesClient().createVariables(processInstance.getId(), variablesArray);
assertNotNull(result);
JSONObject resultObject = (JSONObject) result.get("list");
JSONArray resultList = (JSONArray) resultObject.get("entries");
assertEquals(2, resultList.size());
JSONObject firstResultObject = (JSONObject) ((JSONObject) resultList.get(0)).get("entry");
assertEquals("bpm_percentComplete", firstResultObject.get("name"));
assertEquals(20L, firstResultObject.get("value"));
assertEquals("d:int", firstResultObject.get("type"));
assertEquals(20, activitiProcessEngine.getRuntimeService().getVariable(processInstance.getId(), "bpm_percentComplete"));
JSONObject secondResultObject = (JSONObject) ((JSONObject) resultList.get(1)).get("entry");
assertEquals("bpm_workflowPriority", secondResultObject.get("name"));
assertEquals(50L, secondResultObject.get("value"));
assertEquals("d:int", secondResultObject.get("type"));
assertEquals(50, activitiProcessEngine.getRuntimeService().getVariable(processInstance.getId(), "bpm_workflowPriority"));
} finally {
cleanupProcessInstance(processInstance.getId());
}
}
Aggregations