本资源提供基于Flowable工作流引擎在Oracle数据库中的详细建表SQL脚本,涵盖流程定义、任务管理等核心模块,助力快速搭建企业级业务流程管理系统。
解决Flowable自动更新数据库表结构报错的问题可以通过关闭自动更新配置并手动创建表来实现。
### Flowable版本与环境
- **Flowable**:6.8.0.0 版本。
- **数据库**:Oracle。
### 解决步骤
1. 创建对应的schema,或者替换脚本中的`WORKFLOW` schema名称。
2. 在执行建表脚本前,先删除所有与flowable相关的表以避免错误发生。
3. 修改配置项 `flowable.database-schema-update=false` 以便禁用自动更新功能。
### 工作流框架Flowable在Oracle环境下的建表SQL及配置详解
#### 问题背景
使用Flowable工作流框架时,可能会遇到数据库表结构更新报错的情况。一种解决方案是关闭其自动更新机制,并手动创建所需的数据库表结构。
#### 准备工作
1. **确定版本**:本段落档适用于Flowable 6.8.0.0。
2. **环境设置**:
- 数据库为Oracle。
3. **Schema设定**:
- 创建名为`WORKFLOW`的schema,或者根据实际情况替换脚本中的名称。
4. **配置项调整**:将项目中 `flowable.database-schema-update=false` 设置。
#### 手动创建数据库表结构
1. **通用属性表 ACT_GE_PROPERTY**
```sql
CREATE TABLE WORKFLOW.ACT_GE_PROPERTY (
NAME_N NVARCHAR2(64),
VALUE_N NVARCHAR2(300),
REV INTEGER,
PRIMARY KEY (NAME_N)
);
```
- 插入初始数据:
```sql
INSERT INTO WORKFLOW.ACT_GE_PROPERTY VALUES (common.schema.version, 6.8.0.0, 1);
INSERT INTO WORKFLOW.ACT_GE_PROPERTY VALUES (next.dbid, 1, 1);
```
2. **字节数据表 ACT_GE_BYTEARRAY**
```sql
CREATE TABLE WORKFLOW.ACT_GE_BYTEARRAY (
ID_N NVARCHAR2(64),
REV INTEGER,
NAME_N NVARCHAR2(255),
DEPLOYMENT_ID_N NVARCHAR2(64),
BYTES_ BLOB,
GENERATED NUMBER(1, 0) CHECK (GENERATED IN (1, 0)),
PRIMARY KEY (ID_N)
);
```
3. **实体链接表 ACT_RU_ENTITYLINK**
```sql
CREATE TABLE WORKFLOW.ACT_RU_ENTITYLINK (
ID_N NVARCHAR2(64),
REV INTEGER,
CREATE_TIME_ TIMESTAMP(6),
LINK_TYPE_N NVARCHAR2(255),
SCOPE_ID_N NVARCHAR2(255),
SUB_SCOPE_ID_N NVARCHAR2(255),
SCOPE_TYPE_N NVARCHAR2(255),
SCOPE_DEFINITION_ID_N NVARCHAR2(255),
PARENT_ELEMENT_ID_N NVARCHAR2(255),
REF_SCOPE_ID_N NVARCHAR2(255),
REF_SCOPE_TYPE_N NVARCHAR2(255),
REF_SCOPE_DEFINITION_ID_N NVARCHAR2(255),
ROOT_SCOPE_ID_N NVARCHAR2(255),
ROOT_SCOPE_TYPE_N NVARCHAR2(255),
HIERARCHY_TYPE_N NVARCHAR2(255),
PRIMARY KEY (ID_N)
);
```
4. **索引创建**
```sql
CREATE INDEX ACT_IDX_ENT_LNK_SCOPE ON WORKFLOW.ACT_RU_ENTITYLINK (SCOPE_ID_N, SCOPE_TYPE_N, LINK_TYPE_N);
CREATE INDEX ACT_IDX_ENT_LNK_REF_SCOPE ON WORKFLOW.ACT_RU_ENTITYLINK (REF_SCOPE_ID_N, REF_SCOPE_TYPE_N, LINK_TYPE_N);
CREATE INDEX ACT_IDX_ENT_LNK_ROOT_SCOPE ON WORKFLOW.ACT_RU_ENTITYLINK (ROOT_SCOPE_ID_N, ROOT_SCOPE_TYPE_N, LINK_TYPE_N);
CREATE INDEX ACT_IDX_ENT_LNK_SCOPE_DEF ON WORKFLOW.ACT_RU_ENTITYLINK (SCOPE_DEFINITION_ID_N, SCOPE_TYPE_N, LINK_TYPE_N);
```
5. **历史实体链接表初始数据插入**
```sql
INSERT INTO WORKFLOW.ACT_GE_PROPERTY VALUES (entitylink.schema.version, 6.8.0.0, 1);
```
#### 总结
通过上述步骤,已成功在Oracle环境下为Flowable 6.8.0版本手动创建了必要的数据库表结构。这种方式可以避免自动更新导致的问题,并确保项目稳定运行。根据具体需求,可能还需进一步调整其他配置和表结构。