[java]-activiti-springboot-activiti7笔记
springboot-activiti7笔记
一、安装依赖
github上Activiti的 gitbook[https://activiti.gitbook.io/activiti-7-developers-guide/getting-started/getting-started-activiti-core]
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M5</version>
<scope>import</scope>
<type>pom</type>
</dependency>
问题
1.M5有BUG,每次启动部署,都会在deployment表中生成一条springAutoXXX的数据
2.maven镜像为阿里云的,在导入过程中找不到上面的jar包
3.启动项目报错: Caused by: java.sql.SQLSyntaxErrorException: Table 'activiti.act_ge_property
4.数据库表里面缺失user表
解决
1.使用M4版本
2.在阿里云maven官网上搜索坐标 artifacId
地址:https://maven.aliyun.com/mvn/search
分别搜索activiti-spring-boot-starter、activiti-dependencies(不要带parent的)
选中导入坐标
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M4</version>
</dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M4</version>
<type>pom.sha256</type>
</dependency>
3.解决:
配置mysql连接时加上:nullCatalogMeansCurrent=true
url: jdbc:mysql://localhost:3306/myActiviti?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
4.导入相关的数据库表
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- 创建用户表
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`address` varchar(64) DEFAULT NULL COMMENT '联系地址',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
`roles` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '角色',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- 填充用户表
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admincn', 'beijing', 'admin', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_ADMIN');
INSERT INTO `user` VALUES ('2', 'bajiecn', 'shanghang', 'bajie', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam,g_bajiewukong');
INSERT INTO `user` VALUES ('3', 'wukongcn', 'beijing', 'wukong', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam');
INSERT INTO `user` VALUES ('4', 'salaboycn', 'beijing', 'salaboy', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam');
-- ----------------------------
-- 修复Activiti7的M4版本缺失字段Bug
-- ----------------------------
alter table ACT_RE_DEPLOYMENT add column PROJECT_RELEASE_VERSION_ varchar(255) DEFAULT NULL;
alter table ACT_RE_DEPLOYMENT add column VERSION_ varchar(255) DEFAULT NULL;
-- ----------------------------
-- 动态表单数据存储
-- ----------------------------
DROP TABLE IF EXISTS `formdata`;
CREATE TABLE `formdata` (
`PROC_DEF_ID_` varchar(64) DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`FORM_KEY_` varchar(255) DEFAULT NULL,
`Control_ID_` varchar(100) DEFAULT NULL,
`Control_VALUE_` varchar(2000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、BPMN-js安装
# Activiti7整合BPMN-JS说明
### 安装Node.js
* 下载地址https://nodejs.org/en/download/
### BPMN-JS地址
* 下载源码https://github.com/bpmn-io/bpmn-js-examples/
基于有属性面板的例子去修改
https://github.com/bpmn-io/bpmn-js-examples/tree/master/properties-panel 属性面板
https://github.com/bpmn-io/bpmn-js-examples/tree/master/i18n 汉化说明
### 在resources文件夹下再创建一个resources文件夹,
实际路径为resources/resources/
### 把从github下载的bpmn-js-examples-master.zip压缩包解压
### 拷贝properties-panel到resources/resources/并改文件夹名字为bpmnjs
实际路径为resources/resources/bpmnjs
### 解压bpmnjs初始化,并资源拷贝到以下路径
bpmnjs初始化.zip
resources/resources/bpmnjs/resources
### 打开resources/resources/bpmnjs/app/index.js
### 注释以下内容
import propertiesProviderModule from 'bpmn-js-properties-panel/lib/provider/camunda';
import camundaModdleDescriptor from 'camunda-bpmn-moddle/resources/camunda.json';
### 注释以下内容
var bpmnModeler = new BpmnModeler({
container: canvas,
propertiesPanel: {
parent: '#js-properties-panel'
},
additionalModules: [
propertiesPanelModule,
propertiesProviderModule
],
moddleExtensions: {
camunda: camundaModdleDescriptor
}
});
### 添加以下内容
import propertiesProviderModule from '../resources/properties-panel/provider/activiti';
import activitiModdleDescriptor from '../resources/activiti.json';
import customTranslate from '../resources/customTranslate/customTranslate';
import customControlsModule from '../resources/customControls';
// 添加翻译组件
var customTranslateModule = {
translate: ['value', customTranslate]
};
var bpmnModeler = new BpmnModeler({
container: canvas,
propertiesPanel: {
parent: '#js-properties-panel'
},
additionalModules: [
propertiesPanelModule,
propertiesProviderModule,
customControlsModule,
customTranslateModule
],
moddleExtensions: {
activiti:activitiModdleDescriptor
}
});
### 使用命令行工具打开resources/resources/bpmnjs/并执行命令
npm install
npm run dev
### 增加BPMNJS可执行选框默认勾选,打开resources/newDiagram.bpmn
### 属性修改为isExecutable="true
<bpmn2:process id="Process_1" isExecutable="true">
复制npmnjs初始化里面除了readme的5个文件,覆盖到bpmnjs\resources里
解决乱码问题
在bpmnjs\dist\index.html 和bpmnjs\app\index.html里加上
<meta charset="UTF-8" />
位置在
<head>下第一句即可
三、动态表单
1.Activiti表单字段约定内容
表单控件命名约束: FormProperty_Oueitp2-_!类型-_!名称-_!默认值-_!是否参数
说明:
默认值:无、字符常量、 FormProperty_开头定义过的控件ID _
是否参数: f为不是参数, s是字符, t是时间(不需要int,因为这里int等价于 string)
例子:
FormProperty_0h8ood2-_!string-_!姓名-_!请输入姓名-_!f
FormProperty_0rp7u71-_!long-_!年龄-_!无-_!s
后面把int改为了long
注意: 表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取, 只能获取表单key"task. getFormKey()"当做任务key
2.动态表单提交内容约定:
Activiti表单提交参数约定内容
formData:控件id-_!控件值-_!是否参数!_!控件id-_!控件值-_!是否参数
例子:
FormProperty_Olovri0-_!不是参数-_!f!_!FormProperty_1iu6onu-_!我是参数-_!s
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-03-09 人形词云,根据图片黑白形状绘制词云
2020-03-09 汉化的simple词云
2020-03-09 对于数据的平均值处理
2020-03-09 文字替换成函数返回数字进行排序
2020-03-09 校验
2020-03-09 Python:使用lambda对列表(list)和字典(dict)排序
2020-03-09 python中的数据排序