美文网首页
springboot-activiti集成以及使用案例

springboot-activiti集成以及使用案例

作者: Aolus | 来源:发表于2019-07-19 18:11 被阅读0次

activiti与springboot集成良好,以下只针对springboot讲解

1.集成之前,首先要配置流程图,有两种方式可以去网上下载IDE的activiti的插件或者去网上下载activiti-6.0.0.zip的包里面会有3个war包分别是activiti-admin,activiti-app,activiti-rest ,把3个war包放入tomcat容器中启动,然后访问http:ip:port/activiti-app 输入admin/test 进入系统配置流程图如下:

配置好以后导出流程配置XML文件

建立springboot项目依赖activiti maven配置如下:

springboot与activiti的依赖

在src/main/resources下建立processes文件夹把刚刚到处的流程配置文件XML放进来(注意文件夹名字processes不能改变,activiti默认从这个路径下去查找流程配置文件)

在application.yml配置文件中配置activiti配置项:

#每次应用启动不检查Activiti数据表是否存在及版本号是否匹配,提升应用启动速度

  activiti.database-schema-update: true 配置为true启动时候,会和当前数据中的activiti表进行版本匹配,有更新会更新,没有则会在数据库中创建相应的表结构

  #保存历史数据级别设置为full最高级别,便于历史数据的追溯

  activiti.history-level: full

下面介绍下activti几个组件

RepositoryService:提供一系列管理流程部署和流程定义的API。

RuntimeService:在流程运行时对流程实例进行管理与控制。

TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。

IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。

ManagementService:提供对流程引擎进行管理和维护的服务。

HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。

FormService:表单服务。

这几大组件直接在spring中注入即可使用

比如说开启一个流程实例

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveFlow",(String)leaveInfo.get("formId"),dynamicArg);

字符串"leaveFlow"是BPMN模型文件里process元素的id

fromId是你业务主键ID目的是把你的业务和流程数据相关联通过业务ID就可以找到相应的流程实例

//流程实例启动后,流程会跳转到第一个节点

Task vacationApply = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();

//设置申请任务的执行人也可以配置动态表达式通过变量注入

taskService.setAssignee(vacationApply.getId(), String.valueOf(leaveInfo.get("userId")));

//设置流程参数:请假天数和表单ID

//流程引擎会根据请假天数days>3判断流程走向

Map<String, Object> args = new HashMap<>();

args.put("days", leaveInfo.get("days"));

//设置审批组

//完成请假申请任务

taskService.complete(vacationApply.getId(), args);

现在说下动态设置代办人

有3个重要属性

1.Assignee 任务执行人,可以用UEL表达式获取 UEL表达式${xxx} 可以在代码中动态设置执行人

2.Candidate users 配置当前节点候选人组可以用UEL获取(当审核者有两个或多个以上,请假申请提交到他们手上后,有一个人认领了该任务,即代表申请被审批通过,这种情况下就需要使用候选人组配置)

3.Candidate groups 与Candidate users 类似 配置当前任务执行人组

下边说3个属性区别:

Assignee 默认签收

Candidate users,Candidate groups 需要手动签收

签收代码:

taskService.claim(taskId, userID); 参数当前任务id,用户id 意思是谁签收了这个任务

签收完审批通过以后如何让流程继续执行只需要一行代码即可

taskService.complete(taskID,"传递给下一个节点任务的参数");

最后说下UEL表达式的坑

首字母一定要小写,不能出现特殊字符例

时间有限,只是粗略记录,activit博大精深,还有很多功能未体现,后续会持续更新

https://github.com/sunnan2/work-flow-demo 附上demo代码示例

相关文章

  • springboot-activiti集成以及使用案例

    activiti与springboot集成良好,以下只针对springboot讲解 1.集成之前,首先要配置流程图...

  • 微信分享

    一、集成 二、使用 三、案例 分享链接 分享音乐 分享视频 分享图片

  • 集成学习

    问题 1. 什么是集成学习,以及为什么要使用集成学习 2. 集成学习常见思想都有哪些,以及它们都有什么作用 3. ...

  • Datawhale 零基础入门CV赛事-Task5 模型集成

    最后一章,将会学习如何使用集成学习提高预测精度,通过学习知道集成学习方法以及交叉验证情况下的模型集成,最终学会使用...

  • Selenium-IDE入门

    Selenium-IDE简介: Selenium-IDE(集成开发环境)是一个使用于开发Selenium测试案例的...

  • 使用 Spring Cache + Redis 作为缓存

    本文介绍如何使用 spring-cache,以及集成 Redis 作为缓存实现。表格过长,推荐读者使用电脑阅读 准...

  • 抢红包案例分析以及代码实现(三)

    前文回顾 抢红包案例分析以及代码实现(一) 抢红包案例分析以及代码实现(二) 接下来我们使用乐观锁的方式来修复红包...

  • 说明

    说明 开发工具默认集成spring data jpa 操作数据库,在实际项目使用不方便,现集成Mybatis以及M...

  • 纯代码布局,也可以一样的简洁

    前言 在前两篇文章讲述了UIStackView布局思想,使用方法以及一些实用的案例,在案例中使用xib结合UISt...

  • Git与Gitlab CI持续集成

    本文以Gitlab来讲解Git使用以及持续集成, 持续集成采用的是Gitlab CI. 其他代码托管网站,如Git...

网友评论

      本文标题:springboot-activiti集成以及使用案例

      本文链接:https://www.haomeiwen.com/subject/bgvslctx.html