flowable多示例任务 flowable创建任务

游戏攻略 2025-01-07 15:53:43

工作流引擎flowable基于springboot下,命令模式实现源码分析

在init()方法里,有一大堆的初始化。有个方法initCommandExecutors();

flowable多示例任务 flowable创建任务flowable多示例任务 flowable创建任务


flowable多示例任务 flowable创建任务


方法initCommandExecutors里的内容如下

方法initCommandInterceptors里的getDefaultCommandInterceptors内容

创建了各种,也就是当执行某个命令时,会执行这些。(包括了日志、事务等)

例如当执行完成任务时,会被事务拦截,启动事务等其它功能,如果需要我们也可以自定义

方法initCommandExecutor里的内容如下

把各个命令串联起来

flowable入门(四)增加自定义类型的扩展属性

在项目flowable-ui-modeler-app中找到stencilset/stencilset_bpmn.json文件

propertyPackages属性中增加扩展属性定义

id:自定义的属性id

type:指向自定义的类型

找到文件resources/static/editor-app/configuration/properties.js

在文件中追加自定义类型的注册信息

注意:此处的属性名称“flowable-mypropertytype”,是约定好的书写格式,是定义的propertyPackage的id加前缀flowable,不能随意修改,不然将无法找到相关的信息

readModeTemplateUrl:定义显示属性内容的模板

writeModeTemplateUrl:定义编辑属性内容的模板

flowable本身已经创建了许多类型的模板,可以参考-template.html相关的文件

增加模板文件

mypropertytype-properties-display-template.html

mypropertytype-properties-write-template.html

增加js实现,创建文件properties-mypropertytype-properties-controller.js

结构可以参考其他相关属性实现,一般为-properties-controller.js

在index.html引入扩展的属性

在用户任务中增加mypeopertypackage

有两种方式配置扩展属性

对应属性设置

对应属性设置

flowable任务办理不同意

一、根据flowable这类国外的开源工作流,它的任务办理方式为两种:

1.任务需要签收才办理,即有一个接收任务的过程:任务创建后,流程进入一个等待的状态

2.任务不需要签收,就可以直接办理

flowable子任务没有taskkey

1、嵌套子流程的子流程,子流程嵌入在它的主流程(上图命名为入口流程,主流程是指整个流程图);

2、嵌套子流程的子流程没有流程实例id,主流程有流程实例Id;(流程实例id是指,启动流程之后,会生成的id)

3、嵌套子流程区别于任务,嵌套子流程没有任务id(taskId),任务有任务id(taskId),但,任何类型的都有执行id(Id)。(任务id,类型为UserTask的,并在被触发之后,生成的id)

4、不能人为的启动嵌套子流程的子流程

flowable会签结束,会签变量没有更新。bug

flowable会签结束了,但是会签变量没有更新,这是一种bug,可能是因为网络延迟或者是系统的问题,所以才没有更新。

会签的意思是,在流程任务管理中,任务通常是由一个人或者多个人同时去处理的,这种任务叫做会签任务。类似于并行。

2、会签类型

按数量通过:达到一定数量的处理后,会签通过

按比例通过:达到一定比例的处理后,会签通过

一票否决:只有一个人不同意时,会签通过

一票通过:只有一个同意时,会签通过

Flowable实现会签是基于多实例任务的,将设置成多实例,通过在userTask的属性配置。

3、多实例类型

可以选择并行会签(parallel)、顺序会签(sequential),其中并行会签的意思是 多个人同时执行任务。顺序会签是按顺序执行任务。

flowable跳转到的有两个执行人报错?

在 Flowable 中,如果跳转到的存在多个执行人,会导致报错,因为在跳转时需要指定具体的执行人。

要解决这个问题,可以在跳转时选择其中一个执行人作为目标的执行人,或者使用 Flowable 提供的动态用户任务(Dynamic User Task)功能来解决多个执行人的问题。

动态用户任务允许在流程运行时动态指定任务的执行人,具体实现方式如下:

在目标设置一个动态用户任务,并为该任务设置候选用户或候选组,例如:

在这个示例中,${assignee} 是一个占位符,可以在流程运行时通过流程变量进行替换,以指定具体的执行人。

创建一个实现 TaskListener 接口的类,实现该接口的 notify 方法,在该方法中指定任务的执行人。例如:

public class DynamicUserTaskListener implements TaskListener {

@Override

public void notify(DelegateTask delegateTask) {

String assignee = (String) delegateTask.getVariable("assignee");

delegateTask.setAssignee(assignee);

}}

在这个示例中,notify 方法从流程变量中获取指定的执行人,并将其设置为任务的执行人。

在流程运行时,通过设置流程变量来指定任务的执行人。例如:

Map variables = new HashMap<>();

variables.put("assignee", "user1");

runtimeServ.setVariables(task.getProcessInstanceId(), variables);

在这个示例中,使用 runtimeServ.setVariables 方法设置流程变量,将 assignee 设置为 user1。

通过使用动态用户任务,可以在 Flowable 中解决多个执行人的问题,以便更灵活地控制流程的执行。

版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。