jbpm4之Business Calendar使用

JBPM4工作流引挚中,定时器是个很见的应用,例如<timer name="daysBeforeHoliday" duedate="5 business days">...</timer>,timer元素的duedate与repeat属性值其实就是个Business Calendar的使用。

在JBPM4的配置文件jbpm.cfg.xml中有一句<import resource="jbpm.businesscalendar.cfg.xml" />,jbpm.businesscalendar.cfg.xml就是JBPM4缺省的Business Calendar配置,该文件在jbpm.jar中,如果其中的配置不符合我们的应用要求就可以在jbpm.cfg.xml中覆盖该缺省配置,将配置写入jbpm.cfg.xml中。如下:

<process-engine-context>
  
    <business-calendar>
      <monday    hours="9:00-12:00 and 12:30-17:00"/>
      <tuesday   hours="9:00-12:00 and 12:30-17:00"/>
      <wednesday hours="9:00-12:00 and 12:30-17:00"/>
      <thursday  hours="9:00-12:00 and 12:30-17:00"/>
      <friday    hours="9:00-12:00 and 12:30-17:00"/>
      <holiday period="01/07/2008 - 31/08/2008"/>
    </business-calendar>

  </process-engine-context>


需要注意的是该段配置只是说明了星期一到星期五哪几个小时属于Business Calendar范围,而定时器到底什么时候触发是由BussinessClendarImpl这个类决定的,其算法都是在这个类中,而jbpm.businesscalendar.cfg.xml文件则只是提供了一些配置参数,让BussinessClendarImpl类知道什么时间属于business-calendar范围。

如果你对BussinessClendarImpl这个类的算法都不满意的话还可以自己写一个类替换提这个缺省实现,这个类必须实现BussinessClendar接口,然后在jbpm.cfg.xml文件中作如下配置:

<process-engine-context>
    <object class="com.xtayfjpk.test.custombusinesscalendarimpl.CustomBusinessCalendar" />
</process-engine-context>

这样配置后,jbpm.businesscalendar.cfg.xml配置文件和BussinessClendarImpl都将失去作用,定时器具体触发时间都由自定义BusinessCalendar实现。当然当不满足要求时继承自缺省的BussinessClendarImpl类应该是个很好的选择。

你可能感兴趣的:(jbpm4)