public virtual void testHappyPathV2() { Stream invoiceInputStream = typeof(InvoiceProcessApplication).ClassLoader.getResourceAsStream("invoice.pdf"); VariableMap variables = Variables.createVariables().putValue("creditor", "Great Pizza for Everyone Inc.").putValue("amount", 300.0d).putValue("invoiceCategory", "Travel Expenses").putValue("invoiceNumber", "GPFE-23232323").putValue("invoiceDocument", fileValue("invoice.pdf").file(invoiceInputStream).mimeType("application/pdf").create()); ProcessInstance pi = runtimeService.startProcessInstanceByKey("invoice", variables); Task task = taskService.createTaskQuery().processInstanceId(pi.Id).singleResult(); assertEquals("approveInvoice", task.TaskDefinitionKey); IList <IdentityLink> links = taskService.getIdentityLinksForTask(task.Id); ISet <string> approverGroups = new HashSet <string>(); foreach (IdentityLink link in links) { approverGroups.Add(link.GroupId); } assertEquals(2, approverGroups.Count); assertTrue(approverGroups.Contains("accounting")); assertTrue(approverGroups.Contains("sales")); variables.clear(); variables.put("approved", true); taskService.complete(task.Id, variables); task = taskService.createTaskQuery().processInstanceId(pi.Id).singleResult(); assertEquals("prepareBankTransfer", task.TaskDefinitionKey); taskService.complete(task.Id); Job archiveInvoiceJob = managementService.createJobQuery().singleResult(); assertNotNull(archiveInvoiceJob); managementService.executeJob(archiveInvoiceJob.Id); assertProcessEnded(pi.Id); }