代码:
xml:
报错:
package com.cloud.test;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.TaskService;
import org.jbpm.api.task.Task;
import org.jbpm.pvm.internal.task.TaskImpl;
/**
* 子任务测试
* @author Administrator
*
*/
public class SubTask {
/**
* 获取流程引擎
* @return
*/
public static ProcessEngine getProcessEngine() {
Configuration cfg = new Configuration();
return cfg.buildProcessEngine();
}
public void create() {
ProcessEngine engine = getProcessEngine();
//启动任务
engine.getExecutionService().startProcessInstanceByKey("SubTask");
//创建子任务
TaskService ts = engine.getTaskService();
List<Task> tasks = ts.findPersonalTasks("abc");
if (tasks !=null && tasks.size() >= 1) {
Task parent = tasks.get(0);
System.out.println(parent.getId() + "_" + parent.getName());
Task task = ts.newTask(parent.getId());
task.setAssignee("abc");
((TaskImpl)task).setSignalling(false);
task.setName("subTask_new");
ts.saveTask(task);
System.out.println("success");
}
}
public void audit() {
ProcessEngine engine = getProcessEngine();
TaskService ts = engine.getTaskService();
List<Task> tasks = ts.findPersonalTasks("abc");
for (Task task : tasks) {
System.out.println(task.getId() + "_" + task.getName());
if ("subTask_new".equals(task.getName())) {
ts.completeTask(task.getId());
}
}
}
public static void main(String[] args) {
// new SubTask().create();
new SubTask().audit();
}
}
xml:
<?xml version="1.0" encoding="UTF-8"?>
<process name="SubTask" xmlns="http://jbpm.org/4.4/jpdl">
<start name="start1" g="182,42,48,48">
<transition name="to task1" to="task1" g="-53,-17"/>
</start>
<task name="task1" g="159,132,92,52" assignee="abc">
<transition name="to end1" to="end1" g="-47,-17"/>
</task>
<end name="end1" g="182,245,48,48"/>
</process>
报错:
Exception in thread "main" org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [org.jbpm.pvm.internal.task.TaskImpl#440004]
at org.hibernate.impl.SessionImpl.forceFlush(SessionImpl.java:1041)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:188)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:534)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:526)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:241)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:319)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:265)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.jbpm.pvm.internal.tx.HibernateSessionResource.prepare(HibernateSessionResource.java:56)
at org.jbpm.pvm.internal.tx.StandardTransaction.commit(StandardTransaction.java:107)
at org.jbpm.pvm.internal.tx.StandardTransaction.complete(StandardTransaction.java:64)
at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:57)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:56)
at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
at org.jbpm.pvm.internal.svc.TaskServiceImpl.completeTask(TaskServiceImpl.java:88)
at com.cloud.test.SubTask.audit(SubTask.java:59)
at com.cloud.test.SubTask.main(SubTask.java:67)