当前位置: 首页 > 知识库问答 >
问题:

使用Activiti工作流重新启动应用程序的正确方法

华衡
2023-03-14

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

真是个问题:

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

  1. 我需要正确暂停/停止所有活动

目前,我的应用程序已通过系统停止。退出(0)

问题:

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

编辑:

  1. 是的,谢谢。但我使用嵌入式Activiti。这些适用于嵌入式还是仅适用于单机版(通过REST)

编辑2:

我制作了一个演示,演示了异步任务挂起的问题。您可以键入以下内容:

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

关于演示:

I工作流看起来像:[主流程]=

每个异步进程都包含每秒打印内容的infiniti循环(AddCandidateService.java)。

你应该看看Main class。接下来我要做的是:

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

[预期结果]:

所有流程

【实际结果】:

异步子进程继续其计算

共有1个答案

廉宇
2023-03-14

Activiti框架,正如您必须知道的那样,仅基于其配置的数据库运行和运行。

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

不过,如果您想暂停和续订活动,则可以执行以下操作:

使用Activiti 5.13

列表项

运行所有流程实例

GET运行时/进程实例,它将列出所有进程实例

挂起实例

PUT runtime/process instances/{processInstanceId}

请求正文是:{“action”:“suspend”}

续订实例或激活流程实例

PUT runtime/process instances/{processInstanceId}

{“action”:“activate”}

参考:us在此处输入代码

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

要挂起流程实例:

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

激活流程实例

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

我不太确定processEngine。close()方法,但我认为如果您不打算使用,这就像关闭连接一样。我从未在我的应用程序中尝试或使用过。

我希望这有帮助。

 类似资料:
  • 我有一个流应用程序,具有以下驱动程序代码,用于实时消息转换。 执行几分钟后,应用会引发以下异常,然后不会在流中前进。 我试图清除目录并重新启动应用程序,但再次抛出相同的异常。我注意到的一件事是,该应用程序在转换所有积压消息之前工作正常,但在处理一些新消息后引发异常! 有时它也会抛出下面未被捕获的异常。 引发这些异常(其中一个)后,应用仍在运行,但未在流中前进。 处理这些错误的正确方法是什么?。是否

  • 我已经使用eclipse的Service任务等创建了一个Activit Process,并将. bar部署到在tomcat上运行的Activiti。它已成功部署,我可以使用Activit-Explorer启动我的进程,没有任何问题。部署的进程名称是“我的进程”,它列在进程下- 但我有两个问题。 我需要使用REST调用启动进程。(即不使用Activiti explorer)。它的URL是什么?我尝试

  • 我有一个quarkus应用程序,当我用下面的命令构建应用程序时,进程第一次开始完美地编译quarkus:dev-DskipTests=true 成功启动的日志: 但是当我停下来重新开始这个过程时,过程并没有开始... 启动失败的日志: 当我尝试重新启动机器,然后启动quarkus服务时,它会再次工作。 pom。xml: 如果有人遇到过类似的行为,请告诉我,这可能是什么根源。

  • 我正在使用activiti 6为我们的一个项目设计业务流程。这个过程非常简单,它由“用户任务”或“服务任务”的数量以及基于角色的分配组成。然而,我们的客户希望管理员用户能够在任何时间点重新运行之前的任何“用户任务”或“服务任务”。 例如,以下是我的流程: 开始- 客户端希望在流程执行期间的任何时间点,管理员用户都应该能够将工作流执行从:例如状态“User-Task8”更改为Service-Task

  • 问题内容: 我愿意在应用程序中添加一个按钮,单击该按钮将重新启动该应用程序。我搜索谷歌,但没有发现任何有用的,除了这一个。但是,此处遵循的过程违反了Java的WORA概念。 是否有其他以Java为中心的方法来实现此功能?是否可以只派生另一个副本然后退出? 提前致谢。我感谢您的帮助。 @deporter我已经尝试过您的解决方案,但是它不起作用:( @mKorbel我写的,采取的概念下面的代码,你曾在

  • 我想使用alfresco activiti work flow和spring MVC实现联谊概念。 团契工作流概念 第一步:学生将提交奖学金申请。 第二步:导师1和导师2批准/拒绝奖学金申请 第3步:如果supervisor1和supervisor2都已批准,则表格将转到admin 对于上述流程,我创建了两个表 现在使用spring应用程序,我像下面这样做。 1)提交研究金表格后,在表格中插入一条