builder.addProcessFromXml( new StringReader( process ));
final Package pkg = builder.getPackage();
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage(pkg);
StatefulSession session = ruleBase.newStatefulSession();
TestListWorkItemHandler handler = new TestListWorkItemHandler();
session.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("list", list);
session.startProcess("com.sample.ruleflow", parameters);
assertEquals(1, session.getProcessInstances().size());
assertEquals(3, handler.getWorkItems().size());
session = getSerialisedStatefulSession( session );
session.getWorkItemManager().registerWorkItemHandler("Human Task", handler);
List<WorkItem> workItems = new ArrayList<WorkItem>(handler.getWorkItems());
handler.reset();
for (WorkItem workItem: workItems) {
session.getWorkItemManager().completeWorkItem(workItem.getId(), null);
}
assertEquals(1, session.getProcessInstances().size());
assertEquals(3, handler.getWorkItems().size());
session = getSerialisedStatefulSession( session );
for (WorkItem workItem: handler.getWorkItems()) {
session.getWorkItemManager().completeWorkItem(workItem.getId(), null);
}
assertEquals(0, session.getProcessInstances().size());
}