通过 JAVA API 启动流程实例时 Camunda 中的数据持久性

Posted

技术标签:

【中文标题】通过 JAVA API 启动流程实例时 Camunda 中的数据持久性【英文标题】:Data Persistence in Camunda when starting a process Instance through JAVA API 【发布时间】:2015-06-08 13:44:53 【问题描述】:

在我正在编写的这段代码中,我可以通过 JAVA API 和 Camunda cockpit 启动流程实例。 除了数据持久性之外,这两种工作流程实际上没有区别。

当我在由 JAVA API 启动的流程实例上运行 HistoricProcessInstance 时,我在查询中没有得到任何结果。 但是,如果我使用 Camunda cockpit 启动流程实例,同样的查询会给出结果。

从 JAVA API 开始:

public String start process (some parameters...)
    Response jsonResult = target.path(serverPathREST).path(path).path(component).path("start")
                            .request(MediaType.APPLICATION_JSON_TYPE)
                            .post(Entity.entity(jsonBody, MediaType.APPLICATION_JSON));

在这里,我从服务器获得响应 200,并且流程实例也启动(在 Camunda 座舱中可见)。

我开始的另一种方式是通过输入相应参数直接通过 Camunda 座舱。 在我的流程图中,(在开始符号之后有一个服务任务:为了简单起见)这个服务任务有一个查询,它检索有关当前流程实例的信息。

问题是当进程通过 Camunda cockpit 启动时,这个查询从数据库中检索相应的行;但如果该过程是通过 JAVA API 启动的,则此查询检索空结果。我已经使用 asyncafter=true 来保持状态。

【问题讨论】:

不清楚您的要求。另外,请提供您的代码示例。谢谢! 谢谢,添加了更多细节。无法添加图片,因为我是新来的,需要至少 10 的声誉。 【参考方案1】:

解决了这个问题。通过 JAVA API 启动的流程实例总是会触发以前版本的流程实例。我必须编写一个不同的流程,以确保我每次都从最新版本开始一个流程。

【讨论】:

“编写不同的流程”是什么意思?如果你使用 startByProcessKey,它会默认使用最新版本... 这里有两种POST方法:(1). POST /process-definition/id/start (2)。 POST /process-definition/key/key/start(启动最新版本的流程定义)

以上是关于通过 JAVA API 启动流程实例时 Camunda 中的数据持久性的主要内容,如果未能解决你的问题,请参考以下文章

从 JAVA API 获取 Amazon EC2 实例的公共 DNS

如何使用Java在camunda流程引擎上获取扩展属性

Activiti 学习—— Activiti 流程启动并完成

第十篇Camunda系列-事件篇-消息事件

neutron 启动流程

第十篇Camunda系列-事件篇-消息事件