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,设置如下: 具体操 ...
最新文章
- Spring3.2下使用JavaMailSenderImpl类发送邮件
- JSTL函数标签库 fn标签
- 一个抓取电脑屏幕的小控件台程序
- jvm字节码和基于jvm的多语言混合编程
- java+poodle漏洞修复_SSL3.0 POODLE漏洞修复方案
- VIM使用系列:quickfix功能
- javaEE(3)_servlet基础
- TypeScript 中的 SOLID 原则
- 机器学习——KNN及代码实现
- Give root password for maintenance (Or press Control-D to continue)
- rpm方式安装mysql5.7_centos下rpm方式安装mysql5.7
- 201771010102 常惠琢 《面向对象程序设计(java)》第十三周学习总结
- android+cast+sdk,如何使用Android发现Chromecast设备?
- Python数据可视化:Cartopy 地理空间数据可视化
- 我国主要城市2023年房价数据
- Java排序之归并排序 1
- 让女人看了心疼亏欠你的文案
- Springboot整合Lombok
- 《数理统计》王晓光答案
- 13-企业网站数据库-企业介绍数据操作
热门文章
- 将WindowsPhoneApp部署到HTC Surround,兄弟们支个招如何进行Debug
- 计算神经生物学 计算机转生物,计算神经生物学的应用有哪些?
- python url编码_python url编码和解码
- androidsdcard挂载目录_Android获取手机自带SDCard和外置SDCard路径
- 微课|Python列表、字典、集合、字符串对象常用方法串讲
- 详解Python序列解包(5)
- python备份发包脚本_用Python写脚本,实现完全备份和增量备份的示例
- mysql 数据库连接 w3school_PHP 连接 MySQL
- 力扣198. 打家jie舍(JavaScript)
- 63. 不同路径 II(JavaScript)