jBPM jPDL 用户开发手册 3.2.3 - 第16章

16 商务日历

本章描述了jBPM的商务日历。商务日历知道关于业务小时和用于任务和定时器的到期的计算。

商务日历能够通过在基准日期(base datea)上加或减去一个持续时间(duration to)来计算到期日期。如果基准日期被忽略,那么会使用当前('current')日期。

16.1. 到期日期

正像提到的那样,到期日期是由持续时间(duration)和基准日期(base date)。如果这个基准日期被忽略,持续时间是相对于计算到期日期时的那个日期(时间)。格式是:

duedate ::= [<basedate> +/-] <duration>

16.1.1. 持续时间

持续时间被指定用绝对时(absolute)或工作时(business)。让我们看下语法:

A duration is specified in absolute or in business hours. Let's look at the syntax:

duration ::= <quantity> [business] <unit>

里面的 <quantity> 是一个可以使用Double.parseDouble(quantity)来解析的文本。<unit> {second, seconds, minute, minutes, hour, hours, day, days, week, weeks, month, months, year, years}中的一个。然后增加一个可选的指示business意味着只有工作时才能被放入持续时间的数量中。如果没有指示business,持续时间将作为一个绝对的时间周期来进行解释。

16.1.2. 基准日期

持续时间(duration)被指定绝对(absolute)时或工作(business)时。让我们看下语法:

basedate ::= <EL> +/-

其中的<EL>是任何的JAVA表达式语言表达式,可以解析成一个JAVA DateCalendar对象。引用其他的对象类型变量,即使一个日期格式的String类型的变量(如'2036-02-12'),也会抛出一个JbpmException异常。

注意:这个基准日期(basedate)支持一个普通定时器、任务上提醒和任务内部定时器的duedate属性。但绝不支持这些元素内部的repeate属性。

16.1.3. 示例

下列是所有可能用法的例子:

<timer name="daysBeforeHoliday" duedate="5 business days">...</timer>

 

<timer name="pensionDate" duedate="#{dateOfBirth} + 65 years" >...</timer>

 

<timer name="pensionReminder" duedate="#{dateOfPension} - 1 year" >...</timer>

 

<timer name="fireWorks" duedate="#{chineseNewYear} repeat="1 year" >...</timer>

 

<reminder name="hitBoss" duedate="#{payRaiseDay} + 3 days" repeat="1 week" />

16.2. 日历配置

目录org/jbpm/calendar下的jbpm.business.calendar.properties文件指定了哪些是工作时。配置文件可以定制而且修改过的复本能够放置在类路径的根下。

这是在jbpm.business.calendar.properties文件中的一个发货的工作时清单的例子:

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.tuesday=   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

weekday.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

你可能感兴趣的:(工作,jbpm)