网站首页 > 技术文章 正文
为什么学习工作流?
一、流程在OA和管理类项目中都是必备的功能:
1、 请假流程:员工发起申请——部门领导审批
2、 报销流程:员工发起报销申请——部门领导审批——财务审批——出纳审批
3、 …
二、代码实现的缺点:
1.代码实现这些功能的话,每次流程推进都要去判断节点和流程的流向
2.代码硬编码的话,如果流程只需要增加或者删除一个节点,就需要改动代码
3.不利于维护和扩展
4.不利于代码的重用性
三、工作流实现的优点:
1.程序员不需要关心流程流转,节点等细节
2.减少了很多硬性编码,维护和扩展都很方便
3.工作流都有一套完善的API.调用api就可以实现功能,开发效率高
4.一套完善的工作流程还提供用户随时修改流程的功能.减少了用户因为需求分析的变动带来的工作量.
学习完这套课程,您将收获
1、 Activiti基础知识以及中间件的使用(springcloud、nacos、redis的使用);
2、 常用接口源码;
环境搭建
1、工作流编辑器搭建
修改配置文件application.yml中的数据库连接和端口
流程列表:http://localhost:8083/
2、springcloud搭建
2.0.Redis安装 与启动
参考文档:https://www.runoob.com/redis/redis-install.html
2.1. nacos安装与启动
参考文档:https://nacos.io/zh-cn/docs/quick-start.html
修改配置文件application.properties 的数据库配置
windows下启动:使用命令行添加启动模式 startup -m standalone->成功("nacos is starting with standalone")
直接双击
startup.cmd=startup
命令
此时是以集群模式启动服务
->
失败(
"nacos is starting with cluster"
)
使用命令行添加启动模式
startup -m standalone->
成功
("nacos is starting with standalone")
2.2. springcloud安装与启动
若依微服务版本:
http://doc.ruoyi.vip/ruoyi-cloud/document/hjbs.html#%E5%90%8E%E7%AB%AF%E8%BF%90%E8%A1%8C
3、activiti模块服务搭建
3.1.新增模块
3.2.配置和启动工程
参考文章:
若依微服务springcloud版一新增业务子模块_鲸鱼姐的专栏-CSDN博客_微服务添加子模块
流程图绘制
新建流程
绘制流程图
开始节点
拖动启动事件中的”事件“到编辑器页面
给节点设置ID和名称
发起申请节点
添加用户活动节点到编辑器,给节点设置ID和名称
设置任务监听器
com.ruoyi.activiti.tasklistener.SingleTaskListener
任务节点
添加任务节点到编辑器,设置ID和名称
设置任务监听器
com.ruoyi.activiti.tasklistener.GroupTaskListener
结束节点
添加结束节点到编辑器,设置ID和名称
流程流转线条参数配置
流程流转分为默认流转和添加流转:
默认流转
如果没有其他分支,则可勾选位默认流转
条件流转
如果是需要根据不同的条件流转到不同的节点,则需要配置相关规则;
流程默认的规则参数是:message
需要在流转条件中设置${message=='满足条件'}
流转线条名称与按钮规则
流程审批时,可根据任务节点的输出线条渲染对应的按钮
默认规则是:按线条ID的字母从小到大进行排序
例如下图中的部门领导审核环节,审批时可渲染出按钮:“通过”、“退回”
流程修改
流程发布
【扩展】生成审批节点
【扩展】配置任务节点对应的角色
选择处理类型和对应的角色信息
【实战】流程接口
前提条件
流程发起时,需要在业务服务类中注入工作流程的 服务类:
@Autowired
private ActivitiService activitiService;
流程发起接口
流程方法
流程发起时,需要使用方法:
activitiService.starkFormTask(String processDefinitionKey, String requestUserId, String businessKey, String variables, String isAutoFinishFirstStep);
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
processDefinitionKey | 是 | 流程名称 | bill_process |
requestUserId | 是 | 发起人账号 | Zhansan |
businessKey | 是 | 业务主键ID | 业务主键ID(全局唯一)建议用UUID |
variables | 是 | 流程变量 | json字符串 |
isAutoFinishFirstStep | 是 | 是否自动完成第一个节点 | 完成第一步节点,0:启动流程,不自动完成第一步节点 |
variables这个json符串中必须传入的参数
参数名称 | 是否必须 | 注释 | 示例 |
nextDealUser | 是 | 下一步处理人,多个处理人用逗号隔开 | zhansan,l,wangwu |
content | 是 | 申请内容描述 | 物资申请 |
title | 是 | 流程标题 | 物资申请 |
applyId | 是 | 业务模块ID | 60 |
todoUrl | 是 | 小程序待办URL | http://www.baidu.com |
pcTodoUrl | 是 | PC页面待办URL | http://www.google.com |
urlParam | 是 | 待办参数 | bid=xxx&form=123 |
message | 是 | 下一步审批流向 |
流程推动接口
流程方法
activitiService.fininshFormTask(taskId, userId, formVariables, TaskVariables, excutionVariables);
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
taskId | 是 | 任务ID | |
userId | 是 | 用户ID | |
formVariables | 否 | 表单变量 | json字符串 |
TaskVariables | 是 | 任务变量 | json字符串 |
excutionVariables | 否 | 流程实例变量 | json字符串 |
TaskVariables必传参数
参数名称 | 是否必须 | 注释 | 示例 |
nextDealUser | 是 | 下一步处理人,多个处理人用逗号隔开 | zhansan,lisi,wangwu |
message | 是 | 下一步审批流向 | |
option | 是 | 审批意见 |
查询流程定义接口
流程方法
List<ProcessDefinitionBean> queryDefinition(String definitionKey, String isNew)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
definitionKey | 是 | 流程名称 | bill_process |
isNew | 是 | 是否查询最新版本 | true:取最新一次版本流程,false:取历史所有版本流程 |
获取流程定义节点办理人接口
流程方法
NextStepAndUser getFirstDealUserByKey(String processKey, String userId, String stepName)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
processKey | 是 | 流程名称 | bill_process |
userId | 是 | 用户账号ID | 当前办理人ID |
stepName | 是 | 环节中文名称 | 部门负责人审核 |
获取我的全部待办任务接口
流程方法
List<TaskInfoBean> queryAllTask(String userId)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
userId | 是 | 用户账号ID | 当前办理人ID |
获取一个任务的明细接口
流程方法
TaskInfo getOneTaskInfo(String taskId)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
taskId | 是 | 任务ID | 任务ID |
任务指派接口
当一个任务的处理人有多个时,可以指派给其中一个人或其他人处理
流程方法
String claimMyTask(String taskId, String dealUser)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
taskId | 是 | 任务ID | 任务ID |
dealUser | 是 | 被指派人员 | zhansann |
任务转办接口
将任务转办给他人,与任务指派的区别是:指派后依然可以转办,转办后则不能指派
流程方法
String trunTask(String taskId, String dealUser)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
taskId | 是 | 任务ID | 任务ID |
dealUser | 是 | 被指派人员 | zhansann |
保存任务表单接口
审批处理过程中,将填写的任务的表单信息进行保存
流程方法
String saveTask(String taskId, String formVariables, String TaskVariables)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
taskId | 是 | 任务ID | 任务ID |
formVariables | 否 | 表单变量 | json字符串 |
TaskVariables | 否 | 任务变量 | json字符串 |
根据流程实例ID获取流程信息
流程方法
List<HistoryTaskInfo> getAllFlowStepById(String Id, String flag)
参数解释
参数名称 | 是否必须 | 注释 | 示例 |
Id | 是 | 业务主键ID 或 流程实例ID | |
flag | 否 | 1:业务主键ID,2:流程实例ID | 1 |
【扩展】多实例情况
猜你喜欢
- 2024-11-15 在 Spring Boot 项目中使用 activiti
- 2024-11-15 在springBoot项目中整合使用activiti
- 2024-11-15 activiti中的网关是干什么的?(activiti包含网关)
- 2024-11-15 SpringBoot集成工作流Activiti(完整源码和配套文档)
- 2024-11-15 Activiti工作流介绍及使用(activiti工作流会签)
- 2024-11-15 SpringBoot集成工作流Activiti(实际项目演示)
- 2024-11-15 activiti工作流引擎(activiti工作流引擎怎么用)
- 2024-11-15 工作流Activiti初体验及在数据库中生成的表
- 2024-11-15 Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 2024-11-15 Activiti工作流入门(activiti工作流设计)
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)