1、JBPM调用CompleteTask异常:
[b]void completeTask(java.lang.String taskId) [/b]
Deletes this task, marks the related history task as completed.
[b]void completeTask(java.lang.String taskId, java.util.Map<java.lang.String,?> variables) [/b]
Deletes this task and marks the related history task as completed.
[b]void completeTask(java.lang.String taskId, java.lang.String outcome)[/b]
Deletes this task, marks the related history task as completed with the specified outcome.
[b]void completeTask(java.lang.String taskId, java.lang.String outcome, java.util.Map<java.lang.String,?> variables)[/b]
Deletes this task, marks the related history task as completed with the specified outcome.
JBPM中completeTask有以上四种重载完成节点任务的方法,初学时调用该方法出错:No unnamed transitions were found for the task “**”;后来总结发现,当task中只有一个transition,而且没有name属性,则可以调用completeTask(java.lang.String taskId)和completeTask(java.lang.String taskId, java.util.Map<java.lang.String,?> variables)这两个方法,当有多个transition或者transition有name属性的时候调用完成任务的方法时则需要指定转向,即java.lang.String outcome参数,就是调用后面两个重载的方法,否则就会报上面这个异常;
2、JBPM中使用Hibernate Session的方法:
学习JBPM时,想将数据保存到自己的表中,不过不想使用jdbc,使用hibernate又不想独立再重新用,所以就考虑想用JBPM中的hibernate session,看到源码中sevice中都有session,不过没找到何处赋值的,后面还得多研究下,不过看到有用EnvironmentImpl.getCurrent().get(XXX.class)的方法,而且有个DbSession的类中有hibernate的session变量,所以尝试EnvironmentImpl.getCurrent().get(DbSession.class)获取,不过报错,EnvironmentImpl.getCurrent()是空值,之后发现下面的方法:
EnvironmentImpl environment = ((EnvironmentFactory) processEngine).openEnvironment(); //获取JBPM的环境
DbSession session = environment.get(DbSession.class);
此处注意需要自己处理事务,这个地方被困扰了好久,显示操作但是没有数据,需要手动的去控制事务。
有了这个environment之后同样可以用这个方法也可以获得其他的一些类的实例,这样可以在在JBPM中可以通过environment获得各种服务和接口。
如:
IdentitySession identitySession = environment.get(IdentitySession.class);
[b]void completeTask(java.lang.String taskId) [/b]
Deletes this task, marks the related history task as completed.
[b]void completeTask(java.lang.String taskId, java.util.Map<java.lang.String,?> variables) [/b]
Deletes this task and marks the related history task as completed.
[b]void completeTask(java.lang.String taskId, java.lang.String outcome)[/b]
Deletes this task, marks the related history task as completed with the specified outcome.
[b]void completeTask(java.lang.String taskId, java.lang.String outcome, java.util.Map<java.lang.String,?> variables)[/b]
Deletes this task, marks the related history task as completed with the specified outcome.
JBPM中completeTask有以上四种重载完成节点任务的方法,初学时调用该方法出错:No unnamed transitions were found for the task “**”;后来总结发现,当task中只有一个transition,而且没有name属性,则可以调用completeTask(java.lang.String taskId)和completeTask(java.lang.String taskId, java.util.Map<java.lang.String,?> variables)这两个方法,当有多个transition或者transition有name属性的时候调用完成任务的方法时则需要指定转向,即java.lang.String outcome参数,就是调用后面两个重载的方法,否则就会报上面这个异常;
2、JBPM中使用Hibernate Session的方法:
学习JBPM时,想将数据保存到自己的表中,不过不想使用jdbc,使用hibernate又不想独立再重新用,所以就考虑想用JBPM中的hibernate session,看到源码中sevice中都有session,不过没找到何处赋值的,后面还得多研究下,不过看到有用EnvironmentImpl.getCurrent().get(XXX.class)的方法,而且有个DbSession的类中有hibernate的session变量,所以尝试EnvironmentImpl.getCurrent().get(DbSession.class)获取,不过报错,EnvironmentImpl.getCurrent()是空值,之后发现下面的方法:
EnvironmentImpl environment = ((EnvironmentFactory) processEngine).openEnvironment(); //获取JBPM的环境
DbSession session = environment.get(DbSession.class);
此处注意需要自己处理事务,这个地方被困扰了好久,显示操作但是没有数据,需要手动的去控制事务。
有了这个environment之后同样可以用这个方法也可以获得其他的一些类的实例,这样可以在在JBPM中可以通过environment获得各种服务和接口。
如:
IdentitySession identitySession = environment.get(IdentitySession.class);