`
flashdream8
  • 浏览: 675565 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 

谢谢大家的关注

 

 

分享到:
评论
1 楼 flashdream8 2009-02-06  
问题 已经解决

相关推荐

    JBPM3.2与Spring结合时任务调度的实现.doc

    在3.1.x版本中,是通过`jbpm_timer`表来存储定时任务,而在3.2版本中,这个表被`jbpm_job`表所取代。这意味着后台线程会持续检查`jbpm_job`表,当发现需要触发的任务时,会根据任务的属性进行定时或循环执行。 在...

    JBPM4 java源代码分包详解JBPM4

    14. **org.jbpm.pvm.internal.jobexecutor**: 提供任务执行器,包括`JobExecutorServlet`、线程池及各种命令和处理器,负责调度和执行job、message和timer。 15. **org.jbpm.pvm.internal.lob**: 处理流程发布时的...

    jbpm-7.3.0.Final-bin 工作流

    5. **ejb服务与定时器**:jbpm-services-ejb-timer-7.3.0.Final.jar和jbpm-services-ejb-client-7.3.0.Final.jar提供了基于EJB的定时服务和客户端接口,使得jBPM能够集成到Java EE环境中,实现定时触发流程事件或...

    jbpm数据库脚本

    7. **Job and Timer Tables**(作业和定时器表):用于调度和管理异步任务和定时触发的流程事件。 使用这些脚本时,开发者通常会根据自己的数据库环境(如MySQL、Oracle、PostgreSQL等)进行适当的调整,确保兼容性...

    jbpm 工作流引擎

    - **流程建模语言**:jBPM 提供了一套直观的流程建模语言,能够以图形化的方式表示业务流程,包括但不限于任务(task)、异步通信的等待状态(wait state)、定时器(timer)以及自动化动作(automated action)等元素。...

    JBPM开发指南WORD文档

    JBPM的`Scheduler`功能允许用户基于时间和日期对流程执行进行计划和控制,无论是C/S架构还是Web应用,都能够灵活地利用`Scheduler`功能来满足不同场景的需求。 #### 七、异步执行与流程建模 JBPM支持异步执行模式...

    JBPM 开发指南

    **日历功能** 是 JBPM 提供的一项高级特性,它允许用户为流程中的事件安排特定的时间: - **C/S 程序上的应用**: 在客户端/服务器架构中使用日历来调度任务。 - **Web 上的应用**: 在 Web 应用中使用日历来管理任务...

    JBPM4.3编程指南

    - **服务**:描述了流程虚拟机提供的各类服务功能,如调度服务、监控服务等。 #### 5. 实现基本活动 - **ActivityBehaviour**:介绍了实现自定义活动行为的方法和技术细节。 - **ExternalActivityBehaviour**:...

    jbpm4.4工作流开发指南pdf

    - 时间分类:定义不同的时间策略用于调度任务。 #### 七、异步执行 - **异步执行**:允许某些流程步骤异步执行,提高系统的响应性和效率。 #### 八、JBPM 流程建模与应用 - **建模工具**:使用图形界面工具来设计...

    深入浅出jBPM完整版part1

    任务调度............................................133 5.1 原理.........................................................133 5.2 业务日历.................................................134 5.3 Timer....

    spring整合JPBM3.2

    在3.1.x中,任务调度通过后台线程监控`jbpm_timer`表,当发现需要触发的定时器时,会根据定时器的属性进行触发。而在3.2中,`jbpm_timer`表被`jbpm_job`表取代,后台线程会持续检查这个新表。 3.1.x版本的`...

    深入浅出jBPM完整版part2

    任务调度............................................133 5.1 原理.........................................................133 5.2 业务日历.................................................134 5.3 Timer....

    原创-java岗位技能与职业规划

    - **调度**: Quartz,Java Timer Scheduler,Spring Scheduler。 - **连接池**: dbcp,c3p0等。 - **规则引擎**: jBoss Rules。 - **搜索引擎**: Lucene等。 - **商业智能**: Oracle BIEE,微软,IBM的BI解决...

Global site tag (gtag.js) - Google Analytics