如何使用"每个流程实例" Spring框架中使用Jbpm 6.4的运行时策略

时间:2016-11-29 05:04:15

标签: jbpm kie

我有一个多实例人工任务子流程的业务流程。基本上,这是允许一个或多个人参与批准员工休假的休假审批流程 leave approval business process

这里员工为一个或多个人申请休假签名以完成任务。使用Singleton策略一切正常。现在我想将其迁移到"每个流程实例"运行策略。为此,我修改了代码并添加了以下代码

this.kieSession = this.runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get()).getKieSession();

我有以下疑问/问题: -

  1. 仅在流程开始时才需要创建Kie会话吗?

  2. 如何在签署请假时提取process_instance_id以便日后访问kie会话?

  3. 解决上述问题的最佳方法是什么?

  4. 是"每个流程实例"运行时策略已经足够,或者我是否需要根据请求转移到#34;运行时策略?

  5. " Singleton"之间的确切区别是什么?和"每个流程实例"在性能和资源使用方面的运行时策略?

  6. 如果我有大约200个用户同时访问我的应用程序,我应该使用哪一个?

1 个答案:

答案 0 :(得分:1)

以下是答案:

  1. KieSessions是从KieContainer创建的,因此您的客户端应用程序可以与运行时进行交互。如果您仅使用会话来启动一个进程,那也没关系。如果您关闭会话,该过程将继续在kie服务器(kie执行服务器)上运行
  2. 您可以为一个模型(流程定义)请求所有实例,该模型使用GAV标识 - 组,工件和版本。在最近的KIE版本中 - 7+,这简化了,因为每个部署都有唯一的标识符。
  3. 运行时策略与您如何呈现流程以及您对其建模所期望的功能无关。我会说按照你的描述将它保持为单身。
  4. 每个进程和每个请求策略只是运行时实例化方式的内部运行时属性。此封装不应更改您的功能
  5. Singleton运行时是一个可执行文件,"每个进程实例"你有每个实例的独立执行,所以如果某个实例失败(内存耗尽或其他技术问题),其他实例可以继续执行。
  6. 并发用户访问人工用户任务是一个奇怪的问题,因为任务一次只能由一个用户声明。
  7. 我希望我对你的理解有所了解。

    干杯