[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

posted on 2023-03-09 21:32  共感的艺术  阅读(178)  评论(0编辑  收藏  举报