Activiti7

文章目录

  • 概述
  • 入门案例
    • 1.创建springboot项目
      • pom.xml
    • 2.获取ProcessEngine
      • 2.1 默认的方式
      • 2.2 编程方式获取
      • 2.3 表结构介绍
    • 3.在线流程设计器


概述

官网地址:https://www.activiti.org/

Activiti由Alfresco软件开发,目前最高版本Activiti 7。是BPMN的一个基于java的软件实现,不过
Activiti 不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,是一个服务平台。

入门案例

官方手册:http://jeecg.com/activiti5.21/

1.创建springboot项目

现在开发中或者我们自己学习写案例都是通过SpringBoot脚手架工具来快速构建项目的。那么我们也
就直接通过创建SpringBoot项目来给大家讲解相关的案例。创建一个普通的SpringBoot项目。指定版本为2.4.2即可。JDK版本得是11

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo01</artifactId><version>0.0.1-SNAPSHOT</version><name>demo01</name><description>Demo project for Spring Boot</description><properties><java.version>11</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.0.0.GA</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.获取ProcessEngine

2.1 默认的方式

在工作流引擎框架中, ProcessEngine 是一个非常核心的对象,我们需要首先解决这个对象的获
取。获取方式很多。先来看最简单的一个基于 activiti.cfg.xml 的XML文件的配置方式。

/*** 获取ProcessEngine对象的第一种方式*/@Testpublic void test1(){//通过 getDefaultProcessEngine()方法获取流程引擎对象  会加载resources下的activiti.cfg.xmlProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();System.out.println(processEngine);}

通过 getDefaultProcessEngine 方法加载会默认的从classpath路径下加载 activiti.cfg.xml
置文件。我们添加该文件。内容如下:

<beans xmlns="http://www.springframework.org/schema/beans"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"><!-- id必须是 processEngineConfiguration  --><bean id="processEngineConfiguration"class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti7" /><property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="root" /><property name="databaseSchemaUpdate" value="true" /><property name="asyncExecutorActivate" value="false" /><property name="mailServerHost" value="mail.my-corp.com" /><property name="mailServerPort" value="5025" /></bean>
</beans>

在这里插入图片描述
在这里插入图片描述

2.2 编程方式获取

上面的配置文件的方式中的配置文件其实是一个Spring的配置文件,但是这并不意味着Activiti只能用
于Spring环境。我们也可以通过编程的方式来使用配置文件,从而来构建ProcessEngineConfiguration对象,具体的实现如下:

    /*** 基于Java代码获取ProcessEngine对象*/@Testpublic void test2(){ProcessEngine engine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration().setJdbcUrl("jdbc:mysql://localhost:3306/activiti7").setJdbcDriver("com.mysql.cj.jdbc.Driver").setJdbcPassword("root").setJdbcUsername("root").setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE).buildProcessEngine();System.out.println(engine);}

上面讲解中的相关属性说明:
databaseSchemaUpdate:用于设置流程引擎启动关闭时使用的数据库表结构控制策略

  • false (默认): 当引擎启动时,检查数据库表结构的版本是否匹配库文件版本。版本不匹配时抛出异常。
  • true : 构建引擎时,检查并在需要时更新表结构。表结构不存在则会创建。
  • create-drop : 引擎创建时创建表结构,并在引擎关闭时删除表结构。

2.3 表结构介绍

在Activiti7中。我们启动服务会自动维护Activiti7需要使用到的相关的表结构。在这块我们需要有个大
概的了解。首先是支持的数据库有:

Activiti数据库类型示例JDBC URL备注
h2jdbc:h2:tcp://localhost/activiti默认配置的数据库

Activiti的所有数据库表都以ACT_开头。第二部分是说明表用途的两字符标示符。服务API的命名也大
略符合这个规则。

  • ACT_RE_*: RE 代表 repository 。带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。
  • ACT_RU_*: RU 代表 runtime 。这些表存储运行时信息,例如流程实例(process instance)、用户任务(user task)、变量(variable)、作业(job)等。Activiti只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录。这样保证运行时表小和快。
  • ACT_ID_*: ID 代表 identity 。这些表包含身份信息,例如用户、组等。
  • ACT_HI_*: HI 代表 history 。这些表存储历史数据,例如已完成的流程实例、变量、任务等。
  • ACT_GE_*: 通用数据。用于不同场景下

注意:MySQL数据库最好使用5.7及以上的版本

3.在线流程设计器

接下来我们通过官方提供的流程设计器来实现一个简单流程的设计。然后完成相关的部署和流程整
体操作。

官网下载地址:https://www.activiti.org/get-started 下载下来后解压缩

在这里插入图片描述

在这里插入图片描述
进入到wars中。提供的有Activiti-app.war

在这里插入图片描述

把这war包拷贝到Tomcat服务器中即可。注意Tomcat的版本不要高于8.5,然后Tomcat服务。访问 http://localhost:8080/activiti-app 即可。登录的账号密码是 admin test

在这里插入图片描述

然后启动tomcat
在这里插入图片描述

访问http://localhost:8080/activiti-app,输入用户名admin和密码test,即可登录成功进入
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
点击“Create Process ”,弹出窗口。录入相关的流程定义信息

在这里插入图片描述
录入流程图的名称和key和描述

在这里插入图片描述

在这里插入图片描述
点击“人事审批”的节点,然后下面会有相关属性出现,这里我们点击“Assignments”,然后弹出Assignment的框出现
在这里插入图片描述
在这里插入图片描述
表示该节点由zhangsan来进行审批。

配置好各自节点的审批人后,进行保存
在这里插入图片描述
在这里插入图片描述

进行下载xml文件

在这里插入图片描述
在这里插入图片描述

<?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/processdef"><process id="test" name="test" isExecutable="true"><documentation>test</documentation><startEvent id="startEvent1"></startEvent><userTask id="sid-69E77A57-E14F-4C79-AD4F-9AD1929406A9" name="人事审批" activiti:assignee="zhangsan"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><sequenceFlow id="sid-776DF814-E68F-49CB-90D8-6B98A1801508" sourceRef="startEvent1" targetRef="sid-69E77A57-E14F-4C79-AD4F-9AD1929406A9"></sequenceFlow><userTask id="sid-732A12A2-AD4D-4406-8B23-A34BB1F60D1C" name="经理审批" activiti:assignee="lisi"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete></extensionElements></userTask><sequenceFlow id="sid-DE9336AD-7E6D-45F8-B589-6AA3A210E8C0" sourceRef="sid-69E77A57-E14F-4C79-AD4F-9AD1929406A9" targetRef="sid-732A12A2-AD4D-4406-8B23-A34BB1F60D1C"></sequenceFlow><endEvent id="sid-6CA4C975-410D-4C1B-B6A6-58894E492622"></endEvent><sequenceFlow id="sid-DE19D371-8E2C-4E55-A507-68EF07CAC0B3" sourceRef="sid-732A12A2-AD4D-4406-8B23-A34BB1F60D1C" targetRef="sid-6CA4C975-410D-4C1B-B6A6-58894E492622"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_test"><bpmndi:BPMNPlane bpmnElement="test" id="BPMNPlane_test"><bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1"><omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-69E77A57-E14F-4C79-AD4F-9AD1929406A9" id="BPMNShape_sid-69E77A57-E14F-4C79-AD4F-9AD1929406A9"><omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-732A12A2-AD4D-4406-8B23-A34BB1F60D1C" id="BPMNShape_sid-732A12A2-AD4D-4406-8B23-A34BB1F60D1C"><omgdc:Bounds height="80.0" width="100.0" x="320.0" y="138.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-6CA4C975-410D-4C1B-B6A6-58894E492622" id="BPMNShape_sid-6CA4C975-410D-4C1B-B6A6-58894E492622"><omgdc:Bounds height="28.0" width="28.0" x="465.0" y="164.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="sid-776DF814-E68F-49CB-90D8-6B98A1801508" id="BPMNEdge_sid-776DF814-E68F-49CB-90D8-6B98A1801508"><omgdi:waypoint x="130.0" y="178.0"></omgdi:waypoint><omgdi:waypoint x="175.0" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-DE9336AD-7E6D-45F8-B589-6AA3A210E8C0" id="BPMNEdge_sid-DE9336AD-7E6D-45F8-B589-6AA3A210E8C0"><omgdi:waypoint x="275.0" y="178.0"></omgdi:waypoint><omgdi:waypoint x="320.0" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-DE19D371-8E2C-4E55-A507-68EF07CAC0B3" id="BPMNEdge_sid-DE19D371-8E2C-4E55-A507-68EF07CAC0B3"><omgdi:waypoint x="420.0" y="178.0"></omgdi:waypoint><omgdi:waypoint x="465.0" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>

然后我们就可以做流程的部署操作了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/80094.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CI/CD—Docker中深入学习

1 容器数据卷 什么是容器数据卷&#xff1a; 将应用和环境打包成一个镜像&#xff01;数据&#xff1f;如果数据都在容器中&#xff0c;那么我们容器删除&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久 化。MySQL容器删除了&#xff0c;删容器跑路&#…

从excel中提取嵌入式图片的解决方法

1 发现问题 我的excel中有浮动图片和嵌入式图片&#xff0c;但是openpyxl的_image对象只提取到了浮动图片&#xff0c;通过阅读其源码发现&#xff0c;这是因为openpyxl只解析了drawing文件导致的&#xff0c;所以确定需要自己解析 2 解决思路 1、解析出media资源 2、解析…

Ansible环境搭建,CentOS 系列操作系统搭建Ansible集群环境

Ansible是一种自动化工具&#xff0c;基于Python写的&#xff0c;原理什么的就不过多再说了&#xff0c;详情参考&#xff1a;https://www.itwk.cc/post/403.html https://blog.csdn.net/qq_34185638/article/details/131079320?spm1001.2014.3001.5502 环境准备 HOSTNAMEIP…

大后台,小前台——组合式创新加速推进产教融合

2023年8月1日&#xff0c;由成都知了汇智科技有限公司组织召开的“2023产教融合项目推进闭门研讨会”于成都市高新区软件园G8区7楼正式举行&#xff0c;本次会议基于“产业链的用人需求、资本链的回报诉求、服务链的价值要求、教育链的延伸需求”进行交流探讨&#xff0c;形成稳…

Java-认识String

目录 一、String概念及创建 1.1 String概念 1.2 String的创建 二、String常用方法 2.1 String对象的比较 2.2 字符串查找 2.3 转化 2.4 字符串替换 2.5 字符串拆分 2.6字符串的截取 2.7 其他操作方法 2.8 字符串修改 三、面试题 一、String概念及创建 1.1 String概念 Java中…

2023上半年手机及数码行业分析报告(京东销售数据分析)

2023年上半年&#xff0c;手机市场迎来复苏&#xff0c;同环比来看&#xff0c;销量销额纷纷上涨。 而数码市场中&#xff0c;各个热门品类表现不一。微单相机及智能手表同比去年呈现增长态势&#xff0c;而笔记本电脑市场则出现下滑。 基于此现状&#xff0c;鲸参谋发布了20…

Git Submodule 更新子库失败 fatal: Unable to fetch in submodule path

编辑本地目录 .git/config 文件 在 [submodule “Assets/CommonModule”] 项下 加入 fetch refs/heads/:refs/remotes/origin/

AWS Amplify 部署node版本18报错修复

Amplify env&#xff1a;Amazon Linux:2 Build Error : Specified Node 18 but GLIBC_2.27 or GLIBC_2.28 not found on build 一、原因 报错原因是因为默认情况下&#xff0c;AWS Amplify 使用 Amazon Linux:2 作为其构建镜像&#xff0c;并自带 GLIBC 2.26。不过&#xff0c;…

每天一道leetcode:剑指 Offer 04. 二维数组中的查找(中等二分查找)

今日份题目&#xff1a; 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 示…

Qt中ffmpeg API存储和显示摄像头视频

Qt中ffmpeg API存储和显示摄像头视频的功能需要之前写的视频ffmpegAPI的视频播放的流程。 代码源码位置&#xff1a;https://download.csdn.net/download/qq_43812868/88157743?spm1001.2014.3001.5503 一、存储和显示摄像头的视频的流程 这是读取打开视频文件的流程&#x…

十三、ESP32PS2摇杆(ADC)

1. 运行效果 在上下左右操作PS2摇杆的时候,会检测到数据 2. 滑动电阻

Docker基本使用

查看本地镜像 查看本地&#xff1a;docker imagesPull镜像&#xff1a;docker pull nginx:latest登录镜像&#xff1a;docker login hub.docker.com -u **** -p ****制作镜像&#xff1a;docker build -t xxxx:v1push&#xff1a;docker push xxx:v1删除镜像:docker rmi #imag…

scikit-plot 使用笔记

scikit-plot是基于sklearn和Matplotlib的库&#xff0c;主要的功能是对训练好的模型进行可视化。 安装&#xff1a; pip install scikit-plot 功能1&#xff1a;评估指标可视化 scikitplot.metrics.plot_confusion_matrix快速展示模型预测结果和标签计算得到的混淆矩阵。 im…

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection - 密集目标检测中的焦点损失&#xff08;arXiv 2018&#xff09; 摘要1. 引言2. 相关工作References 声明&#xff1a;此翻译仅为个人学习记录 文章信息 标题&#xff1a;RetinaNet: Focal Loss for Dense Obje…

java: 无法访问org.springframework.web.bind.annotation.GetMapping(springboot构建时出现问题)

spring boot构建完成后出现以下问题 报错原因&#xff1a;SpringBoot 3.0以上版本要求JDK 17以上&#xff0c;jdk版本1.8 与 spring boot 3.0.1 版本不匹配 解决方法&#xff1a;

线性代数(二) 矩阵及其运算

前言 行列式det(A) 其实表示的只是一个值 ∣ a b c d ∣ a d − b c \begin{vmatrix} a & b\\ c & d\end{vmatrix} ad -bc ​ac​bd​ ​ad−bc&#xff0c;其基本变化是基于这个值是不变。而矩阵表示的是一个数表。 定义 矩阵与线性变换的关系 即得 ( a 11 a 12…

Wisej.NET Crack,Wisej.NET的核心功能

Wisej.NET Crack&#xff0c;Wisej.NET的核心功能 Wisej.NET是一个跨平台的web框架&#xff0c;用于使用.NET和C#/VB.NET而不是HTML和JavaScript构建现代HTML5应用程序。它包含创建任务关键型web应用程序所需的一切&#xff0c;包括UI组件、会话处理、状态管理和后端集成。借助…

C语言代码的x86-64汇编指令分析过程记录

先通过Xcode创建一个terminal APP&#xff0c;语言选择C。代码如下&#xff1a; #include <stdio.h>int main(int argc, const char * argv[]) {int a[7]{1,2,3,4,5,6,7};int *ptr (int*)(&a1);printf("%d\n",*(ptr));return 0; } 在return 0处打上断点&…

R3LIVE项目实战(3) — 双目相机与激光雷达联合标定

目录 3.1 lidar_camera_calib简介 3.2 环境准备 3.3 编译 3.4 运行数据集 (1) 单场景标定 (2) 多场景标定 3.5 使用您自己的传感器设置 3.5.1 采集相机图片和雷达bag数据 3.5.2 使用多场景标定 3.5.3 相机内参获取 3.5.4 运行标定程序 3.5.5 验证结果 源码地址&am…

嵌入式基础知识-存储管理

上篇介绍了存储器的相关知识&#xff0c;偏重的是硬件结构&#xff0c;本篇介绍存储管理的相关知识&#xff0c;偏重的是软件管理。 1 存储管理概念 操作系统&#xff0c;包括嵌入式系统&#xff0c;通常利用存储管理单元MMU&#xff08;Memory Management Unit&#xff09;来…