学习过程中遇到的几个问题,记录一下
常见错误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这三个包复制到tomcat6下lib中(改原来的el-api.jar为el-api.jar.txt,或者干脆删掉),并且把WEB-INF\lib中的juel.jar, juel-engine.jar, juel-impl.jar删除。
关于PersonalTask与GroupTask
TaskServer中有两个常用方法findPersonalTasks与 findGroupTasks
参数都是String类型的userId
findPersonalTasks的结果是task中assignee明确指向userId的
findGroupTasks的结果是userId的所在组别是在节点中candidate-groups配置好的
主要说下findGroupTasks的task,这种task可以被所有具有权限的用户看到,因此可能产生并发问题,例如一个员工请假,经理A与经理B都有审批权限,如果两个经理同时去审批,就有问题了
因此在经理A确定要审批的时候,需要调用下面这个方法
taskService.takeTask(taskId, userId) 这样该任务就被分配给了经理A,经理B通过findGroupTasks查询的结果就不会再包含那个task
如果经理A有事情,觉得他审批不了了,想把这个task退回去,调用下面的方法
taskService.assignTask(taskId, null)
这里第二个参数是userId,如果经理A觉得直接让经理B审批好了,那就将第二个参数设为经理B的userId
重复的HistoryTask
如果流程中有类似 申请 –> 驳回 -> 申请 这样的节点的话
调用下面方法时
List<HistoryTask> historyTasks = HistoryService.createHistoryTaskQuery()
.assignee(userId).list();
获得的HistoryTask会将被驳回的那次实例也查出来,但两个实例的executionId确实相同的,这里可能会有问题