KieSession ksession = engine.getKieSession();
TaskService taskService = engine.getTaskService();
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("owner", "john");
JtaTransactionManager jtaTxm = (JtaTransactionManager) context.getBean("jbpmTxManager");
TransactionStatus ut = null;
try {
ut = beginTransaction(jtaTxm);
ProcessInstance processInstance = ksession.startProcess("expense", parameters);
executeTasksByProcessByTaskName(processInstance.getId(), "create", taskService);
jtaTxm.commit(ut);
ut = beginTransaction(jtaTxm);
executeTasksByProcessByTaskName(processInstance.getId(), "edit", taskService);
jtaTxm.commit(ut);
ut = beginTransaction(jtaTxm);
//The problem happens here. There is no task "edit", but it should be.
executeTasksByProcessByTaskName(processInstance.getId(), "edit", taskService);
jtaTxm.commit(ut);
ut = beginTransaction(jtaTxm);
executeTasksByProcessByTaskName(processInstance.getId(), "edit", taskService);
jtaTxm.commit(ut);
ut = beginTransaction(jtaTxm);
executeTasksByProcessByTaskName(processInstance.getId(), "delete", taskService);
jtaTxm.commit(ut);
} finally {
// if (ut != null && javax.transaction.Status.STATUS_ACTIVE == ut.getStatus()) {
// jtaTxm.rollback(ut);
// }
}