Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Alfresco 如何在Activiti 5.22.0中设置作业到期日?_Alfresco_Activiti_Bpmn_Alfresco Enterprise - Fatal编程技术网

Alfresco 如何在Activiti 5.22.0中设置作业到期日?

Alfresco 如何在Activiti 5.22.0中设置作业到期日?,alfresco,activiti,bpmn,alfresco-enterprise,Alfresco,Activiti,Bpmn,Alfresco Enterprise,我得到了对作业对象的引用,如下所示: Job timer = managementService.createJobQuery().processInstanceId(execution.getParentId()).singleResult(); 谁能告诉我如何将计时器的截止日期设置为任意值 Activiti 5.22.0中的日期或时间段 我在管理服务或工作课程中找不到合适的方法 致以最诚挚的问候。对我来说,我只有一种方法可以做到这一点: 创建一个新计时器并从旧计时器设置配置。 这是我如何做

我得到了对作业对象的引用,如下所示:

Job timer = managementService.createJobQuery().processInstanceId(execution.getParentId()).singleResult();
谁能告诉我如何将计时器的截止日期设置为任意值 Activiti 5.22.0中的日期或时间段

我在管理服务或工作课程中找不到合适的方法


致以最诚挚的问候。

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

    });
TimerEntity oldTimer=(TimerEntity)managementService.createJobQuery()
.processInstanceId(“您的\u进程\u实例\u ID”)
.计时器()
.singleResult();
commandExecutor.execute(新命令(){
@凌驾
public Void execute(CommandContext CommandContext){
delete();
TimerEntity newTimer=新的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());
//设定新日期
newTimer.setDuedate(newDate());
commandContext.getJobEntityManager().schedule(newTimer);
返回null;
}
});

运行时无法更改计时器,最好在流程定义中使用适当的ISO8601计时器间隔