要三周完成工作流引擎的设计

博客讲述系统开发过程,因无详细数据分析,采用快速原型法。先在本机开发,确定7张表及主外键,完成建表和关系设置,接着开始搭建框架。原计划的UI部分因不急需暂不敲代码,待引擎完成后再处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

还包括UI的部分。好在是在自己的系统上,不是开始想象的那种通用形的,这样容易了好多。因为没有详细的数据分析,只能做一步算一步,现有的需求太简单,就快速原型法,弄出个东西来,然后在细化需求吧。
现在本机上作,不用remote,等需求没问题了,在做移植,代码改动量应该不是太大。(以前改过)
现在确定了7张表
主健外键也确定了,建表和关系都弄完了,开始代码部分。首先要搭出框架。今天能完成这些就行了,高质量的。

原先想设计的UI,终于因为不是太急需没有敲代码,等现在的引擎完成了,应该还是会去处理那部分的东西。

这几天上csdn里面太乌烟瘴气了,特别是net的非技术区,本想看点别的东西,结果...以后还是在java去溜达吧,那边还算干净。

<think>好的,我需要帮助用户了解Flowable工作流中多实例并行的实现方式和配置方法。首先,我应该回忆一下Flowable的相关知识,特别是多实例任务的部分。根据用户提供的引用内容,特别是引用[1]、[3]和[4],这些提到了多实例的配置、会签以及并行临时任务的添加。 首先,多实例在Flowable中通常用于处理需要多个参与者的情况,比如会签。用户提到的多实例并行流程设计,应该涉及到在用户任务节点上设置多实例属性。引用[3]指出,多实例任务会签是通过在userTask节点配置多实例属性实现的,这可能包括设置并行类型、集合变量、实例数量等。 接下来,我需要考虑配置的具体步骤。根据引用[1],多实例类型有串行和并行两种,这里用户关注的是并行。因此,配置时需要在流程设计中将multiInstanceType设置为parallel。此外,集合变量如userList用来指定参与者,元素变量如userItem用于迭代,这可能需要在XML中定义。 然后,流程设计器的操作部分也很重要。用户可能使用Flowable UI设计器,所以需要指导如何在图形界面中设置多实例属性。例如,在任务属性面板中勾选多实例,选择并行,并填写相关变量。 另外,引用[4]提到添加并行临时任务的情况,虽然用户的问题主要在于配置已有的多实例并行任务,但这也可能涉及动态添加任务的方法,不过可能超出当前问题范围,但可以作为补充信息提及。 还需要注意,多实例并行的执行逻辑,比如所有分支同时创建,需要全部完成才能继续流程。这可能涉及到会签的完成条件,如使用nrOfInstances和nrOfActiveInstances变量来判断是否所有实例都完成。 最后,用户可能遇到的问题,比如回退并行流程的困难,引用[2]指出Flowable默认不支持并行流程的回退,需要自定义逻辑,这可能是一个注意事项。 总结一下,回答的结构应该包括基本概念、XML配置示例、设计器操作步骤、执行逻辑和注意事项,并引用提供的参考文献。需要确保使用正确的中文术语,并按照用户的要求分点说明,保持清晰的结构。</think>### Flowable工作流多实例并行实现与配置方法 #### 一、基本概念 多实例并行(Multi-instance Parallel)是Flowable中用于**同时处理多个相同任务分支**的机制,常用于会签、并行审批等场景。其核心逻辑是通过定义任务节点的`multiInstanceLoopCharacteristics`属性实现[^3]。 #### 二、XML配置方式 在流程定义文件(BPMN 2.0 XML)中,需为任务节点添加以下属性: ```xml <userTask id="multiInstanceTask" name="并行审批"> <multiInstanceLoopCharacteristics isSequential="false" flowable:collection="userList" flowable:elementVariable="userItem"> <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 1}</completionCondition> </multiInstanceLoopCharacteristics> </userTask> ``` - `isSequential="false"`:声明并行模式[^1] - `collection`:指定参与者集合变量,如`${userList}` - `elementVariable`:迭代元素变量,用于任务分配 - `completionCondition`:完成条件,此处表示任意一个实例完成即可推进流程 #### 三、流程设计器操作步骤(Flowable Modeler) 1. **设置多实例属性** - 在用户任务属性面板勾选`Multi instance` - 选择`Parallel`类型 - 配置集合变量:`${userList}` 2. **定义任务分配** ```javascript ${userItem} //直接使用元素变量 //或复杂表达式 ${taskService.createTaskQuery().taskCandidateUser(userItem).list()} ``` 3. **配置完成条件** - 使用预定义变量: $$nrOfInstances = \text{总实例数}, \quad nrOfCompletedInstances = \text{已完成实例数}$$ - 示例条件表达式:`${nrOfCompletedInstances == nrOfInstances}`(全部完成) #### 四、执行逻辑特点 1. **实例创建**:根据集合变量`userList`长度自动生成并行任务 2. **变量隔离**:每个实例拥有独立的`execution`上下文[^3] 3. **流程推进**:需满足`completionCondition`才继续后续节点 #### 五、特殊场景实现 1. **动态添加并行任务**(运行时修改): ```java runtimeService.addMultiInstanceExecution( "taskId", "流程实例ID", Collections.singletonMap("新增用户变量", newUser) ); ``` 此方法可在不修改流程定义的情况下追加并行分支[^4] 2. **多实例会签**: - 需配合`Candidate users`配置 - 每个实例对应不同处理人 - 支持`nrOfActiveInstances`监控进行中任务数 #### 六、注意事项 1. **变量作用域**:集合变量需在流程实例级别定义 2. **历史数据**:并行任务会产生多条历史记录 3. **回退限制**:原生引擎不支持并行流程回滚,需自行实现补偿逻辑[^2] ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值