5.6.任务过期处理
任务过期处理与任务到达提醒类似,唯一不同的地方是任务过期后,除了可以发送消息外,还允许用户自定义其它类型的动作,关于任务过期之后发送消息,这里就不描述了,因为和任务提醒发消息是一样的,我们着重来看看过期后如何进行动作的自定义。如下图所示:
可以看到系统提供了默认自定义处理器只有一个,从其bean的id定义来看,这个bean对任务过期不作任何操作,所以我们必须要自己定义,自己定义的方法就是实现ITaskOverdueProcessor接口,该接口源码如下:
ITaskOverdueProcessor接口源码
package com.bstek.bdf2.jbpm4.job; /** * @author Jacky.gao * @since 2013-4-26 */ public interface ITaskOverdueProcessor { void process(String taskId); }
接口只有一个方法,非常简单,只有一个任务id的参数,实现好接口后,我们需要做的就是将实现类配置到spring当中即可(BDF2中几乎所有的接口实现类都是通过配置到spring当中,利用spring的类发现机制实现),这样在界面中自定义处理器中就可以看到我们自定义的处理器的bean的id。
默认情况下,系统对任务过期天数的计算是以自然日为基础的,如果您需要除去节假日或其它一些日期,那么你可以实现ICalculateOverdueTaskReminder接口,自己决定当前任务是否过期,这个接口的源码如下:
ICalculateOverdueTaskReminder接口源码
package com.bstek.bdf2.jbpm4.job.reminder; import java.util.Date; /** * @author Jacky.gao * @since 2013-4-26 */ public interface ICalculateOverdueTaskReminder { /** * 根据业务环境计算当前日期下是否执行任务过期提供动作 * @param overdueDays 任务过期天数 * @param createDate 任务的创建日期 * @return 返回true表示执行任务过期提供动作,false表示不执行 */ boolean calculateOverdue(int overdueDays,Date createDate); }
接口的实现类编写完成之后,同样需要将其配置到Spring环境当中。
同样,一旦我们配置了任务过期消息提醒功能(非自定义处理器方式),那么在完成任务时,我们一定要记得调用IBpmService接口中的cancelTaskReminder,不然任务虽然完成了,但任务提醒还会继续运行。