activiti idea 请假流程_IDEA创建Activiti工作流开发
IDEA创建Activiti工作流开发
一、安装Activiti插件
1.首先打开FIle的setting功能,搜索Plugins:
2.输入actiBPM,然后点击搜索:
3.点击安装、应用:
安装好之后点击apply(应用),之后重启idea
二、创建Activiti工作流并导出流程图图片
1.重启IDEA之后,点击File文件中的New下的BpmnFile:
2.给这个文件起好名字后拖动右边的图标到左边:
3.把鼠标放到节点中心,中心会变成黑白扇形:
4.拖拽连线到另一个图标进行画图:
5.左键单击节点就会出现左边的修改按钮:
Id命名规范: 要以字母或下划线 () 字符开头,后接 XML 规范中允许的任意字母、数字、重音字符、变音符号、句点 (.)、连字符 (-) 和下划线 () 的组合。
否则》》》(报org.activiti.bpmn.exceptions.XMLException: cvc-datatype-valid.1.2.1: '' 不是 'NCName' 异常)
6.接着修改文件的后缀名为.xml:
打开该文件可以看到,流程图以xml代码格式呈现(当然也可以在重命名改回去)
7.接着右键该文件:
如果没有出现图中的按钮,可以按快捷键Ctrl+alt+Shift+U,按了以后,以后这个图标就会出现了
8.导出图片
可以点击该按钮保存这图片,后缀名自己设置下.png
三、解决图片乱码bug
如果图片中有中文会出现乱码,需要在这两个文件下的后面都加上
-Dfile.encoding=UTF-8
然后重启IDEA,把原来的PNG图片删掉,再生成一次就不会出现乱码了
四、测试(test)工作流开发
1.引入pom.xml依赖
junit
junit
4.12
org.activiti
activiti-spring
5.18.0
org.activiti
activiti-engine
5.18.0
slf4j-api
org.slf4j
spring-eans
org.springframework
jackson-core-asl
org.codehaus.jackson
commons-lang3
org.apache.commons
commons-lang3
org.apache.commons
2.在src/main/resources下面新建一个BPMN文件
(同上文操作的创建工作流)
3.画完流程图之后要更改对应元素的name和assignee,Id
然后点击空白地方,把流程ID和名称改掉,如下图:
4.之后把数据库建好,建一个activiti.cfg.xml在resource下面
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5.新建一个java类,用来生成表
@Test
public void crateTable(){
ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
}
运行这个类之后数据库里面会生成24张表, 23-25张表都是有可能的,我这里是生成了24张表,多了一张act_evt_log,事件处理日志表。最主要的还是那23张表
6.之后就可以开始部署流程
代码:
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
//部署流程
@Test
public void deployProcess(){
RepositoryService repositoryService=processEngine.getRepositoryService();
DeploymentBuilder builder=repositoryService.createDeployment();
builder.addClasspathResource("myWork.bpmn");
builder.deploy();
}
部署之后就可以在act_re_procdef表中看到对相应的流程信息
7.启动流程
代码:
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
@Test
public void startProcess(){
RuntimeService runtimeService=processEngine.getRuntimeService();
runtimeService.startProcessInstanceByKey("myProcess_1");
}
启动流程之后就会有相应的任务产生,存在act_ru_task表中,可以查看任务节点
代码:
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
@Test
public void queryProcess(){
TaskService taskService=processEngine.getTaskService();
String assigne="student";
List tasks=taskService.createTaskQuery().taskAssignee(assigne).list();
int size=tasks.size();
for(int i=0;i
Task task=tasks.get(i);
}
for (Task task:tasks){
System.out.println("taskId=" +"流程任务节点信息ID:"+ task.getId() +
",taskName:" +"流程任务节点名称ID:" +task.getName() +
",assignee:" + "流程任务节点接受人:"+task.getAssignee() +
",createTime:" +"流程任务节点创建时间:"+ task.getCreateTime());
}
}
首次运行的时候这个没有输出,因为第一次运行的时候扫描act_ru_task的表里面是空的,但第一次运行完成之后里面会添加一条记录,之后每次运行里面都会添加一条记录
8.查询流程明细定义明细
代码:
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
@Test
public void queryProcdef(){
RepositoryService repositoryService=processEngine.getRepositoryService();
ProcessDefinitionQuery query=repositoryService.createProcessDefinitionQuery();
query.processDefinitionKey("myProcess_1");
List pds=query.list();
System.out.println(">>>>>>>>>>>>>>>>>>>>>");
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());
}
}
9.审核过程完成任务节点审批
代码:
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
@Test
public void startProcessApproval(){
TaskService taskService=processEngine.getTaskService();
//taskId 就是查询任务中的 ID
String taskId="2504";
//完成请假申请任务
taskService.complete(taskId);
}
10.流程详细步骤:
部署流程》》》》》》启动流程》》》》》》查询用户id》》》》用户完成任务》》》流程结束
五、生成流程报表
流程部署表
SELECT * FROM `act_re_deployment`
流程定义表
SELECT * FROM `act_re_procdef`
资源文件表
SELECT * FROM `act_ge_bytearray`
系统配置表
SELECT * FROM `act_ge_property`
启动流程实例涉及到的表
流程实例运行时 执行对象表
SELECT * FROM `act_ru_execution`
流程实例运行时 身份联系表
SELECT * FROM `act_ru_identitylink`
流程实例运行时 用户任务表
SELECT * FROM `act_ru_task`
活动节点历史表
SELECT * FROM `act_hi_actinst`
身份联系表 历史
SELECT * FROM `act_hi_identitylink`
流程实例表 历史
SELECT * FROM `act_hi_procinst`
历史任务表
SELECT * FROM `act_hi_taskinst`
activiti idea 请假流程_IDEA创建Activiti工作流开发相关推荐
- activiti idea 请假流程_IDEA开发流程Activiti需要注意的一些坑
1.慎用IDEA2020最新版本 IDEA2020最新版本迎来了重大升级,对java和spring有了更好更强大的开发支持,但是对于Activiti流程开发却不再支持,可能是因为actiBPM插件太老 ...
- 【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)
[Activity学习五]--基于SSM整合Activiti之请假流程实现(二) 1.部署流程资源 2.查询流程定义信息 3.发布请假流程 4.查询用户任务 5.提出请假 6.老板查看请假任务 7.老 ...
- 基于开源流程引擎Activiti5的工作流开发平台BPMX3
2019独角兽企业重金招聘Python工程师标准>>> BPMX3平台是宏天软件在ESTBPM2的基础上,追随开源工作流平台Activiti5,由原班开发团队,历时一年,现重新推出一 ...
- Activiti6.0(三)实现一个请假流程
目录 一.前言 二.实现请假流程 1.制作流程图 2.导出xml流程文件 3.流程部署及运行 4.流程部署时数据库表变化 一.前言 上文SpringBoot已经与Activiti做了基本整合,所有流程 ...
- flowable-ui(v6.7.2)简单的请假流程审批操作(二)
请假流程发布 创建请假应用程序 点击[建模器应用程序] 创建新的应用 点击[应用程序]–[创建应用程序] 挂载BPMN流程 [创建新的应用程序定义]后如下 选择需要挂载的流程,此处挂载[请假]流程 请 ...
- Activiti工作流(一):OA 上的那些请假流程如何快速实现呢?
大家好,我是 杰哥 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前 ...
- 请假流程如何快速实现(OA )呢?:Activiti工作流
大家好, 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前定义好一个 ...
- 基于 Spring Boot 2.x 使用 Activiti 创建一个简易的请假流程
文章目录 1 摘要 2 准备工作 3 请假流程图 3 核心代码 3.1 数据库表 3.2 流程管理工具类 3.3 流程的使用 4 推荐参考资料 5 Github 源码 1 摘要 工作流是需 ...
- 【Activiti工作流】5. 简单请假流程
1. 画出流程图 使用之前安装的Eclipse的流程设计器,画出如下流程图: 1.1 设置开始节点 在properties中选中Main config:设置如下: 然后选中Form,设置如下: 具体操 ...
最新文章
- 30、Arrays工具类
- c语言常用的异常处理,C语言中的异常处理
- ESP8266编译脚本之三
- c语言派,C语言中 派/4=1-1/3+1/5-1/7....公式求派
- 项目范围管理:项目范围管理的概念
- 【练习】使用事务控制语句
- HDU 3785 寻找大富翁
- 微信公众号内嵌H5网页授权步骤
- 惠普打印机换硒鼓图解_惠普打印机墨盒更换步骤
- 【图像融合】基于NSST结合PCNN实现图像融合附matlab代码
- Ubuntu 18.04上跑通LSD SLAM
- Tracup丨产品管理与项目管理的区别
- 牛牛试题排版插件V3更新发布
- vue2.0自学教程(一):走进vue2.0大观园
- docker 搭建frp内网穿透以及frp详细使用
- MySQL按照汉字拼音A-Z排序或者汉字拼音和英文字母混合A-Z排序
- 推荐系统-协同过滤简单介绍
- 学习Spring框架有这一篇就够了
- StarUML3.0 的破解方法
- 真实孔径雷达——东方至远
热门文章
- 分支程序设计02 - 零基础入门学习C语言11
- printf输出16进制数
- 第二章 UML与设计模式
- mysql5驱动_技术分享 | MySQL 8 和 MySQL 5.7 在小型设备的内存消耗分析
- 初学者python笔记(类的内置属性)
- mysql存储过程 try_mysql存储过程之异常处理篇
- python如何初始化对象数组_如何理解Python中的面向对象编程?
- Python标准库glob用法精要
- python爬取新闻发送微信_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)...
- linux申请cache和释放cache,Linux--- 手工释放系统cache