【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)
【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)
1、部署流程资源
2、查询流程定义信息
3、发布请假流程
4、查询用户任务
5、提出请假
6、老板查看请假任务
7、老板批准请假
8、查看整个请假流程
1、部署流程资源
部署流程资源有很多中方式,一次加载一个流程资源:
- /**
- * ClassName: ActivitiTest
- * @Description: TODO
- * @author chisj chisj@foxmail.com
- * @date 2018年4月8日
- */
- public class ActivitiTest {
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
- /**
- * 发布流程
- */
- @Test
- public void deloy() {
- RepositoryService repositoryService = processEngine.getRepositoryService();
- Deployment deployment = repositoryService.createDeployment()
- .addClasspathResource("activiti/leave.bpmn")
- .addClasspathResource("activiti/leave.png")
- .deploy();
- System.out.println("部署Id:" + deployment.getId());
- System.out.println("部署时间:" + deployment.getDeploymentTime());
- }
- }
运行结果:
数据库变化:
act_ge_bytearray:通用的流程定义和流程资源
act_re_deployment:部署单元信息
act_re_procdef:已部署的流程定义
参考资料【Activiti进阶(二)——部署流程资源的三种方式】----https://blog.csdn.net/zjx86320/article/details/50234707
2、查询流程定义信息
- /**
- * 查询流程定义信息
- */
- @Test
- public void queryProcdef(){
- RepositoryService repositoryService = processEngine.getRepositoryService();
- //创建查询对象
- ProcessDefinitionQuery query = repositoryService.createProcessDefinitionQuery();
- //添加查询条件
- query.processDefinitionKey("leave");//通过key获取
- // .processDefinitionName("My process")//通过name获取
- // .orderByProcessDefinitionId()//根据ID排序
- //执行查询获取流程定义明细
- List<ProcessDefinition> pds = query.list();
- for (ProcessDefinition pd : pds) {
- System.out.println("ID:"+pd.getId()
- +",NAME:"+pd.getName()
- +",KEY:"+pd.getKey()
- +",VERSION:"+pd.getVersion()
- +",RESOURCE_NAME:"+pd.getResourceName()
- +",DGRM_RESOURCE_NAME:"+pd.getDiagramResourceName());
- }
- }
运行结果:
这里的Key和Name是画流程图时在流程属性里面定义的:
3、发布请假流程
- /**
- * 启动流程
- */
- @Test
- public void startFlow() {
- RuntimeService runtimeService = processEngine.getRuntimeService();
- /**
- * 启动请假单流程 并获取流程实例
- * 因为该请假单流程可以会启动多个所以每启动一个请假单流程都会在数据库中插入一条新版本的流程数据
- * 通过key启动的流程就是当前key下最新版本的流程
- *
- */
- ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leave");
- System.out.println("id:"+processInstance.getId()
- +",activitiId:"+processInstance.getActivityId());
- }
运行结果:
数据库变化:
act_ru_task:运行时变量表
act_ru_execution:运行时流程执行实例
act_hi_identitylink:运行时用户关系实例
4、查询用户任务
- /**
- * 查看任务
- */
- @Test
- public void quertTask() {
- //获取任务服务对象
- TaskService taskService = processEngine.getTaskService();
- //根据接受人获取该用户的任务
- List<Task> tasks = taskService.createTaskQuery()
- .taskAssignee("emp")
- .list();
- for (Task task : tasks) {
- System.out.println("ID:"+task.getId()
- +",姓名:"+task.getName()
- +",接收人:"+task.getAssignee()
- +",开始时间:"+task.getCreateTime());
- }
- }
运行结果:
5、提出请假
- /**
- * 提出请假,启动流程
- */
- @Test
- public void startTask() {
- TaskService taskService = processEngine.getTaskService();
- //taskId 就是查询任务中的 ID
- String taskId = "2504";
- //完成请假申请任务
- taskService.complete(taskId );
- }
6、老板查看请假任务
查询结果:
7、老板批准请假
8、查看整个请假流程
在act_hi_actinst中查看:
【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)相关推荐
- 基于ssm整合的网上书城
基于ssm整合的网上书城 采用当前最流行的框架Spring-SpringMVC-MyBatis设计,分为前后台,前台用户可以购买书籍,后台管理员可以对书籍进行分类,增删改查 注意:本系统不支持jdk1 ...
- 基于SSM整合的驾照在线考试系统
基于SSM整合的驾照在线考试系统 项目描述 主要功能有: 1.用户功能模块 用户注册登 用户可以通过用户名邮箱注册网站,并且通过注册的用户登陆网站. 2.随机练习 从题库中随机取出指定数量的题目供学员 ...
- 【学习笔记】SSM整合篇
[学习笔记]SSM整合篇
- 【深度学习】基于Pytorch的线性模型概念辨析和实现(二)
[深度学习]基于Pytorch的线性模型概念辨析和实现(二) 文章目录 [深度学习]基于Pytorch的线性模型概念辨析和实现(二) 1 线性回归的从零开始实现 2 训练 3 关于with 4 关于w ...
- 嘉明SSM学习之基于SSM框架的学生信息管理系统
项目的github:https://github.com/zjm-cityboy/sims-GitHub.git 可以的话点个小星星嘿嘿 1.项目介绍 1.1.项目环境配置 操作系统:Windows1 ...
- SpringMVC学习06之SSM整合(一)
复习 我的环境 环境: IDEA MySQL 5.7.34 Tomcat 8 Maven 3.8.3 一.SSM整合 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis ...
- 基于ssm+shiro+activiti的办公自动化系统
welcome.html首页效果图: 效果图展示: 一.报销管理 报销申请: 我的报销单:(分页功能) 2.1查看审核记录: 2.2查看当前流程图: 3.我的代办事务: 3.1办理任务:(按钮会根据不 ...
- Activiti6.0流程引擎学习——(11)使用IDEA编码实现的请假流程
本篇博客要使用IDEA来实现之前绘制好的请假流程图.流程图如下: 具体创建这个流程图请看这篇博客:https://blog.csdn.net/JJBOOM425/article/details/850 ...
- SSM整合activiti框架
首先在maven项目的pom.xml文件中引入activiti工作流的jar包: <dependency> <groupId>org.activiti</groupId& ...
最新文章
- 这些堪称人类史上“最强大脑”的人中,霍金居然排最后
- BZOJ1566:[NOI2009]管道取珠——题解
- 【 MATLAB 】程序流程控制语句格式简记
- Hibernate基本概念 (2)
- Javascript事件绑定this
- onvif备忘录(1)--onvif简介及开发框架搭建
- java ==陷阱_Java小陷阱
- 属猴的人2021年运势预测
- exit()和_exit()的区别
- Oracle 11g 新特性 – HM(Hang Manager)简介
- 强化学习(RL)AlphaGo Zero训练五子棋
- 如何清除百度云管家计算机图标,怎么样删除我的电脑里的百度云管家图标
- rose oracle双机切换故障,ROSE HA切换节点导致DG失败、恢复
- 在r中弄方差分析表_R语言——方差分析
- 视频怎么加水印?这里有你想要的答案
- springboot 集成 fastdfs
- windows主机和虚拟机设置桥接
- 游戏开发程序员可能会遇到的英文单词
- 《第一行代码》总结之UI、碎片(二)
- 自然语言处理(NLP)之路——概念理解——从 Google translate 的 seq2seq 看自然语言处理(NLP)的发展
热门文章
- python学习之文章中单词出现频率统计
- c语言求两个数的最小公倍数辗转相除法,C语言辗转相除法求2个数的最小公约数...
- android图片点击全屏显示,Android浏览图片,点击放大至全屏效果
- openmv一些常见问题与心得总结
- FTP连接时出现“227 Entering Passive Mode” 的解决方法(附加实际案例)
- 人耳能听的声音范围与各种发音的频率范围
- audio的自动播放
- 零和对策matlab,零和对策
- html横向导航栏滑动效果,JavaScript实现滑动导航栏效果
- python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析