codecamp

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,不然任务虽然完成了,但任务提醒还会继续运行。
5.5.任务到达提醒
5.7.流程与业务的结合
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }