【问题标题】:Correct way to restart application with Activiti workflow使用 Activiti 工作流程重新启动应用程序的正确方法
【发布时间】:2013-09-25 13:52:21
【问题描述】:

我在我的应用程序中使用 Activiti 框架。 Activiti 通过 Activiti API 进行管理。

什么问题:

我需要使用应用程序重新启动服务器。这意味着两件事:

  1. 我需要正确暂停/停止所有活动的活动
  2. 我需要正确更新所有停止的活动

目前我的应用程序通过 System.exit(0)

停止

问题:

  1. 我该怎么做? (指以上两项)
  2. System.exit(0) 会遇到什么问题?

编辑:

  1. 是的,谢谢。但我使用嵌入式 Activiti。这些适用于嵌入式还是仅适用于独立(通过 REST)?
  2. 异步任务呢?
  3. 我看到了 ProcessEngine .close 函数。它是干什么用的?我需要吗?

EDIT2:

我做了一个演示来说明异步任务挂起的问题。你可以通过输入得到它:

git clone https://github.com/JOLO-/Activiti-Process-Suspend-Renew-Demo.git

关于演示:

我的工作流程如下:[主流程] => [异步子流程] => [返回主流程]

每个异步进程都包含无限循环,每秒打印一些内容(AddCandidateService.java)。

你应该看看 Main 类。接下来我要做的事情:

  1. 启动两个主要进程
  2. 对于每个主进程,我启动一个异步子进程(无限循环)
  3. 暂停所有活动进程

[预期结果]:

所有进程和子进程停止计算

[实际结果]:

异步子进程继续其计算

【问题讨论】:

  • 这个问题还没有结束。请回答问题的 EDIT2 部分

标签: activiti bpmn


【解决方案1】:

Activiti framework,正如您必须知道的那样,仅基于配置的its database 运行和运行。

因此,当您启动流程时,会创建一个流程实例并将其与当前的taskactivitiy 以及其他相关信息一起存储在数据库中。即使您停止服务器并重新启动它,数据也将在数据库中可用。

如果您想暂停和更新活动,那么您可以执行以下操作:

使用Activiti 5.13

列表项

让所有流程实例运行

GET runtime/process-instances,它将列出所有流程实例

暂停实例

PUT runtime/process-instances/{processInstanceId}

请求正文是: { "action":"suspend" }

更新实例或激活流程实例

PUT runtime/process-instances/{processInstanceId}

{ "action":"activate" }

供参考:usenter code hereer guide

您也可以在嵌入式中使用,如下所示:

暂停流程实例:

RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.suspendProcessInstanceById(processInstanceid)

激活流程实例

RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.activateProcessInstanceById(processInstanceid)

我不太确定processEngine.close() 方法,但我认为它就像closing the connection 如果你不打算使用的话。我从未在我的应用程序中尝试或使用过它。

希望对你有帮助。

【讨论】:

  • 谢谢!请参阅我的问题的编辑部分
  • 不,我没有。 Bvut 我今天要使用它。谢谢
  • 除异步任务外,一切正常。他们在暂停后继续执行
  • 查看我的问题的 EDIT2 部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多