variable);
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
index b5f4c6deb..3946af164 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java
@@ -9,6 +9,9 @@ import org.dromara.common.core.domain.dto.DictTypeDTO;
import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
+import org.dromara.warm.flow.core.FlowEngine;
+import org.dromara.warm.flow.core.utils.CollUtil;
+import org.dromara.warm.flow.core.utils.ExpressionUtil;
import org.dromara.warm.flow.ui.service.NodeExtService;
import org.dromara.warm.flow.ui.vo.NodeExt;
import org.dromara.workflow.common.ConditionalOnEnable;
@@ -45,7 +48,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
CopySettingEnum.class.getSimpleName(),
Map.of(
"label", "抄送对象",
- "type", 2,
+ "type", 5,
"must", false,
"multiple", false,
"desc", "设置该节点的抄送办理人"
@@ -56,7 +59,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
"type", 2,
"must", false,
"multiple", false,
- "desc", "节点执行时可以使用的自定义参数"
+ "desc", "节点执行时可设置自定义参数,多个参数以逗号分隔,如:key1=value1,key2=value2"
),
ButtonPermissionEnum.class.getSimpleName(),
Map.of(
@@ -137,7 +140,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
childNode.setCode(simpleName);
// label名称
childNode.setLabel(Convert.toStr(map.get("label")));
- // 1:输入框 2:文本域 3:下拉框 4:选择框
+ // 1:输入框 2:文本域 3:下拉框 4:选择框 5:用户选择器
childNode.setType(Convert.toInt(map.get("type"), 1));
// 是否必填
childNode.setMust(Convert.toBool(map.get("must"), false));
@@ -170,7 +173,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
childNode.setCode(dictType);
// label名称
childNode.setLabel(dictTypeDTO.getDictName());
- // 1:输入框 2:文本域 3:下拉框 4:选择框
+ // 1:输入框 2:文本域 3:下拉框 4:选择框 5:用户选择器
childNode.setType(3);
// 是否必填
childNode.setMust(false);
@@ -197,15 +200,16 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
* 示例 JSON:
* [
* {"code": "ButtonPermissionEnum", "value": "back,termination"},
- * {"code": "CopySettingEnum", "value": "1"},
+ * {"code": "CopySettingEnum", "value": "1,3,4,#{@spelRuleComponent.selectDeptLeaderById(#deptId", "#roleId)}"},
* {"code": "VariablesEnum", "value": "key1=value1,key2=value2"}
* ]
*
- * @param ext 扩展属性 JSON 字符串
+ * @param ext 扩展属性 JSON 字符串
+ * @param variable 流程变量
* @return NodeExtVo 对象,封装按钮权限列表、抄送对象集合和自定义参数 Map
*/
@Override
- public NodeExtVo parseNodeExt(String ext) {
+ public NodeExtVo parseNodeExt(String ext, Map variable) {
NodeExtVo nodeExtVo = new NodeExtVo();
// 解析 JSON 为 Dict 列表
@@ -234,8 +238,20 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
nodeExtVo.setButtonPermissions(buttonList);
} else if (CopySettingEnum.class.getSimpleName().equals(code)) {
+ List permissions = spelSmartSplit(value).stream()
+ .map(s -> {
+ List result = ExpressionUtil.evalVariable(s, variable);
+ if (CollUtil.isNotEmpty(result)) {
+ return result;
+ }
+ return Collections.singletonList(s);
+ }).filter(Objects::nonNull)
+ .flatMap(List::stream)
+ .distinct()
+ .collect(Collectors.toList());
+ List copySettings = FlowEngine.permissionHandler().convertPermissions(permissions);
// 解析抄送对象 ID 集合
- nodeExtVo.setCopySettings(StringUtils.str2Set(value, StringUtils.SEPARATOR));
+ nodeExtVo.setCopySettings(new HashSet<>(copySettings));
} else if (VariablesEnum.class.getSimpleName().equals(code)) {
// 解析自定义参数
@@ -254,4 +270,82 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
return nodeExtVo;
}
+ /**
+ * 按逗号分割字符串,但保留 #{...} 表达式和字符串常量中的逗号
+ */
+ private static List spelSmartSplit(String str) {
+ List result = new ArrayList<>();
+ if (str == null || str.trim().isEmpty()) {
+ return result;
+ }
+
+ StringBuilder token = new StringBuilder();
+ // #{...} 的嵌套深度
+ int depth = 0;
+ // 是否在字符串常量中(" 或 ')
+ boolean inString = false;
+ // 当前字符串引号类型
+ char stringQuote = 0;
+
+ for (int i = 0; i < str.length(); i++) {
+ char c = str.charAt(i);
+
+ // 检测进入 SpEL 表达式 #{...}
+ if (!inString && c == '#' && depth == 0 && checkNext(str, i, '{')) {
+ depth++;
+ token.append("#{");
+ // 跳过 {
+ i++;
+ continue;
+ }
+
+ // 在表达式中遇到 { 或 } 改变嵌套深度
+ if (!inString && depth > 0) {
+ if (c == '{') {
+ depth++;
+ } else if (c == '}') {
+ depth--;
+ }
+ token.append(c);
+ continue;
+ }
+
+ // 检测字符串开始/结束
+ if (depth > 0 && (c == '"' || c == '\'')) {
+ if (!inString) {
+ inString = true;
+ stringQuote = c;
+ } else if (stringQuote == c) {
+ inString = false;
+ }
+ token.append(c);
+ continue;
+ }
+
+ // 外层逗号才分割
+ if (c == ',' && depth == 0 && !inString) {
+ String part = token.toString().trim();
+ if (!part.isEmpty()) {
+ result.add(part);
+ }
+ token.setLength(0);
+ continue;
+ }
+
+ token.append(c);
+ }
+
+ // 添加最后一个
+ String part = token.toString().trim();
+ if (!part.isEmpty()) {
+ result.add(part);
+ }
+
+ return result;
+ }
+
+ private static boolean checkNext(String str, int index, char expected) {
+ return index + 1 < str.length() && str.charAt(index + 1) == expected;
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
index cf0671899..fe73642d1 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java
@@ -598,7 +598,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
if (ObjectUtil.isNull(flowNode)) {
throw new NullPointerException("当前【" + flowTaskVo.getNodeCode() + "】节点编码不存在");
}
- NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt());
+ NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt(), instance.getVariableMap());
//设置按钮权限
flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions());
if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql
index d8768796c..571574739 100644
--- a/script/sql/oracle/oracle_ry_workflow.sql
+++ b/script/sql/oracle/oracle_ry_workflow.sql
@@ -17,7 +17,9 @@ create table FLOW_DEFINITION
LISTENER_PATH VARCHAR2(500),
EXT VARCHAR2(500),
CREATE_TIME DATE,
+ CREATE_BY VARCHAR2(64) default '',
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
);
@@ -40,7 +42,9 @@ comment on column FLOW_DEFINITION.LISTENER_TYPE is '监听器类型';
comment on column FLOW_DEFINITION.LISTENER_PATH is '监听器路径';
comment on column FLOW_DEFINITION.EXT is '扩展字段,预留给业务系统使用';
comment on column FLOW_DEFINITION.CREATE_TIME is '创建时间';
+comment on column FLOW_DEFINITION.CREATE_BY is '创建人';
comment on column FLOW_DEFINITION.UPDATE_TIME is '更新时间';
+comment on column FLOW_DEFINITION.UPDATE_BY is '更新人';
comment on column FLOW_DEFINITION.DEL_FLAG is '删除标志';
comment on column FLOW_DEFINITION.TENANT_ID is '租户id';
@@ -62,7 +66,9 @@ create table FLOW_NODE
FORM_PATH VARCHAR2(100),
VERSION VARCHAR2(20),
CREATE_TIME DATE,
+ CREATE_BY VARCHAR2(64) default '',
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
EXT CLOB,
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40),
@@ -89,7 +95,9 @@ comment on column FLOW_NODE.FORM_CUSTOM is '审批表单是否自定义 (Y是 N
comment on column FLOW_NODE.FORM_PATH is '审批表单路径';
comment on column FLOW_NODE.VERSION is '版本';
comment on column FLOW_NODE.CREATE_TIME is '创建时间';
+comment on column FLOW_NODE.CREATE_BY is '创建人';
comment on column FLOW_NODE.UPDATE_TIME is '更新时间';
+comment on column FLOW_NODE.UPDATE_BY is '更新人';
comment on column FLOW_NODE.EXT is '节点扩展属性';
comment on column FLOW_NODE.DEL_FLAG is '删除标志';
comment on column FLOW_NODE.TENANT_ID is '租户id';
@@ -108,7 +116,9 @@ create table FLOW_SKIP
SKIP_CONDITION VARCHAR2(200),
COORDINATE VARCHAR2(100),
CREATE_TIME DATE,
+ CREATE_BY VARCHAR2(64) default '',
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
);
@@ -128,7 +138,9 @@ comment on column FLOW_SKIP.SKIP_TYPE is '跳转类型 (PASS审批通过 REJECT
comment on column FLOW_SKIP.SKIP_CONDITION is '跳转条件';
comment on column FLOW_SKIP.COORDINATE is '坐标';
comment on column FLOW_SKIP.CREATE_TIME is '创建时间';
+comment on column FLOW_SKIP.CREATE_BY is '创建人';
comment on column FLOW_SKIP.UPDATE_TIME is '更新时间';
+comment on column FLOW_SKIP.UPDATE_BY is '更新人';
comment on column FLOW_SKIP.DEL_FLAG is '删除标志';
comment on column FLOW_SKIP.TENANT_ID is '租户id';
@@ -144,9 +156,10 @@ create table FLOW_INSTANCE
FLOW_STATUS VARCHAR2(20),
ACTIVITY_STATUS NUMBER(1) default 1,
DEF_JSON CLOB,
- CREATE_BY VARCHAR2(64) default '',
CREATE_TIME DATE,
+ CREATE_BY VARCHAR2(64) default '',
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
EXT VARCHAR2(500),
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
@@ -168,7 +181,9 @@ comment on column FLOW_INSTANCE.ACTIVITY_STATUS is '流程激活状态(0挂起
comment on column FLOW_INSTANCE.DEF_JSON is '流程定义json';
comment on column FLOW_INSTANCE.CREATE_BY is '创建者';
comment on column FLOW_INSTANCE.CREATE_TIME is '创建时间';
+comment on column FLOW_INSTANCE.CREATE_BY is '创建人';
comment on column FLOW_INSTANCE.UPDATE_TIME is '更新时间';
+comment on column FLOW_INSTANCE.UPDATE_BY is '更新人';
comment on column FLOW_INSTANCE.EXT is '扩展字段,预留给业务系统使用';
comment on column FLOW_INSTANCE.DEL_FLAG is '删除标志';
comment on column FLOW_INSTANCE.TENANT_ID is '租户id';
@@ -185,7 +200,9 @@ create table FLOW_TASK
FORM_CUSTOM VARCHAR2(1) default 'N',
FORM_PATH VARCHAR2(100),
CREATE_TIME DATE,
+ CREATE_BY VARCHAR2(64) default '',
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
);
@@ -204,7 +221,9 @@ comment on column FLOW_TASK.FLOW_STATUS is '流程状态(0待提交 1审批中
comment on column FLOW_TASK.FORM_CUSTOM is '审批表单是否自定义 (Y是 N否)';
comment on column FLOW_TASK.FORM_PATH is '审批表单路径';
comment on column FLOW_TASK.CREATE_TIME is '创建时间';
+comment on column FLOW_TASK.CREATE_BY is '创建人';
comment on column FLOW_TASK.UPDATE_TIME is '更新时间';
+comment on column FLOW_TASK.UPDATE_BY is '更新人';
comment on column FLOW_TASK.DEL_FLAG is '删除标志';
comment on column FLOW_TASK.TENANT_ID is '租户id';
@@ -231,6 +250,7 @@ create table FLOW_HIS_TASK
EXT CLOB,
CREATE_TIME DATE,
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
@@ -258,9 +278,10 @@ comment on column FLOW_HIS_TASK.VARIABLE is '任务变量';
comment on column FLOW_HIS_TASK.EXT is '扩展字段,预留给业务系统使用';
comment on column FLOW_HIS_TASK.CREATE_TIME is '任务开始时间';
comment on column FLOW_HIS_TASK.UPDATE_TIME is '审批完成时间';
+comment on column FLOW_HIS_TASK.UPDATE_BY is '更新人';
comment on column FLOW_HIS_TASK.DEL_FLAG is '删除标志';
comment on column FLOW_HIS_TASK.TENANT_ID is '租户id';
-comment on column FLOW_HIS_TASK.APPROVER is '审批者';
+comment on column FLOW_HIS_TASK.APPROVER is '审批人';
comment on column FLOW_HIS_TASK.COOPERATE_TYPE is '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)';
comment on column FLOW_HIS_TASK.COLLABORATOR is '协作人';
@@ -273,6 +294,7 @@ create table FLOW_USER
CREATE_TIME DATE,
CREATE_BY VARCHAR2(80),
UPDATE_TIME DATE,
+ UPDATE_BY VARCHAR2(64) default '',
DEL_FLAG VARCHAR2(1) default '0',
TENANT_ID VARCHAR2(40)
);
@@ -288,6 +310,7 @@ comment on column FLOW_USER.ASSOCIATED is '任务表id';
comment on column FLOW_USER.CREATE_TIME is '创建时间';
comment on column FLOW_USER.CREATE_BY is '节点名称';
comment on column FLOW_USER.UPDATE_TIME is '更新时间';
+comment on column FLOW_USER.UPDATE_BY is '更新人';
comment on column FLOW_USER.DEL_FLAG is '删除标志';
comment on column FLOW_USER.TENANT_ID is '租户id';
@@ -299,18 +322,18 @@ create index USER_ASSOCIATED_IDX on FLOW_USER (ASSOCIATED);
-- ----------------------------
CREATE TABLE flow_category
(
- category_id NUMBER (20) NOT NULL,
- tenant_id VARCHAR2 (20) DEFAULT '000000',
- parent_id NUMBER (20) DEFAULT 0,
- ancestors VARCHAR2 (500) DEFAULT '',
- category_name VARCHAR2 (30) NOT NULL,
- order_num NUMBER (4) DEFAULT 0,
- del_flag CHAR(1) DEFAULT '0',
- create_dept NUMBER (20),
- create_by NUMBER (20),
- create_time DATE,
- update_by NUMBER (20),
- update_time DATE
+ category_id NUMBER(20) NOT NULL,
+ tenant_id VARCHAR2(20) DEFAULT '000000',
+ parent_id NUMBER(20) DEFAULT 0,
+ ancestors VARCHAR2(500) DEFAULT '',
+ category_name VARCHAR2(30) NOT NULL,
+ order_num NUMBER(4) DEFAULT 0,
+ del_flag CHAR(1) DEFAULT '0',
+ create_dept NUMBER(20),
+ create_by NUMBER(20),
+ create_time DATE,
+ update_by NUMBER(20),
+ update_time DATE
);
alter table flow_category add constraint pk_flow_category primary key (category_id);
@@ -344,19 +367,19 @@ INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离职', 2,
-- 流程spel表达式定义表
-- ----------------------------
CREATE TABLE flow_spel (
- id NUMBER(20) NOT NULL,
- component_name VARCHAR2(255),
- method_name VARCHAR2(255),
- method_params VARCHAR2(255),
- view_spel VARCHAR2(255),
- remark VARCHAR2(255),
- status CHAR(1) DEFAULT '0',
- del_flag CHAR(1) DEFAULT '0',
- create_dept NUMBER(20),
- create_by NUMBER(20),
- create_time DATE,
- update_by NUMBER(20),
- update_time DATE
+ id NUMBER(20) NOT NULL,
+ component_name VARCHAR2(255),
+ method_name VARCHAR2(255),
+ method_params VARCHAR2(255),
+ view_spel VARCHAR2(255),
+ remark VARCHAR2(255),
+ status CHAR(1) DEFAULT '0',
+ del_flag CHAR(1) DEFAULT '0',
+ create_dept NUMBER(20),
+ create_by NUMBER(20),
+ create_time DATE,
+ update_by NUMBER(20),
+ update_time DATE
);
alter table flow_spel add constraint pk_flow_spel primary key (id);
@@ -418,19 +441,19 @@ COMMENT ON COLUMN flow_instance_biz_ext.business_id IS '业务Id';
-- ----------------------------
CREATE TABLE test_leave
(
- id NUMBER (20) NOT NULL,
- tenant_id VARCHAR2 (20) DEFAULT '000000',
- apply_code VARCHAR2 (50) NOT NULL,
- leave_type VARCHAR2 (255) NOT NULL,
+ id NUMBER (20) NOT NULL,
+ tenant_id VARCHAR2 (20) DEFAULT '000000',
+ apply_code VARCHAR2 (50) NOT NULL,
+ leave_type VARCHAR2 (255) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
- leave_days NUMBER (10) NOT NULL,
- remark VARCHAR2 (255),
- status VARCHAR2 (255),
+ leave_days NUMBER (10) NOT NULL,
+ remark VARCHAR2 (255),
+ status VARCHAR2 (255),
create_dept NUMBER (20),
- create_by NUMBER (20),
+ create_by NUMBER (20),
create_time DATE,
- update_by NUMBER (20),
+ update_by NUMBER (20),
update_time DATE
);
diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql
index 7df5ab0e1..15060d03d 100644
--- a/script/sql/postgres/postgres_ry_workflow.sql
+++ b/script/sql/postgres/postgres_ry_workflow.sql
@@ -14,7 +14,9 @@ CREATE TABLE flow_definition
listener_path varchar(400) NULL,
ext varchar(500) NULL,
create_time timestamp NULL,
+ create_by varchar(64) NULL DEFAULT '':: character varying,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
CONSTRAINT flow_definition_pkey PRIMARY KEY (id)
@@ -35,7 +37,9 @@ COMMENT ON COLUMN flow_definition.listener_type IS '监听器类型';
COMMENT ON COLUMN flow_definition.listener_path IS '监听器路径';
COMMENT ON COLUMN flow_definition.ext IS '扩展字段,预留给业务系统使用';
COMMENT ON COLUMN flow_definition.create_time IS '创建时间';
+COMMENT ON COLUMN flow_definition.create_by IS '创建人';
COMMENT ON COLUMN flow_definition.update_time IS '更新时间';
+COMMENT ON COLUMN flow_definition.update_by IS '更新人';
COMMENT ON COLUMN flow_definition.del_flag IS '删除标志';
COMMENT ON COLUMN flow_definition.tenant_id IS '租户id';
@@ -57,8 +61,10 @@ CREATE TABLE flow_node
form_custom bpchar(1) NULL DEFAULT 'N':: character varying,
form_path varchar(100) NULL,
"version" varchar(20) NOT NULL,
- create_time timestamp NULL,
- update_time timestamp NULL,
+ create_time timestamp NULL,
+ create_by varchar(64) NULL DEFAULT '':: character varying,
+ update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
ext text NULL,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
@@ -83,7 +89,9 @@ COMMENT ON COLUMN flow_node.form_custom IS '审批表单是否自定义(Y是 N
COMMENT ON COLUMN flow_node.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_node."version" IS '版本';
COMMENT ON COLUMN flow_node.create_time IS '创建时间';
+COMMENT ON COLUMN flow_node.create_by IS '创建人';
COMMENT ON COLUMN flow_node.update_time IS '更新时间';
+COMMENT ON COLUMN flow_node.update_by IS '更新人';
COMMENT ON COLUMN flow_node.ext IS '节点扩展属性';
COMMENT ON COLUMN flow_node.del_flag IS '删除标志';
COMMENT ON COLUMN flow_node.tenant_id IS '租户id';
@@ -102,7 +110,9 @@ CREATE TABLE flow_skip
skip_condition varchar(200) NULL,
coordinate varchar(100) NULL,
create_time timestamp NULL,
+ create_by varchar(64) NULL DEFAULT '':: character varying,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
CONSTRAINT flow_skip_pkey PRIMARY KEY (id)
@@ -120,7 +130,9 @@ COMMENT ON COLUMN flow_skip.skip_type IS '跳转类型(PASS审批通过 REJECT
COMMENT ON COLUMN flow_skip.skip_condition IS '跳转条件';
COMMENT ON COLUMN flow_skip.coordinate IS '坐标';
COMMENT ON COLUMN flow_skip.create_time IS '创建时间';
+COMMENT ON COLUMN flow_skip.create_by IS '创建人';
COMMENT ON COLUMN flow_skip.update_time IS '更新时间';
+COMMENT ON COLUMN flow_skip.update_by IS '更新人';
COMMENT ON COLUMN flow_skip.del_flag IS '删除标志';
COMMENT ON COLUMN flow_skip.tenant_id IS '租户id';
@@ -136,9 +148,10 @@ CREATE TABLE flow_instance
flow_status varchar(20) NOT NULL,
activity_status int2 NOT NULL DEFAULT 1,
def_json text NULL,
- create_by varchar(64) NULL DEFAULT '':: character varying,
create_time timestamp NULL,
+ create_by varchar(64) NULL DEFAULT '':: character varying,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
ext varchar(500) NULL,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
@@ -156,9 +169,10 @@ COMMENT ON COLUMN flow_instance.variable IS '任务变量';
COMMENT ON COLUMN flow_instance.flow_status IS '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)';
COMMENT ON COLUMN flow_instance.activity_status IS '流程激活状态(0挂起 1激活)';
COMMENT ON COLUMN flow_instance.def_json IS '流程定义json';
-COMMENT ON COLUMN flow_instance.create_by IS '创建者';
COMMENT ON COLUMN flow_instance.create_time IS '创建时间';
+COMMENT ON COLUMN flow_instance.create_by IS '创建人';
COMMENT ON COLUMN flow_instance.update_time IS '更新时间';
+COMMENT ON COLUMN flow_instance.update_by IS '更新人';
COMMENT ON COLUMN flow_instance.ext IS '扩展字段,预留给业务系统使用';
COMMENT ON COLUMN flow_instance.del_flag IS '删除标志';
COMMENT ON COLUMN flow_instance.tenant_id IS '租户id';
@@ -171,11 +185,13 @@ CREATE TABLE flow_task
node_code varchar(100) NOT NULL,
node_name varchar(100) NULL,
node_type int2 NOT NULL,
- flow_status varchar(20) NOT NULL,
+ flow_status varchar(20) NOT NULL,
form_custom bpchar(1) NULL DEFAULT 'N':: character varying,
form_path varchar(100) NULL,
create_time timestamp NULL,
+ create_by varchar(64) NULL DEFAULT '':: character varying,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
CONSTRAINT flow_task_pkey PRIMARY KEY (id)
@@ -192,7 +208,9 @@ COMMENT ON COLUMN flow_task.flow_status IS '流程状态(0待提交 1审批中
COMMENT ON COLUMN flow_task.form_custom IS '审批表单是否自定义(Y是 N否)';
COMMENT ON COLUMN flow_task.form_path IS '审批表单路径';
COMMENT ON COLUMN flow_task.create_time IS '创建时间';
+COMMENT ON COLUMN flow_task.create_by IS '创建人';
COMMENT ON COLUMN flow_task.update_time IS '更新时间';
+COMMENT ON COLUMN flow_task.update_by IS '更新人';
COMMENT ON COLUMN flow_task.del_flag IS '删除标志';
COMMENT ON COLUMN flow_task.tenant_id IS '租户id';
@@ -219,6 +237,7 @@ CREATE TABLE flow_his_task
variable text NULL,
create_time timestamp NULL,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
CONSTRAINT flow_his_task_pkey PRIMARY KEY (id)
@@ -234,7 +253,7 @@ COMMENT ON COLUMN flow_his_task.node_name IS '开始节点名称';
COMMENT ON COLUMN flow_his_task.node_type IS '开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)';
COMMENT ON COLUMN flow_his_task.target_node_code IS '目标节点编码';
COMMENT ON COLUMN flow_his_task.target_node_name IS '结束节点名称';
-COMMENT ON COLUMN flow_his_task.approver IS '审批者';
+COMMENT ON COLUMN flow_his_task.approver IS '审批人';
COMMENT ON COLUMN flow_his_task.cooperate_type IS '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)';
COMMENT ON COLUMN flow_his_task.collaborator IS '协作人';
COMMENT ON COLUMN flow_his_task.skip_type IS '流转类型(PASS通过 REJECT退回 NONE无动作)';
@@ -246,6 +265,7 @@ COMMENT ON COLUMN flow_his_task.variable IS '任务变量';
COMMENT ON COLUMN flow_his_task.ext IS '扩展字段,预留给业务系统使用';
COMMENT ON COLUMN flow_his_task.create_time IS '任务开始时间';
COMMENT ON COLUMN flow_his_task.update_time IS '审批完成时间';
+COMMENT ON COLUMN flow_his_task.update_by IS '更新人';
COMMENT ON COLUMN flow_his_task.del_flag IS '删除标志';
COMMENT ON COLUMN flow_his_task.tenant_id IS '租户id';
@@ -258,6 +278,7 @@ CREATE TABLE flow_user
create_time timestamp NULL,
create_by varchar(80) NULL,
update_time timestamp NULL,
+ update_by varchar(64) NULL DEFAULT '':: character varying,
del_flag bpchar(1) NULL DEFAULT '0':: character varying,
tenant_id varchar(40) NULL,
CONSTRAINT flow_user_pk PRIMARY KEY (id)
@@ -273,6 +294,7 @@ COMMENT ON COLUMN flow_user.associated IS '任务表id';
COMMENT ON COLUMN flow_user.create_time IS '创建时间';
COMMENT ON COLUMN flow_user.create_by IS '创建人';
COMMENT ON COLUMN flow_user.update_time IS '更新时间';
+COMMENT ON COLUMN flow_user.update_by IS '更新人';
COMMENT ON COLUMN flow_user.del_flag IS '删除标志';
COMMENT ON COLUMN flow_user.tenant_id IS '租户id';
diff --git a/script/sql/ry_workflow.sql b/script/sql/ry_workflow.sql
index 7419d6fb7..ea8f30aa4 100644
--- a/script/sql/ry_workflow.sql
+++ b/script/sql/ry_workflow.sql
@@ -17,7 +17,9 @@ CREATE TABLE `flow_definition`
`listener_path` varchar(400) DEFAULT NULL COMMENT '监听器路径',
`ext` varchar(500) DEFAULT NULL COMMENT '业务详情 存业务表对象json字符串',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
@@ -42,7 +44,9 @@ CREATE TABLE `flow_node`
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`version` varchar(20) NOT NULL COMMENT '版本',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`ext` text COMMENT '节点扩展属性',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
@@ -62,7 +66,9 @@ CREATE TABLE `flow_skip`
`skip_condition` varchar(200) DEFAULT NULL COMMENT '跳转条件',
`coordinate` varchar(100) DEFAULT NULL COMMENT '坐标',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
@@ -80,9 +86,10 @@ CREATE TABLE `flow_instance`
`flow_status` varchar(20) NOT NULL COMMENT '流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)',
`activity_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '流程激活状态(0挂起 1激活)',
`def_json` text COMMENT '流程定义json',
- `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`ext` varchar(500) DEFAULT NULL COMMENT '扩展字段,预留给业务系统使用',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
@@ -101,7 +108,9 @@ CREATE TABLE `flow_task`
`form_custom` char(1) DEFAULT 'N' COMMENT '审批表单是否自定义(Y是 N否)',
`form_path` varchar(100) DEFAULT NULL COMMENT '审批表单路径',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `create_by` varchar(64) DEFAULT '' COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
@@ -118,7 +127,7 @@ CREATE TABLE `flow_his_task`
`node_type` tinyint(1) DEFAULT NULL COMMENT '开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)',
`target_node_code` varchar(200) DEFAULT NULL COMMENT '目标节点编码',
`target_node_name` varchar(200) DEFAULT NULL COMMENT '结束节点名称',
- `approver` varchar(40) DEFAULT NULL COMMENT '审批者',
+ `approver` varchar(40) DEFAULT NULL COMMENT '审批人',
`cooperate_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)',
`collaborator` varchar(500) DEFAULT NULL COMMENT '协作人',
`skip_type` varchar(10) NOT NULL COMMENT '流转类型(PASS通过 REJECT退回 NONE无动作)',
@@ -130,6 +139,7 @@ CREATE TABLE `flow_his_task`
`ext` TEXT DEFAULT NULL COMMENT '业务详情 存业务表对象json字符串',
`create_time` datetime DEFAULT NULL COMMENT '任务开始时间',
`update_time` datetime DEFAULT NULL COMMENT '审批完成时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '更新人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
@@ -145,6 +155,7 @@ CREATE TABLE `flow_user`
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(80) DEFAULT NULL COMMENT '创建人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ `update_by` varchar(64) DEFAULT '' COMMENT '创建人',
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志',
`tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE,
diff --git a/script/sql/sqlserver/sqlserver_ry_workflow.sql b/script/sql/sqlserver/sqlserver_ry_workflow.sql
index f668c56ad..4340021b8 100644
--- a/script/sql/sqlserver/sqlserver_ry_workflow.sql
+++ b/script/sql/sqlserver/sqlserver_ry_workflow.sql
@@ -16,7 +16,9 @@ CREATE TABLE flow_definition (
listener_path nvarchar(400) NULL,
ext nvarchar(500) NULL,
create_time datetime2(7) NULL,
+ create_by nvarchar(64) DEFAULT('') NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
CONSTRAINT PK__flow_def__3213E83FEE39AE33 PRIMARY KEY CLUSTERED (id)
@@ -131,6 +133,20 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_definition',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_definition',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'删除标志',
'SCHEMA', N'dbo',
@@ -169,7 +185,9 @@ CREATE TABLE flow_node (
form_path nvarchar(100) NULL,
version nvarchar(20) NOT NULL,
create_time datetime2(7) NULL,
+ create_by nvarchar(64) DEFAULT('') NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
ext nvarchar(max) NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
@@ -306,6 +324,20 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_node',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_node',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'节点扩展属性',
'SCHEMA', N'dbo',
@@ -346,7 +378,9 @@ CREATE TABLE flow_skip (
skip_condition nvarchar(200) NULL,
coordinate nvarchar(100) NULL,
create_time datetime2(7) NULL,
+ create_by nvarchar(64) DEFAULT('') NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
CONSTRAINT PK__flow_ski__3213E83F073FEE6E PRIMARY KEY CLUSTERED (id)
@@ -440,6 +474,20 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_skip',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_skip',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'删除标志',
'SCHEMA', N'dbo',
@@ -471,9 +519,10 @@ CREATE TABLE flow_instance (
flow_status nvarchar(20) NOT NULL,
activity_status tinyint DEFAULT('1') NULL,
def_json nvarchar(max) NULL,
- create_by nvarchar(64) NULL,
create_time datetime2(7) NULL,
+ create_by nvarchar(64) DEFAULT('') NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
ext nvarchar(500) NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
@@ -576,6 +625,20 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_instance',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_instance',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'扩展字段,预留给业务系统使用',
'SCHEMA', N'dbo',
@@ -614,7 +677,9 @@ CREATE TABLE flow_task (
form_custom nchar(1) DEFAULT('N') NULL,
form_path nvarchar(100) NULL,
create_time datetime2(7) NULL,
+ create_by nvarchar(64) DEFAULT('') NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
CONSTRAINT PK__flow_tas__3213E83F5AE1F1BA PRIMARY KEY CLUSTERED (id)
@@ -701,6 +766,20 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_task',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_task',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'删除标志',
'SCHEMA', N'dbo',
@@ -743,6 +822,7 @@ CREATE TABLE flow_his_task (
ext nvarchar(max) NULL,
create_time datetime2(7) NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
CONSTRAINT PK__flow_his__3213E83F67951564 PRIMARY KEY CLUSTERED (id)
@@ -899,6 +979,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_his_task',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'删除标志',
'SCHEMA', N'dbo',
@@ -927,6 +1014,7 @@ CREATE TABLE flow_user (
create_time datetime2(7) NULL,
create_by nvarchar(80) NULL,
update_time datetime2(7) NULL,
+ update_by nvarchar(64) DEFAULT('') NULL,
del_flag nchar(1) DEFAULT('0') NULL,
tenant_id nvarchar(40) NULL,
CONSTRAINT PK__flow_use__3213E83FFA38CA8B PRIMARY KEY CLUSTERED (id)
@@ -990,6 +1078,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'update_time'
GO
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_user',
+'COLUMN', N'update_by'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'删除标志',
'SCHEMA', N'dbo',
diff --git a/script/sql/update/oracle/update_5.5.0-5.5.1.sql b/script/sql/update/oracle/update_5.5.0-5.5.1.sql
new file mode 100644
index 000000000..54c733766
--- /dev/null
+++ b/script/sql/update/oracle/update_5.5.0-5.5.1.sql
@@ -0,0 +1,28 @@
+ALTER TABLE flow_definition ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_definition ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_definition.create_by IS '创建人';
+COMMENT ON COLUMN flow_definition.update_by IS '更新人';
+
+ALTER TABLE flow_node ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_node ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_node.create_by IS '创建人';
+COMMENT ON COLUMN flow_node.update_by IS '更新人';
+
+ALTER TABLE flow_skip ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_skip ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_skip.create_by IS '创建人';
+COMMENT ON COLUMN flow_skip.update_by IS '更新人';
+
+ALTER TABLE flow_instance ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_instance.update_by IS '更新人';
+
+ALTER TABLE flow_task ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_task ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_task.create_by IS '创建人';
+COMMENT ON COLUMN flow_task.update_by IS '更新人';
+
+ALTER TABLE flow_his_task ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_his_task.update_by IS '更新人';
+
+ALTER TABLE flow_user ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_user.update_by IS '更新人';
diff --git a/script/sql/update/postgres/update_5.5.0-5.5.1.sql b/script/sql/update/postgres/update_5.5.0-5.5.1.sql
new file mode 100644
index 000000000..54c733766
--- /dev/null
+++ b/script/sql/update/postgres/update_5.5.0-5.5.1.sql
@@ -0,0 +1,28 @@
+ALTER TABLE flow_definition ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_definition ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_definition.create_by IS '创建人';
+COMMENT ON COLUMN flow_definition.update_by IS '更新人';
+
+ALTER TABLE flow_node ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_node ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_node.create_by IS '创建人';
+COMMENT ON COLUMN flow_node.update_by IS '更新人';
+
+ALTER TABLE flow_skip ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_skip ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_skip.create_by IS '创建人';
+COMMENT ON COLUMN flow_skip.update_by IS '更新人';
+
+ALTER TABLE flow_instance ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_instance.update_by IS '更新人';
+
+ALTER TABLE flow_task ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL;
+ALTER TABLE flow_task ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_task.create_by IS '创建人';
+COMMENT ON COLUMN flow_task.update_by IS '更新人';
+
+ALTER TABLE flow_his_task ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_his_task.update_by IS '更新人';
+
+ALTER TABLE flow_user ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL;
+COMMENT ON COLUMN flow_user.update_by IS '更新人';
diff --git a/script/sql/update/sqlserver/update_5.5.0-5.5.1.sql b/script/sql/update/sqlserver/update_5.5.0-5.5.1.sql
new file mode 100644
index 000000000..167185611
--- /dev/null
+++ b/script/sql/update/sqlserver/update_5.5.0-5.5.1.sql
@@ -0,0 +1,109 @@
+ALTER TABLE flow_definition ADD create_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_definition_create_by DEFAULT '';
+GO
+
+ALTER TABLE flow_definition ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_definition_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_definition',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_definition',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_node ADD create_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_node_create_by DEFAULT '';
+GO
+
+ALTER TABLE flow_node ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_node_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_node',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_node',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_skip ADD create_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_skip_create_by DEFAULT '';
+GO
+
+ALTER TABLE flow_skip ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_skip_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_skip',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_skip',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_instance ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_instance_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_instance',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_task ADD create_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_task_create_by DEFAULT '';
+GO
+
+ALTER TABLE flow_task ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_task_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'创建人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_task',
+'COLUMN', N'create_by'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_task',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_his_task ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_his_task_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_his_task',
+'COLUMN', N'update_by'
+GO
+
+ALTER TABLE flow_user ADD update_by nvarchar(64) NOT NULL CONSTRAINT DF_flow_user_update_by DEFAULT '';
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'更新人',
+'SCHEMA', N'dbo',
+'TABLE', N'flow_user',
+'COLUMN', N'update_by'
+GO
diff --git a/script/sql/update/update_5.5.0-5.5.1.sql b/script/sql/update/update_5.5.0-5.5.1.sql
new file mode 100644
index 000000000..61da278f9
--- /dev/null
+++ b/script/sql/update/update_5.5.0-5.5.1.sql
@@ -0,0 +1,24 @@
+ALTER TABLE `flow_definition`
+ ADD COLUMN `create_by` varchar(64) NULL DEFAULT NULL COMMENT '创建人' AFTER `create_time`,
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_node`
+ ADD COLUMN `create_by` varchar(64) NULL DEFAULT NULL COMMENT '创建人' AFTER `create_time`,
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_skip`
+ ADD COLUMN `create_by` varchar(64) NULL DEFAULT NULL COMMENT '创建人' AFTER `create_time`,
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_instance`
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_task`
+ ADD COLUMN `create_by` varchar(64) NULL DEFAULT NULL COMMENT '创建人' AFTER `create_time`,
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_his_task`
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;
+
+ALTER TABLE `flow_user`
+ ADD COLUMN `update_by` varchar(64) NULL DEFAULT NULL COMMENT '更新人' AFTER `update_time`;