我在我的应用程序中使用Activiti框架。 Activiti通过Activiti API进行管理。
出了什么问题:
我需要使用应用程序重启服务器。这意味着两件事:
目前我的应用程序已通过 System.exit(0)
停止的问题: 的
修改 的
的 EDIT2: 的
我做了一个演示,说明了异步任务挂起的问题。你可以输入:
来获得它git clone https://github.com/JOLO-/Activiti-Process-Suspend-Renew-Demo.git
关于演示:
我的工作流程看起来像:[Main Process] => [Asyncronous Subprocess] => [返回主流程]
每个异步进程都包含每秒打印一次的 infiniti loop ( AddCandidateService.java )。
你应该看看Main class。在那里,我做了下一件事:
[预期结果]:
所有流程&子进程停止计算
[实际结果]:
异步子进程继续进行计算
答案 0 :(得分:2)
Activiti framework
,因为您必须知道,运行和功能完全基于its database
,已配置。
因此,当您启动流程时,会创建流程实例并将其与当前task
或activitiy
以及其他相关信息一起存储在数据库中。即使您停止服务器并再次启动它,数据也将在数据库中可用。
如果你想暂停和续订活动,你可以这样做:
使用Activiti 5.13
列出商品
运行所有流程实例
GET runtime/process-instances
,它将列出所有流程实例
暂停实例
PUT runtime/process-instances/{processInstanceId}
请求正文是:
{
"action":"suspend"
}
续订实例或激活流程实例
PUT runtime/process-instances/{processInstanceId}
{
"action":"activate"
}
您也可以在嵌入式中使用,如下所示:
暂停流程实例:
RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.suspendProcessInstanceById(processInstanceid)
TO激活流程实例
RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.activateProcessInstanceById(processInstanceid)
我不太确定processEngine.close()
方法,但如果您不打算使用,我认为它就像closing the connection
。我从来没有在我的应用程序中尝试或使用它。
我希望它有所帮助。