计算机系统应用教程网站

网站首页 > 技术文章 正文

开箱即用-activiti流程引擎(active 流程引擎)

btikc 2024-11-15 16:36:05 技术文章 3 ℃ 0 评论

为什么学习工作流?

一、流程在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


【扩展】多实例情况

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表