工作流activiti中任务的过期时间

方式一:流程图中动态配置如下:

这样通过 taskService.setVariable 来传参实现每个环节的动态时间配置

taskService.setVariable

这样在工作流中ACT_RU_TASK表中DUE_DATE_字段就会有时间数据

方式二:直接写时间,如下:它不能直接写正常的时间日期,无法解析。这个格式相当于一天后延后三个小时,距离格式说明下面有介绍

格式解析

R2/2015-06-04T19:25:16.828696-07:00/P1DT10S

上面的字符串通过"/"分为了三部分即:

重复次数/开始时间/运行间隔

重复次数

  • R - 将永远重复
  • R1 - 将重复一次
  • R231 - 将重复231次。

开始时间

任务第一次运行的时间。如果开始日期时间已经过去,Kala将返回一个错误。

其中"T"用来分割日期和时间,时间后面跟着的"-07:00"表示西七区,注意"-"是连字符,不是减号。

时区默认是0时区,可以用"Z"表示,也可以不写。

对于我国,要使用"+08:00",表示东八区。
上面的字符串表示 2015年6月4日,19点25分16秒828696纳秒,西七区。

运行间隔

运行间隔以"P"开始,和上面一样也是用"T"分割日期和时间,如P1Y2M10DT2H30M15S

  • P 开始标记
  • 1Y - 一年
  • 2M - 两个月
  • 10D - 十天
  • T - 时间和日期分的割标记
  • 2H - 两个小时
  • 30M - 三十分钟
  • 15S 十五秒钟

例子,注意如果没有年月日,"T"也不能省略

  • P1DT1M - 一天一分钟执行一次
  • P1W - 一周执行一次
  • PT1H - 一小时执行一次
  • PT10S - 十秒执行一次

工作流会自动转换代码为Data类型时间格式,如果解析流程图需要格式转换可以用以下代码
 

private int findH(String dueDate){
		int h=0;
		try {
			javax.xml.datatype.Duration duration=javax.xml.datatype.DatatypeFactory.newInstance().newDuration(dueDate);
			h = duration.getHours();
		} catch (DatatypeConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return h;
	}

方式三:代码直接设置:

每个任务都有一个字段,指示该任务的截止日期。可使用Query API可用于查询在特定日期,之前或之后到期的任务。

(1)查询当前还没过期的任务

List<Task> listTask = taskService.createTaskQuery().taskDueAfter(new Date()).list();

(2)查询当前已过期的任务

List<Task> listTask = taskService.createTaskQuery().taskDueBefore(new Date()).list();

(3)查询某个时间点过期的的任务,例如2019-12-29 16:21:07

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

ParsePosition pos = new ParsePosition(0);

List<Task> listTask = taskService.createTaskQuery().taskDueDate(formatter.parse("2021-1-26 16:21:07", pos)).list();


(4)通过代码修改任务的过期时间

taskService.setDueDate("taskId",new Date());

方式四:通过TaskListener的DelegateTask来修改,监听器就不详细说明了。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值