我得到了一个对 Job 对象的引用,如下所示:
Job timer = managementService.createJobQuery().processInstanceId(execution.getParentId()).singleResult();
谁能告诉我如何在 Activiti 5.22.0 中将计时器到期日期设置为任意日期或时间段?
我在 ManagementService 或 Job 类中找不到合适的方法。
此致。
我得到了一个对 Job 对象的引用,如下所示:
Job timer = managementService.createJobQuery().processInstanceId(execution.getParentId()).singleResult();
谁能告诉我如何在 Activiti 5.22.0 中将计时器到期日期设置为任意日期或时间段?
我在 ManagementService 或 Job 类中找不到合适的方法。
此致。
对我来说,我发现只有一种方法可以做到这一点:
创建一个新计时器并从旧计时器设置配置。
这是我如何做到这一点的一个例子,不要忘记修复它,以避免 NPE
TimerEntity oldTimer = (TimerEntity) managementService.createJobQuery()
.processInstanceId("YOUR_PROCESS_INSTANCE_ID")
.timers()
.singleResult();
commandExecutor.execute(new Command<Void>() {
@Override
public Void execute(CommandContext commandContext) {
oldTimer.delete();
TimerEntity newTimer = new TimerEntity();
newTimer.setJobHandlerConfiguration(oldTimer.getJobHandlerConfiguration());
newTimer.setJobHandlerType(oldTimer.getJobHandlerType());
newTimer.setExclusive(oldTimer.isExclusive());
newTimer.setRepeat(oldTimer.getRepeat());
newTimer.setRetries(oldTimer.getRetries());
newTimer.setEndDate(oldTimer.getEndDate());
newTimer.setExecutionId(oldTimer.getExecutionId());
newTimer.setProcessInstanceId(oldTimer.getProcessInstanceId());
newTimer.setProcessDefinitionId(oldTimer.getProcessDefinitionId());
newTimer.setTenantId(oldTimer.getTenantId());
// Sets a new date
newTimer.setDuedate(new Date());
commandContext.getJobEntityManager().schedule(newTimer);
return null;
}
});