
Activiti7工作流从入门到实战(全网最好的)
文章平均质量分 67
Activiti7工作流从入门到实战(全网最好的)
风流 少年
我走的很慢,但从不后退!Not designed!
展开
-
Flowable
【代码】Flowable自定义描述。原创 2024-07-03 15:22:08 · 336 阅读 · 0 评论 -
中间捕获事件:IntermediateCatchingEvent(TimerEvent)
定时启动流程:定时器启动事件只需要部署,不需要启动流程实例,到了开始时间Date会自动发起流程实例并流转到下一个节点。R3/PT1H:小时H分钟M秒S。每隔1小时启动一次,总共启动运行3次。Cycle的表达式Expression也可以使用Cron表达式。节点延时审批:UserTask1审批完成后延迟一段时间后再进入UserTask2。3分钟内UserTask1不处理就跳过自己进入UserTask2处理。3分钟内UserTask1不处理就进入UserTask3处理。原创 2024-01-11 12:52:55 · 690 阅读 · 0 评论 -
Activiti7工作流引擎:Pool + Lane
泳池常根据不同的角色如不同的部门或者不同的系统,对同一个大的流程按照部门或按照系统进行分组,使得流程图更加清晰。原创 2024-01-08 12:57:38 · 702 阅读 · 0 评论 -
Activiti7工作流引擎:多租户
表示每个租户之间数据隔离互不影响,互不可见。通常一个租户表示一个系统应用(类似于appid的作用)或者一家公司。原创 2024-01-08 10:16:55 · 1168 阅读 · 0 评论 -
Activiti7工作流引擎:审批通过或拒绝
众所周知:Activiti只提供了完成方法,没有提供所谓的退回或者跳转方法,如果想控制从后面一个节点退回到前面某个节点或者从前面某个节点跳转到后面某个节点有两种方式:一:通过使用排它网关Gateway,配置不同的条件来指定跳转节点的目标节点,如果节点流转比较多就会导致流程图的线比较多,不太灵活,一般用于流程图不太负责跳转比较少比较固定的流程)。原创 2024-01-05 10:30:08 · 2254 阅读 · 0 评论 -
Activiti7工作流引擎:生成实时的流程图片
实时获取当前流程对应的流程图片,并对当前正在审批的节点进行高亮显示。原创 2023-11-22 12:06:58 · 1362 阅读 · 0 评论 -
Activiti6工作流引擎:Form表单
表单约等于流程变量。StartEvent 有一个Form属性,用于关联流程中涉及到的业务数据。原创 2023-11-11 23:11:37 · 2842 阅读 · 2 评论 -
Activiti6工作流引擎:IdentityService(ACT_ID_)
【代码】IdentityService。原创 2023-11-10 14:55:08 · 299 阅读 · 0 评论 -
Activiti7自定义ID生成器
Activiti7默认id的生成是使用UUID的方式,UUID方式的id值比较长,没法排序,这里演示使用雪花算法的方式作为id的值。原创 2023-09-22 13:57:58 · 564 阅读 · 0 评论 -
Activiti7工作流引擎:在线流程编辑器Activiti Modoler5.x
有的时候我们的流程图需要业务人员自己绘制,然后使用自己绘制的流程图,此时就需要一个在线流程图编辑器需要集成到我们的web系统中。Activiti Modoler是Activiti官方推出的在线流程编辑器。原创 2023-09-08 15:18:37 · 2702 阅读 · 3 评论 -
Activiti7工作流引擎:节点动态跳转
一:application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT username: root password: root123 driver-class-name: com.mysql.cj.jdbc.Driver## Mybatis 配置mybat原创 2023-09-06 14:52:10 · 2836 阅读 · 0 评论 -
Activiti7工作流引擎:通用审批模版
自己的业务审批Service类来继承CommonApprovalService,在自己的业务类中只需要实现预留的方法即可。这样多个类型的审批对应多个Service,每个不同的Service不用具体关注审批相关的代码,只需要关注和审批相关的业务方法即可。这样业务代码和工作流代码解耦了。该实现类可以根据自己的业务做一些适当调整和自定义。原创 2023-09-04 11:30:11 · 728 阅读 · 0 评论 -
Activiti7工作实战笔记总结
工作已经使用Activiti工作流有一段时间了,现对一些工作注意事项进行总结。一:IDEA 工作流插件Activiti中的IDEA插件真的非常烂,要非常非常小心。有的IDEA打卡.bpmn文件时不显示属性面板,这时候需要将IDEA的主题调成白色,关闭.bpmn文件重新打开就出来了。使用IDEA打开.bpmn文件时很多时候你什么也没改,但是文件会发生变化,会被git识别出来,一般是鼠标点击了节点,可能节点的x,y坐标发生了一丁点的改变。工作流插件在属性面板中设置了值,再打开查看时不显示,注意此.原创 2022-03-15 07:38:15 · 2110 阅读 · 2 评论 -
Activiti7工作流引擎:高阶篇(三) CallActivityTask 子流程跳转到父流程
@Testpublic void delopyAllBpmn() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getRepositoryService() .createDeployment() .addClasspathResource("bpmn/LeaveProcess2.bpmn") ..原创 2022-01-15 22:50:28 · 2067 阅读 · 0 评论 -
Activiti7工作流引擎:高阶篇(二) 前进和后退任务
一:leave.bpmn<process id="leave" isClosed="false" isExecutable="true" name="请假流程" processType="None"> <startEvent id="_2" name="StartEvent"/> <userTask activiti:assignee="zhangsan" activiti:exclusive="true" id="apply" name="发起申请"/>原创 2022-01-09 18:33:25 · 3044 阅读 · 7 评论 -
Activiti7工作流引擎:高阶篇(一) ProcessDefinitionUtil
// 根据流程定义id获取流程定义先关信息,可以获取所有流元素FlowElementProcess process = ProcessDefinitionUtil.getProcess(processDefinitionId);// 根据id获取指定的节点信息FlowElement targetFlowElement = process.getFlowElement(targetTaskDefKey);// 主要查询act_re_procdefProcessDefinitionUtil.ge原创 2022-01-14 22:41:29 · 1309 阅读 · 0 评论 -
Activiti7工作流引擎:高阶篇(四) 命令上下文 CommandContext
*** 当前任务id// 对ACT_RU_TASK增删改查 TaskEntityManager taskEntityManager = commandContext . getTaskEntityManager();// 对ACT_RU_EXECUTION增删改查 ExecutionEntityManager executionEntityManager = commandContext . getExecutionEntityManager();} }原创 2022-01-08 21:03:43 · 1993 阅读 · 0 评论 -
Activiti7工作流引擎:实战篇(三) 前端演示
一:登录jack 123456rose 123456tom 123456jerry 123456二:部署流程三:发起申请四:rose审核五:tom审批六:源码原创 2021-12-24 22:16:44 · 2250 阅读 · 0 评论 -
Activiti7工作流引擎:实战篇(二) 与SpringSecurity集成
1. mapperpublic interface UserMapper { @Select("select * from tb_user where username=#{userName}") User loadUserByUsername(String userName);}2. service@Servicepublic class UserService { @Autowired private UserMapper userMapper;原创 2021-12-24 21:21:06 · 2124 阅读 · 0 评论 -
Activiti7工作流引擎:实战篇(一) 准备工作
本来我是想买块肉的,但是现在我只能买块豆腐。 1. pom.xml引入最新版本 activiti-spring-boot-starter依赖。<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.1.0.M6</version&...原创 2021-12-24 20:22:47 · 1405 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(十三) 拒绝(直接结束)
驳回或者拒绝就是某个审批人不同意你的申请,此时流程就直接结束了。我们可以增加分支条件或者排它网关来完成驳回功能。此方法适用于节点较少的情况。如果节点较多,每个节点都增加一个排它网关,感觉整个流程的.bpmn文件内容很多,我们当驳回的时候可以直接操作act_ru删除相关数据和act_hi表中完善end_time等。...原创 2021-12-21 21:43:17 · 13054 阅读 · 5 评论 -
Activiti7工作流引擎:进阶篇(十二) 委派(加签)和转交(转签)
加签就是委派任务delegateTask,然后去解决任务resolveTask(并不是去真正的去完成任务)。转签完成后才能完成任务complete。一:委派任务A由于某些原因不能处理该任务可以把任务委派给用户B代理,当B决绝完之后再次回到用户A这里,然后由A去完成任务,在这个过程中A是任务的所有者OWNER_,B是该任务的办理人Assignee。A->B->A。应用场景:这事太大,我做不了主,我先问一下老大delegateTask,如果老大说可以resolveTask我就完成审批..原创 2021-12-19 22:45:32 · 9947 阅读 · 1 评论 -
Activiti7工作流引擎:进阶篇(十一) 会签、或签
之前的任务负责人Assignee都是一个,而任务可以有多个人有权限审批,只要其中有一部分人完成审批任务就算整个任务完成。同一个任务需要多个负责人来完成被称之为“会签”。会签就是一种投票,满足投票人数就过。会签是通过多实例Multi Instance来设置的:Sequential:执行顺序,true表示多实例顺序执行,false表示多实例并行。Loop Cardinality:循环基数,选填,会签人数。Completion Condition:完成条件,Activiti预定义了3个.原创 2021-12-19 21:48:39 · 15346 阅读 · 2 评论 -
Activiti7工作流引擎:进阶篇(十) 多实例
一:多实例基本示例@Testvoid testStartAndComplete() { Map<String, Object> variables = new HashMap<>(); variables.put("approveUserList", Arrays.asList("zhaomin", "xiaozhao", "zhouzhiruo")); runtimeService.startProcessInstanceByKey("multiInstance", v原创 2022-01-16 18:59:19 · 3038 阅读 · 5 评论 -
Activiti7工作流引擎:进阶篇(九) 内嵌子流程 SubProcess
一:定义.bpmn文件二:启动并完成第一个任务@Testvoid testStartAndComplete() { runtimeService.startProcessInstanceByKey("SubProcessExample"); Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample") .taskAssignee("zhangsan") .singleResult原创 2022-01-09 22:31:31 · 3003 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(八) MailTask
一:开启POP3/SMTP/IMAP二:定义bpmn三:application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT username: root password: root123 driver-class-name: com.mysql.原创 2022-01-17 22:22:58 · 1966 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(七) 调用子流程 CallActivityTask
方法之间可以相互调用,同理,流程定义之间也可以相关调用,达到流程定义复用的目的。一:流程定义1二:流程定义2Called Element: 调用其它流程,值为其它流程Id。三:启动和启动流程@Testpublic void delopyAllBpmn() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); processEngine.getRepositoryService()原创 2021-12-28 22:38:11 · 4712 阅读 · 5 评论 -
Activiti7工作流引擎:进阶篇(六) ScriptTask
Script Format:脚本类型,groovyScript:脚本代码<process id="ScriptTaskProcess" isClosed="false" isExecutable="true" processType="None"> <startEvent id="_2" name="StartEvent"/> <scriptTask activiti:exclusive="true" id="scriptTask" name="ScriptT..原创 2022-01-22 18:31:53 · 1420 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(五) ReceiveTask
ReceiveTask 称之为接收任务、等待任务等。当执行流进入ReceiveTask时会先执行执行监听器,然后整个执行流进入wait等待状态,而且在act_ru_task中不没有当前正在进行中的任务,当执行流执行trigger()方法时才会触发正在睡眠的ReceiveTask,进入下一个节点。public class ReceiveTaskDelegate implements ExecutionListener { @Override public void notify(Dele.原创 2022-01-22 16:30:54 · 2116 阅读 · 0 评论 -
Activiti7工作流引擎:进阶篇(四) ServiceTask
UserTask 需要调用 taskService.complete(task.getId()) 来完成任务,而ServiceTask是不需要用户操作而自动执行的任务类型,它会自动调用Spring环境下的某个Bean的某个方法。因为使用的是Bean所以在需要在Spring环境下运行,这里在SpringBoot2.x版本运行。*************************** 废话不多说,上来就干。***************************员工申请请假-》经理审批-》总经理审批。如果是.原创 2021-12-22 22:05:35 · 4921 阅读 · 1 评论 -
Activiti7工作流引擎:进阶篇(四) SpringBoot整合Activiti6
目前企业中使用Activiti6版本的比较多,所以有必要学习一下Activiti6。1. pom.xml<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version></dependency><.原创 2021-12-19 13:03:46 · 1754 阅读 · 1 评论 -
Activiti7工作流引擎:进阶篇(三) ProcessRuntime和TaskRuntime
一:谢谢Activiti7提供了两个Runtime类用于对Service提供了进一步封装,并且和Spring Security进行高度耦合。@PreAuthorize("hasRole('ACTIVITI_USER')")public class ProcessRuntimeImpl implements ProcessRuntime { private final RuntimeService runtimeService;}public interface TaskRuntime {原创 2022-01-05 19:53:42 · 3615 阅读 · 1 评论 -
Activiti7工作流引擎:进阶篇(二) SpringBoot整合工作流Activiti7
SpringBoot整合Activiti7需要与SpringSecurity整合。SpringBoot整合Activiti7之后的所有数据库Id值都使用了类似于UUID样的值。SpringBoot又封装了一套API来操作Activiti。1. pom.xml<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artif.原创 2021-12-16 22:15:03 · 3477 阅读 · 3 评论 -
Activiti7工作流引擎:进阶篇(一) Activiti7与Spring整合
在Activiti中核心类的是ProcessEngine流程引擎,与Spring整合就是让Spring来管理ProcessEngine,通过org.activiti.spring.SpringProcessEngineConfiguration 与Spring整合方式来创建ProcessEngine对象。一:pom.xml<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi原创 2021-12-16 13:44:39 · 2135 阅读 · 0 评论 -
Activiti7工作流引擎:基础篇(九) Annotation
Text Annotation:文本注解,就像编程语言中的注释,用来解释流程,不参与流程审核,在活动历史中也不存在。@Testvoid testStartAndComplete() { runtimeService.startProcessInstanceByKey("AnnotationProcess"); Task task = taskService.createTaskQuery().processDefinitionKey("AnnotationProcess") .singleR原创 2022-01-26 22:02:31 · 1046 阅读 · 0 评论 -
Activiti7工作流引擎:基础篇(八) 网关Gateway
一:ExclusiveGateway 排它网关排它网关会执行所有条件,找到一个为true的执行,如果有多个条件为true那么会执行优先定义的(Id较小的那个UserTask),如果条件都为false则抛出异常。注意:使用排它网关如果条件都为false会抛异常,而不使用排它网关直接在连线上设置条件如果条件都为false工作流程不会抛异常而是算结束了。if(day < 3) {} else if (day >= 3) {} else { throw new Exception();原创 2021-12-10 22:39:06 · 6136 阅读 · 3 评论 -
Activiti7工作流引擎:基础篇(七) 流程变量
public class ProcessVariableTest { @Test public void testCreateDBTable() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); System.out.println(processEngine); } @Test public void delopyBpmn(...原创 2021-12-10 22:12:56 · 3994 阅读 · 4 评论 -
Activiti7工作流引擎:基础篇(六) 任务监听器和流程监听器
任务监听器是处理业务逻辑的重要的地方,当任务创建、设定负责人、完成任务时都可以监听的到从而来处理自己的业务。也可以监听创建任务的时候指定任务的负责人。Create:任务创建后触发。Assignment:任务分配后触发。Delete:任务完成后触发。All:所有事件发生都触发。public class OffWorkTaskListener implements TaskListener { @Override public void notify(DelegateTas.原创 2021-12-09 21:03:12 · 9248 阅读 · 5 评论 -
Activiti7工作流引擎:基础篇(五) 常用操作
查询流程定义@Testpublic void testQueryProcessDefinition() { List<ProcessDefinition> list = ProcessEngines.getDefaultProcessEngine() .getRepositoryService() .createProcessDefinitionQuery() .processDefinitionKey("hel原创 2021-12-13 22:55:34 · 4949 阅读 · 0 评论 -
Activiti7工作流引擎:基础篇(四) Hello World
示例一:负责人写死1.1 流程定义Assignee: 表示任务负责人。public class HelloWorldTest { /** * 创建数据库表 */ @Test public void testCreateDBTable() { ProcessEngines.getDefaultProcessEngine(); } /** * 部署流程:将.bpmn文件保存到数据库中 */ @原创 2021-12-12 21:41:43 · 3392 阅读 · 0 评论