1

我得到了一个对 Job 对象的引用,如下所示:

Job timer = managementService.createJobQuery().processInstanceId(execution.getParentId()).singleResult();

谁能告诉我如何在 Activiti 5.22.0 中将计时器到期日期设置为任意日期或时间段?

我在 ManagementService 或 Job 类中找不到合适的方法。

此致。

4

1 回答 1

1

对我来说,我发现只有一种方法可以做到这一点:
创建一个新计时器并从旧计时器设置配置。
这是我如何做到这一点的一个例子,不要忘记修复它,以避免 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;
        }

    });
于 2020-01-31T12:25:39.507 回答