一、 flowable管理用户和组
- 用户管理:先单独维护用户信息。后台对应的表结构是ACT_ID_USER
- Group管理:维护对应的Group信息,后台对应的表结构是ACT_ID_GROUP
- 用户分配组:用户和组是一个多对多的关联关联,我们需要做相关的分配,后台对应的表结构是ACT_ID_MEMBERSHIP
二、 flowable中的各种网关
1.排他网关:
执行到达这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件计算为true的顺序流(当没有设置条件时,认为顺序流为true)继续流程。
2. 并行网关:并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进入和外出顺序流的: fork分支:并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。 join汇聚: 所有到达并行网关,在此等待的进入分支,
直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。
3. 包含网关:包含网关可以看做是排他网关和并行网关的结合体。 和排他网关一样,你可以在外出顺序流上定义条件,包含网关会解析它们。 但是主要的区别是包含网关可以选择多于一条顺序流,这和并行网关一样。 包含网关的功能是基于进入和外出顺序流的: 分支:
所有外出顺序流的条件都会被解析,结果为true的顺序流会以并行方式继续执行, 会为每个顺序流创建一个分支。
汇聚:所有并行分支到达包含网关,会进入等待状态, 直到每个包含流程token的进入顺序流的分支都到达。
这是与并行网关的最大不同。换句话说,包含网关只会等待被选中执行了的进入顺序流。 在汇聚之后,流程会穿过包含网关继续执行。
4. 事件网关:事件网关允许根据事件判断流向。网关的每个外出顺序流都要连接到一个中间捕获事件。 当流程到达一个基于事件网关,网关会进入等待状态:会暂停执行。与此同时,会为每个外出顺序流创建相对的事件订阅。
三、 flowable事件
- 定时事件即定时触发的事件,包括定时器启动事件,定时器捕获中间件事件,定时器边界事件
(1) 定时器启动事件(timer start event)在指定时间创建流程实例。在流程只需要启动一次,或者流程需要在特定的时间间隔重复启动时,都可以使用。
(2) 定时器捕获中间事件:当第一个人工处理完成后,第二个人工处理的任务需要在一的定时之后执行
(3) 人工任务1如果在定义的他的这个时间之前还没有处理,那么就会触发定时边界事件,从而从人工任务3.
开放配置
四、需要注意的点
1.出口顺序流会选择所有条件计算为true的顺序流,并行执行。而使用排他网关时,只会选择一条顺序流。当多条顺序流的条件都计算为true时,会且仅会选择在XML中最先定义的顺序流继续流程。如果没有可选的顺序流,会抛出异常。BPMN 2.0规范不允许在同一个流程中混合使用有及没有X的菱形标志来表示排他网关。
2. 如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
3. 与其他网关的主要区别是,并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。
4. 事件网关的外出顺序流和普通顺序流不同,这些顺序流不会真的"执行", 相反它们让流程引擎去决定执行到事件网关的流程需要订阅哪些事件。 要考虑以下条件: 事件网关必须有两条或以上外出顺序流; 事件网关后,只能使用intermediateCatchEvent类型(activiti不支持基于事件网关后连接ReceiveTask) 连接到事件网关的中间捕获事件必须只有一个入口顺序流。
5. *子流程不能有定时器启动事件;*定时器启动事件,在流程部署的同时就开始计时。不需要调用startProcessInstanceByXXX就会在时间启动。调用startProcessInstanceByXXX时会在定时启动之外额外启动一个流程。
6. springboot整合activity启动流程报错 org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 没有找到部署的流程定义 解决方案:到act_re_procdef表中找到对应的key,修改代码引用,再启动流程