ITaskManagementService tms = new RemoteTMSFactory(TMS_REMOTE_URL, TOKEN).getService();
Task[] tasks = tms.getTaskList();
Assert.assertNotNull(tasks);
String task1ID = nextRandom();
PATask task1 = new PATask(task1ID, new URI("http://localhost/1"), "processID", "urn:completeSOAPAction", Utils.createXMLDocument());
task1.getUserOwners().add("intalio\\admin");
tms.create(task1);
PATask task2 = (PATask) tms.getTask(task1ID);
TaskEquality.areTasksEquals(task1, task2);
String task3ID = nextRandom();
PATask task3 = new PATask(task3ID, new URI("http://localhost/3"), "processID", "urn:completeSOAPAction", Utils.createXMLDocument());
task3.getUserOwners().add("intalio.admin");
task3.getUserOwners().add("intalio\\admin");
tms.create(task3);
Document output1 = Utils.createXMLDocument();
output1.getDocumentElement().appendChild(output1.createTextNode("Hi world"));
tms.setOutput(task3ID, output1);
PATask task4 = (PATask) tms.getTask(task3ID);
Assert.assertTrue(TaskEquality.areDocumentsEqual(output1, task4.getOutput()));
Assert.assertEquals(TaskState.READY, task4.getState());
Document output2 = Utils.createXMLDocument();
tms.setOutputAndComplete(task3ID, output2);
PATask task5 = (PATask) tms.getTask(task4.getID());
Assert.assertTrue(TaskEquality.areDocumentsEqual(output2, task5.getOutput()));
Assert.assertEquals(TaskState.COMPLETED, task5.getState());
String task6ID = nextRandom();
PATask task6 = new PATask(task6ID, new URI("http://localhost/6"), "processID", "urn:completeSOAPAction", Utils.createXMLDocument());
task6.getUserOwners().add("intalio\\admin");
tms.create(task6);
tms.complete(task6ID);
PATask task7 = (PATask) tms.getTask(task6ID);
Assert.assertEquals(TaskState.COMPLETED, task7.getState());
tms.fail(task7.getID(), "code", "reason");
PATask task8 = (PATask) tms.getTask(task7.getID());
Assert.assertEquals(task8.getProcessID(), task7.getProcessID());
Assert.assertEquals(TaskState.FAILED, task8.getState());
Assert.assertEquals("code", task8.getFailureCode());
Assert.assertEquals("reason", task8.getFailureReason());
String task8ID = task8.getID();
// TODO: add system user for testing that can delete tasks
tms.delete(new String[] { task3ID, task8ID });
Task[] tasks2 = tms.getTaskList();
for (Task task : tasks2) {