首先maven配置文件pom.xml增加activiti配置
<!-- 工作流 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>${activiti.version}</version> </dependency>
activiti.version = 5.22.0
然后查看jar包是否被引入:
在resource下创建activiti的工作流文件的存放文件夹processes
注意刚创建文件夹后processes为空,如果想启动项目测试请在配置文件中加入如下配置
我使用的是eclipse的activiti图形化插件:配置教程:https://blog.csdn.net/lifupingcn/article/details/61197563
创建demo2.bpmn
代码如下:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"> <process id="demo2" name="My process" isExecutable="true"> <startEvent id="startevent1" name="Start"></startEvent> <userTask id="usertask1" name="请假"></userTask> <userTask id="usertask2" name="审批"></userTask> <endEvent id="endevent1" name="End"></endEvent> <sequenceFlow id="flow1" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow> <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow> <sequenceFlow id="flow3" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_demo2"> <bpmndi:BPMNPlane bpmnElement="demo2" id="BPMNPlane_demo2"> <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> <omgdc:Bounds height="35.0" width="35.0" x="130.0" y="180.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"> <omgdc:Bounds height="55.0" width="105.0" x="271.0" y="170.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2"> <omgdc:Bounds height="55.0" width="105.0" x="471.0" y="170.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> <omgdc:Bounds height="35.0" width="35.0" x="690.0" y="180.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="576.0" y="197.0"></omgdi:waypoint> <omgdi:waypoint x="690.0" y="197.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> <omgdi:waypoint x="376.0" y="197.0"></omgdi:waypoint> <omgdi:waypoint x="471.0" y="197.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> <omgdi:waypoint x="165.0" y="197.0"></omgdi:waypoint> <omgdi:waypoint x="271.0" y="197.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>
保存后发现生成了demo2.png,这个是生成的流程图片。
下面编写测试代码:
package com.supershen.example.web.demo; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.repository.ProcessDefinition; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/demo/activiti") public class ActivitiTestController { @Autowired private RepositoryService repositoryService; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @GetMapping("/test") public void firstDemo() { // 根据bpmn文件部署流程 Deployment deployment = repositoryService.createDeployment().addClasspathResource("demo2.bpmn").deploy(); // 获取流程定义 ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() .deploymentId(deployment.getId()).singleResult(); // 启动流程定义,返回流程实例 ProcessInstance pi = runtimeService.startProcessInstanceById(processDefinition.getId()); String processId = pi.getId(); System.out.println("流程创建成功,当前流程实例ID:" + processId); Task task = taskService.createTaskQuery().processInstanceId(processId).singleResult(); System.out.println("第一次执行前,任务名称:" + task.getName()); taskService.complete(task.getId()); task = taskService.createTaskQuery().processInstanceId(processId).singleResult(); System.out.println("第二次执行前,任务名称:" + task.getName()); taskService.complete(task.getId()); task = taskService.createTaskQuery().processInstanceId(processId).singleResult(); System.out.println("task为null,任务执行完毕:" + task); } }
访问:http://localhost:8080/base-admin-mybatis/demo/activiti/test
得到如下结果证明集成成功:
如果报:org.activiti.engine.ActivitiIllegalArgumentException: resource 'demo2.bpmn' not found
是因为未将processes配置到classpath中,所以找不到。
解决办法:进入java builder path
点击ok,重新启动项目,重试,访问成功:
另外说一下eclipse的activiti插件支持junit测试类生成,右键bpmn文件Activiti-》Generate unit test 之后会在test文件夹下生成测试文件用于测试,大家可参考使用。
相关推荐
springboot集成activiti项目Demo源码分享v1.1 可参阅文章介绍:https://blog.csdn.net/rongbo91/article/details/107972448
SpringBoot集成Activiti完整工作流管理系统源码及SQL 包含如下主要内容: 1、工作流完整案例(请假流程、请假会签流程Demo) 2、系统用户权限、工作流用户和用户组管理 3、支持在线流程模型定义、部署、导出。也可用...
springboot集成Activiti,只需要修改一下数据库就可以 直接运行,Activiti25张表会自动生成,具体代码文档里都有
小编 做的这个项目有部分功能用到了 Activiti工作流,目前对工作流的掌握程度是基本会用,我之前写过一篇 Activiti 入门篇,当前这篇文章是属于Activiti 实战部分,如果你想知道Activiti 工作流是如何使用的话,那就...
SpringBoot整合Activiti简单示例,示例中包含正常流程执行、指定流程节点执行人等测试代码。
springboot整合activiti6.0的代码demo,首先按照自己的数据库地址修改springboot地址,然后运行AppBoot启动类,启动工程,然后通过postman工具访问MyController类中的方法即可观察结果。
springboot集成activiti demo
1.流程部署、查询流程定义 2.启动流程、查询流程 3.待办任务、完成任务 4.已结束流程、已完成任务
springboot+activiti+vue 版本和springboot+activiti+thymleaf 工作流2个版本
Activiti7发布正式版之后,它与SpringBoot2.x已经完全支持整合开发。我们可以将Activiti7与SpringBoot整合开发的坐标引入到工程中,从而达到SpringBoot支持Activti7整合。 1.使用IDEA创建SpringBoot项目 在工程的...
springboot 集成activiti编辑器
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。...17.集成activiti5.22
SpringBoot集成activiti modeler实现在线绘制流程图,完整代码demo
springboot集成activiti6工作流,适合刚学习activiti的开发者,同时适合对工作流感兴趣的开发者
(一)首先 pom.xml 文件中引入相关的依赖 ...(二)springboot 的配置文件 application.yml中添加相关的配置 (三)流程资源 (四)编写Applocation主程序 (五)编写基于SpringBootTest的测试程序
自己搭建的 springboot2.x+activiti5.22+modeler可视化界面 ,下载导入就可以运行, 自己已经测试过了。 有需要的小伙伴可以拿去
springboot集成spring security + activiti7
SpringBoot 1.5.7+Activiti 5.22.0 +Swagger 2.7.0 工作流整合了ActivitModeler,可以直接使用官方原生画流程图 swagger地址:http://localhost:8084/swagger-ui.html#!/ avtivitiModeler地址:...
springboot+activiti部署插件集成,直接运行。访问xx/models/newModel 返回数据中有个id, 然后访问/modeler.html?modelId=id 即可编辑
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。...集成activiti5.22