jbpm 时间调度(timer)问题

jbpm时间调度问题,公司有一个需求就是关于时间调度的问题,借用下面的流程实例来说明,

 jbpm timer 调度demo

 

 

     上面的流程图是一个公司报销流程。普通员工可以填写报销单,然后提交主管审批;主管审批可以有三种可能:一是主管可以驳回请求,那么报销人需要重填报销单,或者取消报销操作;二是主管不同意请求,请求直接结束;三是主管同意请求,那又存在两种情况,一是如果报销总费用大于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不是很熟悉,所以才会碰到这样的问题。 下一步要好好研究一下。

 

谢谢大家的关注

 

 

你可能感兴趣的:(xml,workflow,servlet,jbpm,Access)