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工作流开发相关推荐

  1. activiti idea 请假流程_IDEA开发流程Activiti需要注意的一些坑

    1.慎用IDEA2020最新版本 IDEA2020最新版本迎来了重大升级,对java和spring有了更好更强大的开发支持,但是对于Activiti流程开发却不再支持,可能是因为actiBPM插件太老 ...

  2. 【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)

    [Activity学习五]--基于SSM整合Activiti之请假流程实现(二) 1.部署流程资源 2.查询流程定义信息 3.发布请假流程 4.查询用户任务 5.提出请假 6.老板查看请假任务 7.老 ...

  3. 基于开源流程引擎Activiti5的工作流开发平台BPMX3

    2019独角兽企业重金招聘Python工程师标准>>> BPMX3平台是宏天软件在ESTBPM2的基础上,追随开源工作流平台Activiti5,由原班开发团队,历时一年,现重新推出一 ...

  4. Activiti6.0(三)实现一个请假流程

    目录 一.前言 二.实现请假流程 1.制作流程图 2.导出xml流程文件 3.流程部署及运行 4.流程部署时数据库表变化 一.前言 上文SpringBoot已经与Activiti做了基本整合,所有流程 ...

  5. flowable-ui(v6.7.2)简单的请假流程审批操作(二)

    请假流程发布 创建请假应用程序 点击[建模器应用程序] 创建新的应用 点击[应用程序]–[创建应用程序] 挂载BPMN流程 [创建新的应用程序定义]后如下 选择需要挂载的流程,此处挂载[请假]流程 请 ...

  6. Activiti工作流(一):OA 上的那些请假流程如何快速实现呢?

    大家好,我是 杰哥 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前 ...

  7. 请假流程如何快速实现(OA )呢?:Activiti工作流

    大家好, 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前定义好一个 ...

  8. 基于 Spring Boot 2.x 使用 Activiti 创建一个简易的请假流程

    文章目录 1 摘要 2 准备工作 3 请假流程图 3 核心代码 3.1 数据库表 3.2 流程管理工具类 3.3 流程的使用 4 推荐参考资料 5 Github 源码 ​ ​ ​ 1 摘要 工作流是需 ...

  9. 【Activiti工作流】5. 简单请假流程

    1. 画出流程图 使用之前安装的Eclipse的流程设计器,画出如下流程图: 1.1 设置开始节点 在properties中选中Main config:设置如下: 然后选中Form,设置如下: 具体操 ...

最新文章

  1. Spring3.2下使用JavaMailSenderImpl类发送邮件
  2. JSTL函数标签库 fn标签
  3. 一个抓取电脑屏幕的小控件台程序
  4. jvm字节码和基于jvm的多语言混合编程
  5. java+poodle漏洞修复_SSL3.0 POODLE漏洞修复方案
  6. VIM使用系列:quickfix功能
  7. javaEE(3)_servlet基础
  8. TypeScript 中的 SOLID 原则
  9. 机器学习——KNN及代码实现
  10. Give root password for maintenance (Or press Control-D to continue)
  11. rpm方式安装mysql5.7_centos下rpm方式安装mysql5.7
  12. 201771010102 常惠琢 《面向对象程序设计(java)》第十三周学习总结
  13. android+cast+sdk,如何使用Android发现Chromecast设备?
  14. Python数据可视化:Cartopy 地理空间数据可视化
  15. 我国主要城市2023年房价数据
  16. Java排序之归并排序 1
  17. 让女人看了心疼亏欠你的文案
  18. Springboot整合Lombok
  19. 《数理统计》王晓光答案
  20. 13-企业网站数据库-企业介绍数据操作

热门文章

  1. 将WindowsPhoneApp部署到HTC Surround,兄弟们支个招如何进行Debug
  2. 计算神经生物学 计算机转生物,计算神经生物学的应用有哪些?
  3. python url编码_python url编码和解码
  4. androidsdcard挂载目录_Android获取手机自带SDCard和外置SDCard路径
  5. 微课|Python列表、字典、集合、字符串对象常用方法串讲
  6. 详解Python序列解包(5)
  7. python备份发包脚本_用Python写脚本,实现完全备份和增量备份的示例
  8. mysql 数据库连接 w3school_PHP 连接 MySQL
  9. 力扣198. 打家jie舍(JavaScript)
  10. 63. 不同路径 II(JavaScript)