如何获取activiti中的活动进程列表?

时间:2016-11-28 12:13:30

标签: java activiti

我正在处理简单的活动过程,我需要以某种方式检查当前进程是否已经运行。我的想法是使用这样的代码:

final class SecondClass: SuggestionSource {
    static let suggestions: [String: [SuggestionQuery]] = {
         // ...
    }()

    // ...
    func suggest(_ query: SuggestionQuery, callback: @escaping SuggestionSourceCallback) {
        // ...
        callback(self.suggestions[query])
    }
}

所以我只是在一个java方法中获取runtimeService,该方法由activiti BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS进程执行,并使用definitionKey(进程的id)添加过滤器并检查计数。  我发现.createExecutionQuery()总是返回空列表。例如,此类代码也将返回空列表:

activitiInitEngineBean.getRuntimeService()
                                 .createExecutionQuery()
                                 .processDefinitionKey(BPConstants.PROCESS_ID_D1_ASSEMBLY_PROCESS)
                                 .count() > 1;

它没有预期,因为我在一个进程内调用它(所以它应该返回至少1次执行)。  我应该配置什么才能使用runtimeService?

2 个答案:

答案 0 :(得分:1)

在达到等待状态之前,您的更新不会存储到数据库中(请参阅Transactions and Concurrency)。如果要从查询中获取流程实例,则运行流程实例必须达到第一个等待状态。实际上,您不需要创建查询来执行,因为执行已经存在,例如script task variables或作为接口方法的参数。

答案 1 :(得分:0)

默认情况下,当使用<时,activiti不会将任何内容存储到 ru 表中。 serviceTask>标签。解决方案是添加异步属性:

<serviceTask activiti:async="true"