在暂停状态下启动camunda进程

时间:2017-01-30 12:04:34

标签: java camunda

在数据导入任务期间,我需要在某些“暂停”或暂停状态下启动多个camunda流程实例。该过程有一些定时器,定时器的值可以是过去的。因此,如果我正常启动这样的过程,它将立即开始执行某些任务,但我想以某种方式推迟执行(因为任务正在使用一些尚未导入的数据)。 所以,我想要这样的行为:

1)以某种方式暂停camunda引擎,作业执行者或流程定义。

2)导入所有必需的数据,同时启动所有必需的流程

3)取消暂停camunda,让它运行并执行先前启动的进程。

我尝试过以下解决方案:

1)从Cockpit全局暂停流程定义。但是当我启动该过程时,它会抛出except,关于supspended进程定义。 我使用以下代码开始处理:

runtimeService.createProcessInstanceByKey("process-key")
            .businessKey("some-business-key")
            .setVariables(vars)
            .startBeforeActivity("xxx")
            .execute();

2)使用相同的代码启动进程,并在同一个tx中暂停进程实例 runtimeService.suspendProcessInstanceById(processInstance.getProcessInstanceId()); 但是我得到了一些例外和事件。

3)在配置文件中全局禁用camunda作业执行程序。工作正常,但不是很方便每次修改配置和重启服务器。

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:3)

找到一种在运行时控制作业执行者的方法。

    JobExecutor jobExecutor = ((ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration()).getJobExecutor();
    if (jobExecutor.isActive()) {
        jobExecutor.shutdown();
    } else {
        jobExecutor.start();
    }