jbpm时间调度问题,公司有一个需求就是关于时间调度的问题,借用下面的流程实例来说明,
上面的流程图是一个公司报销流程。普通员工可以填写报销单,然后提交主管审批;主管审批可以有三种可能:一是主管可以驳回请求,那么报销人需要重填报销单,或者取消报销操作;二是主管不同意请求,请求直接结束;三是主管同意请求,那又存在两种情况,一是如果报销总费用大于1000的话那么会自动转到老板那里,如果小于1000就直接进入财务处理子流程,老板审批的话有两种可能,一是同意进入财务处理子流程,二是不同意请求直接结束。
现在想增加一个功能,当员工填写了报销单到达 “部门主管审批” 这里,如果主管在 30分钟 内没有做出审批那么就直接跳转到 “申请人修改报销单” 这个任务节点上(当然实际中也不一定有这个功能,我是为了想说明问题才设定的这个流向)
在报销的processdefinition.xml 文件中我是这样设定的(去掉其他无关的只列出来了关于timer的相关设置)
<task-node name="部门主管审核"> <task name="主管审核"> <timer duedate="30 minutes" name="reminder" transition='need mod' > <script> System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++执行到这里了"); </script> </timer> <controller> <variable name="baoxiaoId" access="read" mapped-name="报销ID"> </variable> </controller> <assignment class="demo.workflow.assignment.ManagerAssignment"> </assignment> </task> <transition name="need mod" to="申请人修改报销单"></transition> <transition name="to result" to="判断走向"></transition> </task-node>
在web.xml文件中设置了
<!--JbpmThreadsServlet --> <servlet> <servlet-name>JbpmThreadsServlet</servlet-name> <servlet-class>org.jbpm.web.JbpmThreadsServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JbpmThreadsServlet</servlet-name> <url-pattern>/threads</url-pattern> </servlet-mapping>
设置好了以后运行的时候就出现 问题 了
当员工“ 张三 ”填写完报销单后,报销单就流转到了“部门主管审核”这个节点,如果部门主管在30分钟内不去审批的话就按照流程定义文件中的流向就走到了“申请人修改报销单”这个节点,可是这个时候 部门主管 的待审批任务中 还有 这个任务,同时这个任务在 “张三” 这个人的任务列表中出现了。就是一个报销单,现在同时出现在两个地方,“张三”需要重新填写,部门主管这里也可以看到这个公文。
我的问题: 是怎么才能 在超过规定时间的时候 报销单只在“申请人修改报销单”这个任务节点下出现。即部门主管这个时候就看不到这个报销单???????
希望 各位大虾能够给出解释! 我在这里先谢谢大家了!
----------------------------------------------------------------------------------------------------------------------------------
现在 问题已经解决
就是在 processdefinition.xml 配置文件中修改一下
<task-node name="部门主管审核"
end-tasks="true">
<task name="主管审核">
<timer duedate="100 seconds" name="reminder" transition='need mod' >
<script>
System.out.println("++++++++++++++++++++++++++++++++++++++执行到这里了");
</script>
</timer>
<controller>
<variable name="baoxiaoId" access="read" mapped-name="报销ID"></variable>
</controller>
<assignment
class="demo.workflow.assignment.ManagerAssignment">
</assignment>
</task>
<transition name="need mod" to="申请人修改报销单"></transition>
<transition name="to result" to="判断走向"></transition>
</task-node>
默认情况下 end-tasks="false" 意思是当离开节点的时候所有打开的任务将被关闭!
总结: 由于对jbpm不是很熟悉,所以才会碰到这样的问题。 下一步要好好研究一下。
谢谢大家的关注