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. 30、Arrays工具类
  2. c语言常用的异常处理,C语言中的异常处理
  3. ESP8266编译脚本之三
  4. c语言派,C语言中 派/4=1-1/3+1/5-1/7....公式求派
  5. 项目范围管理:项目范围管理的概念
  6. 【练习】使用事务控制语句
  7. HDU 3785 寻找大富翁
  8. 微信公众号内嵌H5网页授权步骤
  9. 惠普打印机换硒鼓图解_惠普打印机墨盒更换步骤
  10. 【图像融合】基于NSST结合PCNN实现图像融合附matlab代码
  11. Ubuntu 18.04上跑通LSD SLAM
  12. Tracup丨产品管理与项目管理的区别
  13. 牛牛试题排版插件V3更新发布
  14. vue2.0自学教程(一):走进vue2.0大观园
  15. docker 搭建frp内网穿透以及frp详细使用
  16. MySQL按照汉字拼音A-Z排序或者汉字拼音和英文字母混合A-Z排序
  17. 推荐系统-协同过滤简单介绍
  18. 学习Spring框架有这一篇就够了
  19. StarUML3.0 的破解方法
  20. 真实孔径雷达——东方至远

热门文章

  1. 分支程序设计02 - 零基础入门学习C语言11
  2. printf输出16进制数
  3. 第二章 UML与设计模式
  4. mysql5驱动_技术分享 | MySQL 8 和 MySQL 5.7 在小型设备的内存消耗分析
  5. 初学者python笔记(类的内置属性)
  6. mysql存储过程 try_mysql存储过程之异常处理篇
  7. python如何初始化对象数组_如何理解Python中的面向对象编程?
  8. Python标准库glob用法精要
  9. python爬取新闻发送微信_如何利用 Python 爬虫实现给微信群发新闻早报?(详细)...
  10. linux申请cache和释放cache,Linux--- 手工释放系统cache