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

Activii工作流长期运行任务

柳俊彦
2023-03-14

我使用的是Activti版本6.0.0。

我想同步执行活动中的任务,但我有一个长时间运行的任务,可能需要20分钟来执行。我想在我的控制器中快速获得过程实例ID,而不考虑在bpmn中完成任务,所以我在bpmn文件中添加了一个中间计时器事件“0分钟”。

我已经开始执行一个进程,比如说processInstanceid p1。当时只有我再次启动这个进程,比如说使用processInstanceid p2。现在,这两个进程都到达了任务,等待事件为20分钟(我使用了while循环)。现在,根据流程,两个流程都应该一直到结束任务并完成它们的执行,但是没有一个流程完成它的执行并从第一个任务到结束任务多次运行。

如何从开始任务到结束任务独立、视差地运行多个进程(其中一个任务的代码执行时间较长)

共有1个答案

申屠宏胜
2023-03-14

您的任务可能正在超时,重试逻辑正在启动,从而导致多次运行。最终,在重试3次后,实例将失败。坦率地说,同步执行长时间运行的任务可能会导致实际问题,特别是在负载很容易超过可用线程、内存或其他资源的情况下。您最好使用异步模型,如Camunda在这里很好地记录的:https://github.com/camunda/camunda-bpm-examples/tree/master/servicetask/service-invocation-asynchronous

我已经成功地将这个模式用于所有的Activiti变体,它工作得很好。

 类似资料:
  • 对于长时间运行的活动,我们可以使用心跳来通知活动是正在运行还是已死。 我们有一个工作流,该工作流调用多个子工作流,其中包含一些基于父工作流生成的分组的参数。子工作流是长时间运行的工作流。 有没有办法让类似的检测信号从子工作流发送,因为这些工作流长时间运行,超时设置为几个小时?或者更确切地说,通知子工作流正在运行的方法是什么? 我们正在使用go-client来实现工作流程。

  • 在我的spring boot应用程序中,我必须实现一个导入服务。用户可以提交一组JSON文件,应用程序将尝试从这些文件中导入数据。根据JSON文件中的数据量,单个导入过程可能需要1或2个小时。 我不想在导入过程中阻止用户,因此我计划接受导入任务,并通知用户此数据已排定处理时间。我将把数据放入队列,另一端的空闲队列使用者将启动导入过程。此外,我需要有一个可能性来监视队列中的一个作业,如果需要的话终止

  • 全部的 我正在学习Databricks。如果有一个正在运行作业群集的失控进程,我希望得到通知/警报,如果可能,事件终止。在SQLServer中,这通常是在查询调控器的帮助下完成的。 我使用的Azure Databricks中有类似的东西吗? 谢谢,grajee

  • 完成上一节的初次运行后,你肯定会发现一点:一旦你按下 Ctrl+C,停下标准输入输出,logstash 进程也就随之停止了。作为一个肯定要长期运行的程序,应该怎么处理呢? 本章节问题对于一个运维来说应该属于基础知识,鉴于 ELK 用户很多其实不是运维,添加这段内容。 办法有很多种,下面介绍四种最常用的办法: 标准的 service 方式 采用 RPM、DEB 发行包安装的读者,推荐采用这种方式。发

  • 问题内容: 问题 我已经将一个长期运行的任务划分为多个逻辑子任务,因此我可以在每个子任务完成时报告结果。但是,我正在尝试报告将永远无法完成的任务的结果(而不是不断产生价值),并且正在使用现有的解决方案来做到这一点。 背景 我正在为我编写的某些Python程序构建Web界面。用户可以通过Web表单提交作业,然后返回查看该作业的进度。 假设我有两个函数,每个函数都可以通过单独的形式进行访问: :执行大

  • 问题内容: 是否有用于IPython的GUI,允许我打开/运行/编辑Python文件?我在IDLE中的工作方式是打开两个窗口:shell和.py文件。我编辑.py文件,运行它,并与外壳中的结果进行交互。 这样可以使用IPython吗?还是有另一种工作方式? 问题答案: 当我使用python时,通常会打开两个终端窗口-一个使用IPython,另一个使用相当自定义的Vim。 两个好的资源: http: