jbpm 时间调度(timer)问题

系统 1699 0

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不是很熟悉,所以才会碰到这样的问题。 下一步要好好研究一下。

 

谢谢大家的关注

 

 

jbpm 时间调度(timer)问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论