1

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

有什么问题:

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

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

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

问题:

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

编辑:

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

编辑2:

我做了一个演示来说明异步任务挂起的问题。您可以通过键入以下内容来获取它:

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

关于演示:

我的工作流程看起来像:[主流程] => [异步子流程] => [返回主流程]

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

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

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

[预期结果]:

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

[实际结果]:

异步子进程继续其计算

4

1 回答 1

2

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" }

供参考:用户enter code here指南

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

挂起流程实例:

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

TO 激活流程实例

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

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

我希望它有所帮助。

于 2013-09-26T06:04:20.007 回答