首先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源码解析》 在当今的软件开发中,工作流引擎已经成为企业级应用不可或缺的一部分,而Activiti作为一款强大的、开源的工作流引擎,被广泛应用于业务流程管理(BPM)系统。...
SpringBoot集成Activiti完整工作流管理系统源码及SQL 包含如下主要内容: 1、工作流完整案例(请假流程、请假会签流程Demo) 2、系统用户权限、工作流用户和用户组管理 3、支持在线流程模型定义、部署、导出。也可用...
**SpringBoot集成Activiti实战详解** 在现代企业级应用开发中,流程管理是不可或缺的一部分,而Activiti作为一款流行的开源工作流引擎,被广泛用于实现业务流程自动化。本案例将探讨如何将Activiti与SpringBoot相...
1. **SpringBoot集成**: 集成步骤包括添加Activiti依赖到`pom.xml`,配置Activiti的`application.properties`,以及创建Activiti的配置类,例如`ActivitiAutoConfiguration`,用来初始化Activiti的相关组件。...
小编 做的这个项目有部分功能用到了 Activiti工作流,目前对工作流的掌握程度是基本会用,我之前写过一篇 Activiti 入门篇,当前这篇文章是属于Activiti 实战部分,如果你想知道Activiti 工作流是如何使用的话,那就...
SpringBoot集成Activiti** 集成主要分为以下步骤: - **添加依赖**:在`pom.xml`中引入SpringBoot的Starter Web和Activiti的相关依赖,确保项目可以处理HTTP请求并运行Activiti的工作流引擎。 ```xml ...
springboot整合activiti6.0的代码demo,首先按照自己的数据库地址修改springboot地址,然后运行AppBoot启动类,启动工程,然后通过postman工具访问MyController类中的方法即可观察结果。
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3. 岗位管理:配置系统用户所属担任职务。...17.集成activiti5.22
springboot整合activiti5.22实现页面流程设计项目,可直接启动,自动建表,调用接口http://localhost:8080/models/newModel,创建流程模型后,可直接访问http://localhost:8080/static/modeler.html?modelId=75001...
Activiti7发布正式版之后,它与SpringBoot2.x已经完全支持整合开发。我们可以将Activiti7与SpringBoot整合开发的坐标引入到工程中,从而达到SpringBoot支持Activti7整合。 1.使用IDEA创建SpringBoot项目 在工程的...
**SpringBoot集成Activiti实战详解** 在现代企业级应用开发中,流程管理是不可或缺的一部分,而Activiti作为一款开源的工作流引擎,深受开发者喜爱。本文将深入探讨如何将Activiti与SpringBoot进行集成,实现一个...
SpringBoot 1.5.7+Activiti 5.22.0 +Swagger 2.7.0 工作流整合了ActivitModeler,可以直接使用官方原生画流程图 swagger地址:http://localhost:8084/swagger-ui.html#!/ avtivitiModeler地址:...
在"springboot-activiti-test-master.zip"压缩包中,包含了已经配置好的SpringBoot和Activiti集成示例。你可以直接导入IDEA,通过源代码学习如何设置配置、创建流程模型以及调用流程服务。这个项目提供了清晰的结构...
**SpringBoot 整合Activiti工作流详解** 在企业级应用开发中,工作流管理系统扮演着重要的角色,它能够帮助实现业务流程自动化,提高工作效率。Activiti 是一个开源的工作流引擎,它支持 BPMN 2.0 标准,使得业务...
SpringBoot以其轻量级、快速启动和易于集成的特点,成为了现代Java开发的首选框架。将SpringBoot与Activiti结合,可以实现高效、灵活的业务流程自动化。 本示例旨在展示如何在SpringBoot项目中整合Activiti 5.22...
总结,SpringBoot集成Activiti和Activiti Modeler提供了一种高效、灵活的方式来管理和执行业务流程。通过Java反射技术,我们可以实现动态表单绑定,增强了系统的可扩展性和灵活性。这样的组合在实际开发中有着广泛的...
在SpringBoot中集成Activiti,我们可以通过配置Activiti的 Starter 来快速启用服务,并通过API或注解来控制流程的启动、结束等操作。 **Modeler 可视化界面** 是Activiti的一个重要组成部分,它提供了一个图形化的...
标题中的“springboot+activiti+vue+thymleaf 版本”指的是一个基于Spring Boot、Activiti、Vue.js和Thymeleaf的综合工作流管理系统。这个系统结合了四个关键的技术栈,构建了一个功能丰富的业务流程自动化平台。 1...
通过这个实战项目,开发者可以深入学习如何在SpringBoot应用中集成和使用Activiti7,从而实现高效、灵活的业务流程管理。在实际项目中,可以根据需求调整和扩展这些基础功能,以满足特定的业务场景。
SpringBoot集成Activiti编辑器是将企业流程管理框架Activiti与SpringBoot应用相结合,以便在SpringBoot环境中便捷地实现业务流程的设计、部署和执行。这个集成可以帮助开发者在微服务架构中构建灵活、可扩展的工作流...