这次就说说jBPM的业务日历。
业务日历是关于业务时间的,并且被用于为任务和定时器计算预期的时间。 业务日历能够通过对一个期限和日期进行增加来计算日期。
这是官方的定义,现在看不明白没关系,我会慢慢解释。我们先看看业务日历的语法:
xml 代码
- <quantity>[business]<unit>
<quantity></quantity><unit></unit>
<quantity></quantity>是一个文本块,它是可以使用Double.parseDouble(quantity)所解析的,也就是说是一个数字;<unit></unit>是{second,seconds,minute,minutes,hour,hours,day,days,week,weeks,month,months,year,years}之一;加上可选的business指示,意味着对于这个期限只有业务时间才应被考虑,如果没有business指示,期限将作为一个绝对的时间段被解释。也就是说加了business的按业务时间算,没加的按绝对时间算。
什么叫业务时间,什么叫绝对时间?我就用jbpm的例子说明。文件org/jbpm/calendar/jbpm.business.calendar.properties指定了什么是业务时间,该配置文件可以被定制并且修改后的拷贝可被放在classpath根。 下面是业务时间规范的例子,它在jbpm.business.calendar.properties中被默认配置。
xml 代码
- hour.format=HH:mm
- #weekday ::= [<daypart> [& <daypart>]*]
- #daypart ::= <start-hour>-<to-hour>
- #start-hour and to-hour must be in the hour.format
- #dayparts have to be ordered
- weekday.monday= 9:00-12:00 & 12:30-17:00
- weekday.thuesday= 9:00-12:00 & 12:30-17:00
- weekday.wednesday= 9:00-12:00 & 12:30-17:00
- weekday.thursday= 9:00-12:00 & 12:30-17:00
- weekday.friday= 9:00-12:00 & 12:30-17:00
- weekdayweekday.saturday=
- weekday.sunday=
-
- day.format=dd/MM/yyyy
- # holiday syntax: <holiday>
- # holiday period syntax: <start-day>-<end-day>
- # below are the belgian official holidays
- holiday.1= 01/01/2005 # nieuwjaar
- holiday.2= 27/3/2005 # pasen
- holiday.3= 28/3/2005 # paasmaandag
- holiday.4= 1/5/2005 # feest van de arbeid
- holiday.5= 5/5/2005 # hemelvaart
- holiday.6= 15/5/2005 # pinksteren
- holiday.7= 16/5/2005 # pinkstermaandag
- holiday.8= 21/7/2005 # my birthday
- holiday.9= 15/8/2005 # moederkesdag
- holiday.10= 1/11/2005 # allerheiligen
- holiday.11= 11/11/2005 # wapenstilstand
- holiday.12= 25/12/2005 # kerstmis
-
-
- business.day.expressed.in.hours = 8
- business.week.expressed.in.hours= 40
- business.month.expressed.in.business.days= 21
- business.year.expressed.in.business.days = 220
-
对于上面定义通俗的理解就是它归定了从星期一到星期五的9:00-12:00 & 12:30-17:00 这段时间为上班时间也就是业务时间,星期六和星期日没有定义也就是放假的时间,再往下就是定义了12个节假日,最后是一些工作时长的统计如一天8小时,一个星期40小时等。
从官方定义至少可以看出jbpm要与定时器结合使用,下面我们定义一个定时器:
xml 代码
- <state name='catch crooks'>
- <timer name='reminder' duedate='3 business day'
- repeat='2 business day'
- transition='time-out-transition' >
- <action class='the-remainder-action-class-name' />
- timer>
- <state>
这里的定时器(timer)的名字是reminder,它的duedate定义的是3 business day,repeat定义的是2 business day也就是说从定时器启动开始在3个业务日的时间后每隔两个业务日执行一次action的方法,直到timer结束。现在就可以来区别业务时间和绝对时间了,假设我是在星期五的早上10点启动了这个timer,那它第一次执行action的方法是在什么时候呢?因为这里的定义是有加上business的所以要结束工作日历的定义来算了。工作日历中定义了星期六和星期天是不上班的(没有定义),所以在计算时间时就跳过,要到星期三到早上10点(这时只是执行完duedate的时间也就是第一次触发action的时间),到星期五早上10点第二次触发action,到下个星期二早上第二次触发action(因为星期六和星期日没定义不是业务时间),以此类推。如果在timer定义时没有加上business的话,就以绝对时间进行计算,也就是在星期一的10点第一次触发action,到星期三10点第二次触发action,以此类推。
|
相关推荐
通过业务日历,jBPM可以更好地适应实际的业务环境,确保流程的执行符合现实世界的日期和时间规定。 三、流程建模 流程建模是jBPM的核心功能之一,它允许用户通过图形化界面设计和管理业务流程。jBPM提供了一个名为...
JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1. **org.jbpm.pvm.internal.ant**...
- **业务日历配置文件**:定义业务日历的具体规则。 - **变量映射配置文件**:定义流程变量如何映射到实际的数据存储。 - **转换器配置文件**:用于配置数据转换器,以便在不同的数据格式之间进行转换。 - **默认...
### 深入浅出jBPM:任务调度与业务日历详解 #### 一、jBPM任务调度概述 jBPM是一个开源的工作流引擎,用于自动化业务流程的管理和执行。本文主要聚焦于jBPM的任务调度服务,探讨其工作原理、实现方式以及如何在...
配置方面,除了基本的配置工厂和属性设置外,还需要关注Hibernate配置、节点类型、动作类型、业务日历、变量映射、转换器、模型和流程包解析等配置文件,以及在JBoss中的日志配置,确保JBPM能够在特定的环境中正确...
jBPM 4.4是一款开源的业务流程管理系统(Business Process Management System, BPM),它基于Java语言开发,旨在帮助开发者构建灵活、可扩展的业务流程应用。本书将详细介绍jBPM 4.4的核心概念、架构设计以及如何使用...
- **功能概述**:此包处理与时间相关的逻辑,特别是与业务日历相关的功能。 - **`BusinessCalendar`类**:此类负责读取配置文件`jbpm.business.calendar.properties`,并根据其中定义的规则处理日期和时间。例如,它...
- 解释了如何配置业务日历来适应特定的工作时间安排。 - 业务日历对于确定流程的执行时间非常重要。 - **9.2 邮件配置** - 介绍了如何配置jBPM4发送邮件的相关设置。 - 包括SMTP服务器、邮件格式等。 以上是...
jBPM(Java Business Process Model)是一个开源的业务流程管理(BPM)框架,由JBoss提供支持,用于构建、管理和执行业务流程。这份用户指南不仅适用于新手,也对有经验的开发者提供了深入的技术细节。 ### 重要...
jBPM是一个开源的工作流程管理系统,它提供了完整的业务流程自动化解决方案,包括流程设计、执行、监控和管理。以下是该指南中的关键知识点: 1. **目标读者**:此指南面向熟悉Java编程,对工作流管理有基本了解,...
- **getInstance()**:获取业务日历实例。 - **findStartOfNextDay()**:查找下一个工作日的开始时间。 - **createCalendar()**:创建新的业务日历。 - **findDay(Date date)**:根据日期查找对应的工作日。 - **...
添加一个名为jbpm.cfg.xml的文件,它导入了jbpm默认的配置文件以及与业务日历、事务管理、JPDL、BPMN和身份管理相关的配置。同时,需要修改hibernate.cfg.xml文件,以包含JBPM工作流的映射文件,比如jbpm.repository...
业务日历功能使得定时器能够根据特定的业务规则来确定实际的触发时间。例如,在节假日或非工作时间不触发定时器。 ##### 2.1.3 定时器过渡 定时器过渡是指当定时器触发时执行的流程路径。这对于控制流程的流转至关...
### jBPM4开发说明文档知识点汇总 #### 一、jBPM简介与背景 - **jBPM**(Java Business Process Management)是一款基于J2EE的轻量级工作流管理系统,采用Apache License开源许可发布。 - **发展历程**:2004年10...
- **2.1.2 业务日历**:根据工作日和非工作日来调整定时器的触发时间。 - **2.1.3 定时器转换**:定义定时器触发后的流程步骤。 - **2.1.4 定时事件**:在特定时间触发的事件。 - **2.1.5 定时业务时间**:根据业务...
- 通过ActivityBehaviour和ExternalActivityBehaviour的实例,介绍了如何定制和扩展jBPM的活动行为,以适应特定业务需求。 ### 七、流程剖析与高级图形执行 - 对流程执行的各个层面进行了剖析,从循环、默认执行...
JBPM的日历(Scheduler)功能使得流程能够按照预设的时间表执行,无论是单次定时任务还是周期性任务,都可以通过日历来实现精确控制。 ### 6.1 Scheduler在C/S程序上的应用 在客户端/服务器(C/S)架构的程序中,...
这些文件通常包含jbPM的默认配置、业务日历配置、事务管理配置、BPMN配置、身份管理配置等。例如: `jbpm.cfg.xml`是jbPM的主要配置文件,它通过`<import>`标签引入其他配置文件。 `jbpm.hibernate.cfg.xml`包含了...