JBPM4注意事项

 

学习过程中遇到的几个问题,记录一下

 

 

常见错误loading for a different type with name "javax/servlet/http/HttpServletRequest" 

 

包冲突,貌似只有tomcat6.X有这个问题,jpml自带的juel.jar, juel-engine.jar, juel-impl.jar会与tomcat目录中的el-api.jar发生冲突

 

网上搜索后,发现两个解决方法:

一,换掉tomcat,使用tomcat5.5是没有问题的。

二,juel.jar, juel-engine.jar, juel-impl.jar这三个包复制到tomcat6lib(改原来的el-api.jarel-api.jar.txt,或者干脆删掉),并且把WEB-INF\lib中的juel.jar, juel-engine.jar, juel-impl.jar删除。

 

 

关于PersonalTaskGroupTask

 

TaskServer中有两个常用方法findPersonalTasksfindGroupTasks

参数都是String类型的userId

 

findPersonalTasks的结果是taskassignee明确指向userId

findGroupTasks的结果是userId的所在组别是在节点中candidate-groups配置好的

 

主要说下findGroupTaskstask,这种task可以被所有具有权限的用户看到,因此可能产生并发问题,例如一个员工请假,经理A与经理B都有审批权限,如果两个经理同时去审批,就有问题了

 

因此在经理A确定要审批的时候,需要调用下面这个方法

taskService.takeTask(taskId, userId)  这样该任务就被分配给了经理A,经理B通过findGroupTasks查询的结果就不会再包含那个task

 

如果经理A有事情,觉得他审批不了了,想把这个task退回去,调用下面的方法

taskService.assignTask(taskId, null)

这里第二个参数是userId,如果经理A觉得直接让经理B审批好了,那就将第二个参数设为经理BuserId

 

重复的HistoryTask

 

如果流程中有类似 申请 –> 驳回 -> 申请  这样的节点的话

调用下面方法时

List<HistoryTask> historyTasks = HistoryService.createHistoryTaskQuery()

           .assignee(userId).list();

 

获得的HistoryTask会将被驳回的那次实例也查出来,但两个实例的executionId确实相同的,这里可能会有问题

 


 

你可能感兴趣的:(jbpm4)