This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new a148af2792 [INLONG-8404][Manager] Workflow support multi-tenancy
(#8410)
a148af2792 is described below
commit a148af2792568593e430374b2707892d89d74224
Author: vernedeng <[email protected]>
AuthorDate: Tue Jul 4 20:57:58 2023 +0800
[INLONG-8404][Manager] Workflow support multi-tenancy (#8410)
Co-authored-by: healchow <[email protected]>
---
.../manager/dao/entity/WorkflowApproverEntity.java | 1 +
.../manager/dao/entity/WorkflowProcessEntity.java | 1 +
.../manager/dao/entity/WorkflowTaskEntity.java | 1 +
.../dao/interceptor/MultiTenantInterceptor.java | 59 ++++++++++++++++------
.../dao/mapper/WorkflowApproverEntityMapper.java | 2 +
.../dao/mapper/WorkflowProcessEntityMapper.java | 2 +
.../dao/mapper/WorkflowTaskEntityMapper.java | 2 +
.../mappers/WorkflowApproverEntityMapper.xml | 25 ++++++---
.../mappers/WorkflowProcessEntityMapper.xml | 28 ++++++----
.../resources/mappers/WorkflowTaskEntityMapper.xml | 34 ++++++++-----
.../manager/pojo/group/InlongGroupPageRequest.java | 4 ++
.../manager/pojo/workflow/ApproverPageRequest.java | 3 ++
.../manager/pojo/workflow/ProcessCountRequest.java | 3 ++
.../manager/pojo/workflow/ProcessRequest.java | 3 ++
.../manager/pojo/workflow/TaskCountRequest.java | 3 ++
.../inlong/manager/pojo/workflow/TaskRequest.java | 3 ++
.../service/group/InlongGroupProcessService.java | 15 ++++--
.../group/apply/ApproveApplyProcessListener.java | 6 ++-
.../listener/queue/QueueResourceListener.java | 7 ++-
.../service/stream/InlongStreamProcessService.java | 17 +++++--
.../manager/service/workflow/WorkflowService.java | 40 +++++++++++++--
.../main/resources/h2/apache_inlong_manager.sql | 9 ++--
.../manager-web/sql/apache_inlong_manager.sql | 9 ++--
inlong-manager/manager-web/sql/changes-1.8.0.sql | 8 +++
24 files changed, 218 insertions(+), 67 deletions(-)
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowApproverEntity.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowApproverEntity.java
index 3dbc857de2..f8a7ff2ce1 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowApproverEntity.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowApproverEntity.java
@@ -32,6 +32,7 @@ public class WorkflowApproverEntity implements Serializable {
private Integer id;
private String processName;
private String taskName;
+ private String tenant;
private String approvers;
private String creator;
private String modifier;
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowProcessEntity.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowProcessEntity.java
index b295e1e402..89bfaf11ea 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowProcessEntity.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowProcessEntity.java
@@ -35,6 +35,7 @@ public class WorkflowProcessEntity {
private String inlongGroupId;
private String inlongStreamId;
+ private String tenant;
private String applicant;
private String status;
private String formData;
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowTaskEntity.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowTaskEntity.java
index b0e9ba24f0..d4f7d09636 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowTaskEntity.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/WorkflowTaskEntity.java
@@ -38,6 +38,7 @@ public class WorkflowTaskEntity {
private String processName;
private String processDisplayName;
+ private String tenant;
private String applicant;
private String approvers;
private String status;
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/interceptor/MultiTenantInterceptor.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/interceptor/MultiTenantInterceptor.java
index 9b09bf58ee..7ba50a1ab2 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/interceptor/MultiTenantInterceptor.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/interceptor/MultiTenantInterceptor.java
@@ -20,12 +20,12 @@ package org.apache.inlong.manager.dao.interceptor;
import org.apache.inlong.manager.common.consts.InlongConstants;
import org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
-import org.apache.inlong.manager.common.util.JsonUtils;
import org.apache.inlong.manager.pojo.user.LoginUserUtils;
import org.apache.inlong.manager.pojo.user.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.binding.MapperMethod;
import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.executor.parameter.ParameterHandler;
@@ -47,6 +47,7 @@ import
org.apache.ibatis.reflection.wrapper.ObjectWrapperFactory;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
+import java.lang.reflect.Field;
import java.sql.PreparedStatement;
import java.util.LinkedHashMap;
import java.util.List;
@@ -108,7 +109,7 @@ public class MultiTenantInterceptor implements Interceptor {
List<ParameterMapping> parameterMappings =
boundSql.getParameterMappings();
// new param mapping
- Map<String, Object> newParameter = makeNewParameters(parameter,
parameterMappings);
+ Object newParameter = makeNewParameters(parameter,
parameterMappings);
// update params
invocation.getArgs()[1] = newParameter;
@@ -130,33 +131,59 @@ public class MultiTenantInterceptor implements
Interceptor {
Object parameterObject =
metaResultSetHandler.getValue("parameterObject");
BoundSql boundSql = (BoundSql)
metaResultSetHandler.getValue("boundSql");
- Map<String, Object> newParams = makeNewParameters(parameterObject,
boundSql.getParameterMappings());
+ Object newParams = makeNewParameters(parameterObject,
boundSql.getParameterMappings());
metaResultSetHandler.setValue("parameterObject", newParams);
return invocation.proceed();
}
- private Map<String, Object> makeNewParameters(Object parameterObject,
List<ParameterMapping> parameters) {
- Map<String, Object> params;
-
+ @SuppressWarnings("unchecked")
+ private Object makeNewParameters(Object parameterObject,
List<ParameterMapping> parameters) {
// only the single param query has no property name, find it in
parameters.
if (isPrimitiveOrWrapper(parameterObject) && parameters.size() == 2) {
- params = new LinkedHashMap<>();
-
- // find the param not tenant
- int idx = 0;
- if (KEY_TENANT.equals(parameters.get(0).getProperty())) {
- idx = 1;
- }
- params.put(parameters.get(idx).getProperty(), parameterObject);
+ return makeNewParametersFromPrimitive(parameterObject, parameters);
+ } else if (parameterObject instanceof MapperMethod.ParamMap) {
+ return makeNewParametersFromMap((MapperMethod.ParamMap<String>)
parameterObject);
} else {
- String jsonStr = JsonUtils.toJsonString(parameterObject);
- params = JsonUtils.parseObject(jsonStr, Map.class);
+ return makeNewParametersFromEntity(parameterObject);
+ }
+ }
+
+ private Object makeNewParametersFromMap(MapperMethod.ParamMap<String>
parameterObject) {
+ parameterObject.put(KEY_TENANT, getTenant());
+ return parameterObject;
+ }
+
+ private Object makeNewParametersFromPrimitive(Object parameterObject,
List<ParameterMapping> parameters) {
+ Map<String, Object> params = new LinkedHashMap<>();
+
+ // find the param not tenant
+ int idx = 0;
+ if (KEY_TENANT.equals(parameters.get(0).getProperty())) {
+ idx = 1;
}
+ params.put(parameters.get(idx).getProperty(), parameterObject);
params.put(KEY_TENANT, getTenant());
return params;
}
+ private Object makeNewParametersFromEntity(Object parameterObject) {
+ Field[] fields = parameterObject.getClass().getDeclaredFields();
+
+ try {
+ for (Field field : fields) {
+ if (!field.getName().equals(KEY_TENANT)) {
+ continue;
+ }
+ field.setAccessible(true);
+ field.set(parameterObject, getTenant());
+ }
+ } catch (Exception e) {
+ log.error("failed to set tenant into parameters=" +
parameterObject, e);
+ }
+ return parameterObject;
+ }
+
private boolean isPrimitiveOrWrapper(Object obj) {
try {
Class<?> clazz = obj.getClass();
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowApproverEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowApproverEntityMapper.java
index fa48f7c980..193bc00050 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowApproverEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowApproverEntityMapper.java
@@ -17,6 +17,7 @@
package org.apache.inlong.manager.dao.mapper;
+import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
import org.apache.inlong.manager.dao.entity.WorkflowApproverEntity;
import org.apache.inlong.manager.pojo.workflow.ApproverPageRequest;
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
+@MultiTenantQuery
public interface WorkflowApproverEntityMapper {
int insert(WorkflowApproverEntity record);
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowProcessEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowProcessEntityMapper.java
index a68ce1249c..cc0d6502c9 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowProcessEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowProcessEntityMapper.java
@@ -17,6 +17,7 @@
package org.apache.inlong.manager.dao.mapper;
+import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
import org.apache.inlong.manager.dao.entity.WorkflowProcessEntity;
import org.apache.inlong.manager.pojo.common.CountInfo;
import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
@@ -31,6 +32,7 @@ import java.util.List;
* Workflow process mapper
*/
@Repository
+@MultiTenantQuery
public interface WorkflowProcessEntityMapper {
Integer insert(WorkflowProcessEntity workflowProcessEntity);
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowTaskEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowTaskEntityMapper.java
index 5c987d37c3..2b1781c3d1 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowTaskEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/WorkflowTaskEntityMapper.java
@@ -18,6 +18,7 @@
package org.apache.inlong.manager.dao.mapper;
import org.apache.inlong.manager.common.enums.TaskStatus;
+import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
import org.apache.inlong.manager.dao.entity.WorkflowTaskEntity;
import org.apache.inlong.manager.pojo.common.CountInfo;
import org.apache.inlong.manager.pojo.workflow.TaskCountRequest;
@@ -32,6 +33,7 @@ import java.util.List;
* Workflow task mapper
*/
@Repository
+@MultiTenantQuery
public interface WorkflowTaskEntityMapper {
int insert(WorkflowTaskEntity workflowTaskEntity);
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowApproverEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowApproverEntityMapper.xml
index 65d7972d3b..baa785a70f 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowApproverEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowApproverEntityMapper.xml
@@ -24,6 +24,7 @@
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="process_name" jdbcType="VARCHAR"
property="processName"/>
<result column="task_name" jdbcType="VARCHAR" property="taskName"/>
+ <result column="tenant" jdbcType="VARCHAR" property="tenant"/>
<result column="approvers" jdbcType="VARCHAR" property="approvers"/>
<result column="creator" jdbcType="VARCHAR" property="creator"/>
<result column="modifier" jdbcType="VARCHAR" property="modifier"/>
@@ -33,22 +34,27 @@
<result column="version" jdbcType="INTEGER" property="version"/>
</resultMap>
<sql id="Base_Column_List">
- id, process_name, task_name, approvers, creator, modifier,
create_time, modify_time, is_deleted, version
+ id, process_name, task_name, tenant, approvers, creator, modifier,
+ create_time, modify_time, is_deleted, version
</sql>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"
parameterType="org.apache.inlong.manager.dao.entity.WorkflowApproverEntity">
insert into workflow_approver (id, process_name, task_name,
- approvers, creator, modifier)
+ tenant, approvers,
+ creator, modifier)
values (#{id, jdbcType=INTEGER}, #{processName, jdbcType=VARCHAR},
#{taskName, jdbcType=VARCHAR},
- #{approvers, jdbcType=VARCHAR}, #{creator, jdbcType=VARCHAR},
#{modifier, jdbcType=VARCHAR})
+ #{tenant,jdbcType=VARCHAR}, #{approvers, jdbcType=VARCHAR},
+ #{creator, jdbcType=VARCHAR}, #{modifier, jdbcType=VARCHAR})
</insert>
- <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
+ <select id="selectById" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from workflow_approver
- where id = #{id, jdbcType=INTEGER} and is_deleted=0
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id, jdbcType=INTEGER}
+ and is_deleted = 0
</select>
<select id="selectByCondition" resultMap="BaseResultMap"
parameterType="org.apache.inlong.manager.pojo.workflow.ApproverPageRequest">
@@ -56,7 +62,8 @@
<include refid="Base_Column_List"/>
from workflow_approver
<where>
- is_deleted = 0
+ tenant = #{tenant,jdbcType=VARCHAR}
+ and is_deleted = 0
<if test="currentUser != null and currentUser != '' and
isAdminRole == false">
and (
creator = #{currentUser, jdbcType=VARCHAR} or
find_in_set(#{currentUser, jdbcType=VARCHAR}, approvers)
@@ -86,7 +93,8 @@
modifier = #{modifier, jdbcType=VARCHAR},
is_deleted = #{isDeleted, jdbcType=INTEGER},
version = #{version, jdbcType=INTEGER} + 1
- where id = #{id, jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id, jdbcType=INTEGER}
and is_deleted = 0
and version = #{version, jdbcType=INTEGER}
</update>
@@ -95,6 +103,7 @@
update workflow_approver
set is_deleted = id,
modifier=#{modifier, jdbcType=VARCHAR}
- where id = #{id, jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id, jdbcType=INTEGER}
</delete>
</mapper>
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowProcessEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowProcessEntityMapper.xml
index 8b122ab127..8ba32b2799 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowProcessEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowProcessEntityMapper.xml
@@ -28,6 +28,7 @@
<result column="title" jdbcType="VARCHAR" property="title"/>
<result column="inlong_group_id" jdbcType="VARCHAR"
property="inlongGroupId"/>
<result column="inlong_stream_id" jdbcType="VARCHAR"
property="inlongStreamId"/>
+ <result column="tenant" jdbcType="VARCHAR" property="tenant"/>
<result column="applicant" jdbcType="VARCHAR" property="applicant"/>
<result column="status" jdbcType="VARCHAR" property="status"/>
<result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
@@ -38,27 +39,29 @@
</resultMap>
<sql id="Base_Column_List">
id, name, display_name, type, title, inlong_group_id, inlong_stream_id,
- applicant, status, start_time, end_time, hidden, form_data, ext_params
+ tenant, applicant, status, start_time, end_time, hidden, form_data,
ext_params
</sql>
<insert id="insert" useGeneratedKeys="true" keyProperty="id" keyColumn="id"
parameterType="org.apache.inlong.manager.dao.entity.WorkflowProcessEntity">
insert into workflow_process (name, display_name, type,
title, inlong_group_id, inlong_stream_id,
- applicant, status, start_time,
- end_time, form_data, ext_params, hidden)
+ tenant, applicant, status,
+ start_time, end_time, form_data,
+ ext_params, hidden)
values (#{name,jdbcType=VARCHAR}, #{displayName,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR},
#{title,jdbcType=VARCHAR}, #{inlongGroupId,jdbcType=VARCHAR},
#{inlongStreamId,jdbcType=VARCHAR},
- #{applicant,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR},
#{startTime,jdbcType=TIMESTAMP},
- #{endTime,jdbcType=TIMESTAMP},
#{formData,jdbcType=LONGVARCHAR}, #{extParams,jdbcType=LONGVARCHAR},
- #{hidden,jdbcType=TINYINT})
+ #{tenant,jdbcType=VARCHAR}, #{applicant,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR},
+ #{startTime,jdbcType=TIMESTAMP},
#{endTime,jdbcType=TIMESTAMP}, #{formData,jdbcType=LONGVARCHAR},
+ #{extParams,jdbcType=LONGVARCHAR}, #{hidden,jdbcType=TINYINT})
</insert>
- <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
+ <select id="selectById" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from workflow_process
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</select>
<select id="selectByCondition"
parameterType="org.apache.inlong.manager.pojo.workflow.ProcessRequest"
resultMap="BaseResultMap">
@@ -66,6 +69,7 @@
<include refid="Base_Column_List"/>
from workflow_process
<where>
+ tenant = #{tenant,jdbcType=VARCHAR}
<if test="id != null">
and id = #{id,jdbcType=INTEGER}
</if>
@@ -114,13 +118,14 @@
</where>
order by id desc
</select>
- <select id="selectByInlongGroupIds" resultType="java.lang.Integer">
+ <select id="selectByInlongGroupIds">
select id
from workflow_process
where inlong_group_id in
<foreach item="item" index="index" collection="groupIdList" open="("
close=")" separator=",">
#{item}
</foreach>
+ and tenant = #{tenant,jdbcType=VARCHAR}
</select>
<select id="countByQuery"
parameterType="org.apache.inlong.manager.pojo.workflow.ProcessCountRequest"
@@ -128,6 +133,7 @@
select status as `key`, count(1) as `value`
from workflow_process
<where>
+ tenant = #{tenant,jdbcType=VARCHAR}
<if test="name != null and name !=''">
and name = #{name,jdbcType=VARCHAR}
</if>
@@ -164,7 +170,8 @@
set status = #{status,jdbcType=VARCHAR},
end_time = #{endTime,jdbcType=TIMESTAMP},
ext_params = #{extParams,jdbcType=LONGVARCHAR}
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</update>
<delete id="deleteByProcessIds">
@@ -174,5 +181,6 @@
<foreach item="item" index="index" collection="processIdList" open="("
close=")" separator=",">
#{item}
</foreach>
+ and tenant = #{tenant,jdbcType=VARCHAR}
</delete>
</mapper>
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowTaskEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowTaskEntityMapper.xml
index 84294c1287..d415c4efb9 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowTaskEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/WorkflowTaskEntityMapper.xml
@@ -28,6 +28,7 @@
<result column="process_display_name" jdbcType="VARCHAR"
property="processDisplayName"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="display_name" jdbcType="VARCHAR"
property="displayName"/>
+ <result column="tenant" jdbcType="VARCHAR" property="tenant"/>
<result column="applicant" jdbcType="VARCHAR" property="applicant"/>
<result column="approvers" jdbcType="VARCHAR" property="approvers"/>
<result column="status" jdbcType="VARCHAR" property="status"/>
@@ -40,35 +41,39 @@
</resultMap>
<sql id="Base_Column_List">
- id, type, process_id, process_name, process_display_name, name,
display_name, applicant, approvers,
+ id, type, process_id, process_name, process_display_name, name,
display_name, tenant, applicant, approvers,
status, operator, remark, start_time, end_time, form_data, ext_params
</sql>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"
parameterType="org.apache.inlong.manager.dao.entity.WorkflowTaskEntity">
- insert into workflow_task (id, type, process_id, process_name,
process_display_name, name,
- display_name, applicant, approvers, status,
+ insert into workflow_task (id, type, process_id,
+ process_name, process_display_name,
+ name, display_name, tenant,
+ applicant, approvers, status,
operator, remark, start_time,
end_time, form_data, ext_params)
values (#{id,jdbcType=INTEGER}, #{type,jdbcType=VARCHAR},
#{processId,jdbcType=INTEGER},
- #{processName,jdbcType=VARCHAR},
#{processDisplayName,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
- #{displayName,jdbcType=VARCHAR},
#{applicant,jdbcType=VARCHAR}, #{approvers,jdbcType=VARCHAR},
- #{status,jdbcType=VARCHAR},
+ #{processName,jdbcType=VARCHAR},
#{processDisplayName,jdbcType=VARCHAR},
+ #{name,jdbcType=VARCHAR}, #{displayName,jdbcType=VARCHAR},
#{tenant,jdbcType=VARCHAR},
+ #{applicant,jdbcType=VARCHAR}, #{approvers,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR},
#{operator,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR},
#{startTime,jdbcType=TIMESTAMP},
#{endTime,jdbcType=TIMESTAMP},
#{formData,jdbcType=LONGVARCHAR}, #{extParams,jdbcType=LONGVARCHAR})
</insert>
- <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
+ <select id="selectById" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from workflow_task
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</select>
<select id="selectByProcess" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from workflow_task
- where process_id = #{processId,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and process_id = #{processId,jdbcType=INTEGER}
and status = #{status,jdbcType=VARCHAR}
</select>
<select id="selectByQuery"
@@ -78,6 +83,7 @@
<include refid="Base_Column_List"/>
from workflow_task
<where>
+ tenant = #{tenant,jdbcType=VARCHAR}
<if test="id != null">
and id = #{id,jdbcType=INTEGER}
</if>
@@ -126,10 +132,11 @@
</where>
order by id desc
</select>
- <select id="countByStatus" resultType="java.lang.Integer">
+ <select id="countByStatus">
select count(1)
from workflow_task
- where process_id = #{processId, jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and process_id = #{processId, jdbcType=INTEGER}
and name = #{name, jdbcType=VARCHAR}
and status = #{status, jdbcType=VARCHAR}
</select>
@@ -139,6 +146,7 @@
select status as `key`, count(1) as `value`
from workflow_task
<where>
+ tenant = #{tenant,jdbcType=VARCHAR}
<if test="processId != null">
and process_id = #{processId,jdbcType=INTEGER}
</if>
@@ -184,7 +192,8 @@
form_data = #{formData,jdbcType=LONGVARCHAR},
ext_params = #{extParams,jdbcType=LONGVARCHAR},
end_time = #{endTime,jdbcType=TIMESTAMP}
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</update>
<delete id="deleteByProcessIds">
@@ -194,5 +203,6 @@
<foreach item="item" index="index" collection="processIdList" open="("
close=")" separator=",">
#{item}
</foreach>
+ and tenant = #{tenant,jdbcType=VARCHAR}
</delete>
</mapper>
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/group/InlongGroupPageRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/group/InlongGroupPageRequest.java
index 83855aa582..5d7c24b295 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/group/InlongGroupPageRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/group/InlongGroupPageRequest.java
@@ -64,10 +64,14 @@ public class InlongGroupPageRequest extends PageRequest {
@ApiModelProperty(value = "Current user", hidden = true)
private String currentUser;
+ @ApiModelProperty(value = "Inlong tenant name", hidden = true)
+ private String tenant;
+
@ApiModelProperty(value = "Whether the current user is in the
administrator role", hidden = true)
private Boolean isAdminRole;
@ApiModelProperty(value = "If list streamSource for group", hidden = true)
@Builder.Default
private boolean listSources = false;
+
}
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ApproverPageRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ApproverPageRequest.java
index 6673bae188..3cd74c89df 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ApproverPageRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ApproverPageRequest.java
@@ -47,6 +47,9 @@ public class ApproverPageRequest extends PageRequest {
@ApiModelProperty("Workflow task name")
private String taskName;
+ @ApiModelProperty("Inlong tenant name")
+ private String tenant;
+
@ApiModelProperty("Specified workflow approver")
private String approver;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessCountRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessCountRequest.java
index 07ca9dc28e..f701b970e3 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessCountRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessCountRequest.java
@@ -37,6 +37,9 @@ public class ProcessCountRequest {
@ApiModelProperty("Process display name")
private String displayName;
+ @ApiModelProperty("Inlong tenant name")
+ private String tenant;
+
@ApiModelProperty("Applicant")
private String applicant;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessRequest.java
index 77aa644021..5b8fe435ef 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/ProcessRequest.java
@@ -55,6 +55,9 @@ public class ProcessRequest extends PageRequest {
@ApiModelProperty("Process display name")
private String displayName;
+ @ApiModelProperty("Inlong tenant name")
+ private String tenant;
+
@ApiModelProperty("Applicant")
private String applicant;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskCountRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskCountRequest.java
index dbf13347fb..76b4b922dd 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskCountRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskCountRequest.java
@@ -49,6 +49,9 @@ public class TaskCountRequest {
@ApiModelProperty("Task display name")
private String displayName;
+ @ApiModelProperty("Inlong tenant")
+ private String tenant;
+
@ApiModelProperty("Applicant name")
private String applicant;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskRequest.java
index 0a27ef104c..c031db6490 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/workflow/TaskRequest.java
@@ -58,6 +58,9 @@ public class TaskRequest extends PageRequest {
@ApiModelProperty("Task display name")
private String displayName;
+ @ApiModelProperty("Inlong tenant of workflow")
+ private String tenant;
+
@ApiModelProperty("Applicant name")
private String applicant;
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
index 172ed6f190..339f10b01c 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupProcessService.java
@@ -34,6 +34,7 @@ import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
import org.apache.inlong.manager.pojo.group.InlongGroupResetRequest;
import org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo;
import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
+import org.apache.inlong.manager.pojo.user.LoginUserUtils;
import org.apache.inlong.manager.pojo.user.UserInfo;
import org.apache.inlong.manager.pojo.workflow.ProcessRequest;
import org.apache.inlong.manager.pojo.workflow.TaskResponse;
@@ -130,7 +131,9 @@ public class InlongGroupProcessService {
groupService.updateStatus(groupId, GroupStatus.SUSPENDING.getCode(),
operator);
InlongGroupInfo groupInfo = groupService.get(groupId);
GroupResourceProcessForm form = genGroupResourceProcessForm(groupInfo,
GroupOperateType.SUSPEND);
- EXECUTOR_SERVICE.execute(() ->
workflowService.start(ProcessName.SUSPEND_GROUP_PROCESS, operator, form));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () ->
workflowService.startAsync(ProcessName.SUSPEND_GROUP_PROCESS, userInfo, form));
LOGGER.info("success to suspend process asynchronously for groupId={}
by operator={}", groupId, operator);
return groupId;
@@ -175,7 +178,9 @@ public class InlongGroupProcessService {
groupService.updateStatus(groupId, GroupStatus.RESTARTING.getCode(),
operator);
InlongGroupInfo groupInfo = groupService.get(groupId);
GroupResourceProcessForm form = genGroupResourceProcessForm(groupInfo,
GroupOperateType.RESTART);
- EXECUTOR_SERVICE.execute(() ->
workflowService.start(ProcessName.RESTART_GROUP_PROCESS, operator, form));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () ->
workflowService.startAsync(ProcessName.RESTART_GROUP_PROCESS, userInfo, form));
LOGGER.info("success to restart process asynchronously for groupId={}
by operator={}", groupId, operator);
return groupId;
@@ -312,9 +317,9 @@ public class InlongGroupProcessService {
List<WorkflowProcessEntity> entities =
workflowQueryService.listProcessEntity(processQuery);
entities.sort(Comparator.comparingInt(WorkflowProcessEntity::getId));
WorkflowProcessEntity lastProcess = entities.get(entities.size() -
1);
- EXECUTOR_SERVICE.execute(() -> {
- workflowService.continueProcess(lastProcess.getId(), operator,
"Reset group status");
- });
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () ->
workflowService.continueProcessAsync(lastProcess.getId(), userInfo, "Reset
group status"));
return true;
}
if (resetFinalStatus == 1) {
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/group/apply/ApproveApplyProcessListener.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/group/apply/ApproveApplyProcessListener.java
index 9d065e3dbd..4d285488f6 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/group/apply/ApproveApplyProcessListener.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/group/apply/ApproveApplyProcessListener.java
@@ -22,6 +22,8 @@ import org.apache.inlong.manager.common.enums.ProcessName;
import org.apache.inlong.manager.common.exceptions.WorkflowListenerException;
import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
+import org.apache.inlong.manager.pojo.user.LoginUserUtils;
+import org.apache.inlong.manager.pojo.user.UserInfo;
import
org.apache.inlong.manager.pojo.workflow.form.process.ApplyGroupProcessForm;
import
org.apache.inlong.manager.pojo.workflow.form.process.GroupResourceProcessForm;
import org.apache.inlong.manager.service.group.InlongGroupService;
@@ -72,7 +74,9 @@ public class ApproveApplyProcessListener implements
ProcessEventListener {
processForm.setStreamInfos(streamList);
// may run for long time, make it async processing
- EXECUTOR_SERVICE.execute(() ->
workflowService.start(ProcessName.CREATE_GROUP_RESOURCE, username,
processForm));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () ->
workflowService.startAsync(ProcessName.CREATE_GROUP_RESOURCE, userInfo,
processForm));
log.info("success to execute ApproveApplyProcessListener for
groupId={}", groupId);
return ListenerResult.success();
}
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/queue/QueueResourceListener.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/queue/QueueResourceListener.java
index 2348b058d1..4bab2a146b 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/queue/QueueResourceListener.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/listener/queue/QueueResourceListener.java
@@ -25,6 +25,8 @@ import org.apache.inlong.manager.common.enums.TaskStatus;
import org.apache.inlong.manager.common.exceptions.WorkflowListenerException;
import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
+import org.apache.inlong.manager.pojo.user.LoginUserUtils;
+import org.apache.inlong.manager.pojo.user.UserInfo;
import org.apache.inlong.manager.pojo.workflow.TaskResponse;
import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
import
org.apache.inlong.manager.pojo.workflow.form.process.GroupResourceProcessForm;
@@ -152,9 +154,10 @@ public class QueueResourceListener implements
QueueOperateListener {
StreamResourceProcessForm form =
StreamResourceProcessForm.getProcessForm(groupInfo, stream, INIT);
String streamId = stream.getInlongStreamId();
final String errMsg = "failed to start stream process for
groupId=" + groupId + " streamId=" + streamId;
-
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
CompletableFuture<WorkflowResult> future = CompletableFuture
- .supplyAsync(() ->
workflowService.start(CREATE_STREAM_RESOURCE, operator, form), EXECUTOR_SERVICE)
+ .supplyAsync(() ->
workflowService.startAsync(CREATE_STREAM_RESOURCE, userInfo, form),
+ EXECUTOR_SERVICE)
.whenComplete((result, ex) -> {
if (ex != null) {
log.error(errMsg + ": " + ex.getMessage());
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamProcessService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamProcessService.java
index 3e9bbe5062..8f87a8e957 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamProcessService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamProcessService.java
@@ -27,6 +27,8 @@ import
org.apache.inlong.manager.common.exceptions.BusinessException;
import org.apache.inlong.manager.common.util.Preconditions;
import org.apache.inlong.manager.pojo.group.InlongGroupInfo;
import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
+import org.apache.inlong.manager.pojo.user.LoginUserUtils;
+import org.apache.inlong.manager.pojo.user.UserInfo;
import org.apache.inlong.manager.pojo.workflow.WorkflowResult;
import
org.apache.inlong.manager.pojo.workflow.form.process.StreamResourceProcessForm;
import org.apache.inlong.manager.service.group.InlongGroupService;
@@ -108,7 +110,9 @@ public class InlongStreamProcessService {
ProcessStatus processStatus =
workflowResult.getProcessInfo().getStatus();
return processStatus == ProcessStatus.COMPLETED;
} else {
- EXECUTOR_SERVICE.execute(() -> workflowService.start(processName,
operator, processForm));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () -> workflowService.startAsync(processName, userInfo,
processForm));
return true;
}
}
@@ -148,7 +152,9 @@ public class InlongStreamProcessService {
ProcessStatus processStatus =
workflowResult.getProcessInfo().getStatus();
return processStatus == ProcessStatus.COMPLETED;
} else {
- EXECUTOR_SERVICE.execute(() -> workflowService.start(processName,
operator, processForm));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () -> workflowService.startAsync(processName, userInfo,
processForm));
return true;
}
}
@@ -188,7 +194,9 @@ public class InlongStreamProcessService {
ProcessStatus processStatus =
workflowResult.getProcessInfo().getStatus();
return processStatus == ProcessStatus.COMPLETED;
} else {
- EXECUTOR_SERVICE.execute(() -> workflowService.start(processName,
operator, processForm));
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
+ EXECUTOR_SERVICE.execute(
+ () -> workflowService.startAsync(processName, userInfo,
processForm));
return true;
}
}
@@ -236,12 +244,15 @@ public class InlongStreamProcessService {
return false;
}
} else {
+ UserInfo userInfo = LoginUserUtils.getLoginUser();
EXECUTOR_SERVICE.execute(() -> {
+ LoginUserUtils.setUserLoginInfo(userInfo);
WorkflowResult workflowResult =
workflowService.start(processName, operator, processForm);
ProcessStatus processStatus =
workflowResult.getProcessInfo().getStatus();
if (processStatus == ProcessStatus.COMPLETED) {
streamService.delete(groupId, streamId, operator);
}
+ LoginUserUtils.removeUserLoginInfo();
});
return true;
}
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
index cb56b72e00..7f751930ae 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/workflow/WorkflowService.java
@@ -19,6 +19,8 @@ package org.apache.inlong.manager.service.workflow;
import org.apache.inlong.manager.common.enums.ProcessName;
import org.apache.inlong.manager.pojo.common.PageResult;
+import org.apache.inlong.manager.pojo.user.LoginUserUtils;
+import org.apache.inlong.manager.pojo.user.UserInfo;
import org.apache.inlong.manager.pojo.workflow.ProcessCountRequest;
import org.apache.inlong.manager.pojo.workflow.ProcessCountResponse;
import org.apache.inlong.manager.pojo.workflow.ProcessDetailResponse;
@@ -44,13 +46,28 @@ public interface WorkflowService {
/**
* Initiation process
*
- * @param process Process name
- * @param applicant Applicant
- * @param form Process form
- * @return result
+ * @param process process name
+ * @param applicant applicant name
+ * @param form process form
+ * @return workflow result
*/
WorkflowResult start(ProcessName process, String applicant, ProcessForm
form);
+ /**
+ * Initiation process async
+ *
+ * @param process process name
+ * @param userInfo login user info
+ * @param form process form
+ * @return workflow result
+ */
+ default WorkflowResult startAsync(ProcessName process, UserInfo userInfo,
ProcessForm form) {
+ LoginUserUtils.setUserLoginInfo(userInfo);
+ WorkflowResult result = start(process, userInfo.getName(), form);
+ LoginUserUtils.removeUserLoginInfo();
+ return result;
+ }
+
/**
* Continue process when pending or failed
*
@@ -61,6 +78,21 @@ public interface WorkflowService {
*/
WorkflowResult continueProcess(Integer processId, String operator, String
remark);
+ /**
+ * Continue process when pending or failed
+ *
+ * @param processId Process id.
+ * @param userInfo userInfo.
+ * @param remark Remarks information.
+ * @return Workflow result.
+ */
+ default WorkflowResult continueProcessAsync(Integer processId, UserInfo
userInfo, String remark) {
+ LoginUserUtils.setUserLoginInfo(userInfo);
+ WorkflowResult result = continueProcess(processId, userInfo.getName(),
remark);
+ LoginUserUtils.removeUserLoginInfo();
+ return result;
+ }
+
/**
* Cancellation process application
*
diff --git
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
index 0f4c8a76c0..73a656acfa 100644
---
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
+++
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
@@ -585,6 +585,7 @@ CREATE TABLE IF NOT EXISTS `workflow_approver`
`id` int(11) NOT NULL AUTO_INCREMENT,
`process_name` varchar(256) NOT NULL COMMENT 'Process name',
`task_name` varchar(256) NOT NULL COMMENT 'Approval task name',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong
tenant of workflow approver',
`approvers` varchar(1024) NOT NULL COMMENT 'Approvers, separated by
commas',
`creator` varchar(64) NOT NULL COMMENT 'Creator name',
`modifier` varchar(64) DEFAULT NULL COMMENT 'Modifier name',
@@ -597,9 +598,9 @@ CREATE TABLE IF NOT EXISTS `workflow_approver`
);
-- create workflow approver for newly inlong group and inlong consume.
-INSERT INTO `workflow_approver`(`process_name`, `task_name`, `approvers`,
`creator`, `modifier`)
-VALUES ('APPLY_GROUP_PROCESS', 'ut_admin', 'admin', 'inlong_init',
'inlong_init'),
- ('APPLY_CONSUME_PROCESS', 'ut_admin', 'admin', 'inlong_init',
'inlong_init');
+INSERT INTO `workflow_approver`(`process_name`, `task_name`, `tenant`,
`approvers`, `creator`, `modifier`)
+VALUES ('APPLY_GROUP_PROCESS', 'ut_admin', 'public', 'admin', 'inlong_init',
'inlong_init'),
+ ('APPLY_CONSUME_PROCESS', 'ut_admin', 'public', 'admin', 'inlong_init',
'inlong_init');
-- ----------------------------
-- Table structure for workflow_event_log
@@ -641,6 +642,7 @@ CREATE TABLE IF NOT EXISTS `workflow_process`
`title` varchar(256) DEFAULT NULL COMMENT 'Process
title',
`inlong_group_id` varchar(256) DEFAULT NULL COMMENT 'Inlong
group id to which this process belongs',
`inlong_stream_id` varchar(256) DEFAULT NULL COMMENT 'Inlong
stream id to which this process belongs',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong
tenant of workflow process',
`applicant` varchar(256) NOT NULL COMMENT 'Applicant',
`status` varchar(64) NOT NULL COMMENT 'Status',
`form_data` mediumtext COMMENT 'Form information',
@@ -664,6 +666,7 @@ CREATE TABLE IF NOT EXISTS `workflow_task`
`process_display_name` varchar(256) NOT NULL COMMENT 'Process name',
`name` varchar(256) NOT NULL COMMENT 'Task name',
`display_name` varchar(256) NOT NULL COMMENT 'Task display name',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT
'Inlong tenant of workflow task',
`applicant` varchar(64) DEFAULT NULL COMMENT 'Applicant',
`approvers` varchar(1024) NOT NULL COMMENT 'Approvers',
`status` varchar(64) NOT NULL COMMENT 'Status',
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index e131511bee..d2a6173b4c 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -622,6 +622,7 @@ CREATE TABLE IF NOT EXISTS `workflow_approver`
`id` int(11) NOT NULL AUTO_INCREMENT,
`process_name` varchar(256) NOT NULL COMMENT 'Process name',
`task_name` varchar(256) NOT NULL COMMENT 'Approval task name',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong
tenant of workflow approver',
`approvers` varchar(1024) NOT NULL COMMENT 'Approvers, separated by
commas',
`creator` varchar(64) NOT NULL COMMENT 'Creator name',
`modifier` varchar(64) DEFAULT NULL COMMENT 'Modifier name',
@@ -635,9 +636,9 @@ CREATE TABLE IF NOT EXISTS `workflow_approver`
DEFAULT CHARSET = utf8mb4 COMMENT ='Workflow approver table';
-- create workflow approver for newly inlong group and inlong consume.
-INSERT INTO `workflow_approver`(`process_name`, `task_name`, `approvers`,
`creator`, `modifier`)
-VALUES ('APPLY_GROUP_PROCESS', 'ut_admin', 'admin', 'inlong_init',
'inlong_init'),
- ('APPLY_CONSUME_PROCESS', 'ut_admin', 'admin', 'inlong_init',
'inlong_init');
+INSERT INTO `workflow_approver`(`process_name`, `task_name`, `tenant`,
`approvers`, `creator`, `modifier`)
+VALUES ('APPLY_GROUP_PROCESS', 'ut_admin', 'public', 'admin', 'inlong_init',
'inlong_init'),
+ ('APPLY_CONSUME_PROCESS', 'ut_admin', 'public', 'admin', 'inlong_init',
'inlong_init');
-- ----------------------------
-- Table structure for workflow_event_log
@@ -680,6 +681,7 @@ CREATE TABLE IF NOT EXISTS `workflow_process`
`title` varchar(256) DEFAULT NULL COMMENT 'Process
title',
`inlong_group_id` varchar(256) DEFAULT NULL COMMENT 'Inlong
group id to which this process belongs',
`inlong_stream_id` varchar(256) DEFAULT NULL COMMENT 'Inlong
stream id to which this process belongs',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong
tenant of workflow process',
`applicant` varchar(256) NOT NULL COMMENT 'Applicant',
`status` varchar(64) NOT NULL COMMENT 'Status',
`form_data` mediumtext COMMENT 'Form information',
@@ -704,6 +706,7 @@ CREATE TABLE IF NOT EXISTS `workflow_task`
`process_display_name` varchar(256) NOT NULL COMMENT 'Process name',
`name` varchar(256) NOT NULL COMMENT 'Task name',
`display_name` varchar(256) NOT NULL COMMENT 'Task display name',
+ `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT
'Inlong tenant of workflow task',
`applicant` varchar(64) DEFAULT NULL COMMENT 'Applicant',
`approvers` varchar(1024) NOT NULL COMMENT 'Approvers',
`status` varchar(64) NOT NULL COMMENT 'Status',
diff --git a/inlong-manager/manager-web/sql/changes-1.8.0.sql
b/inlong-manager/manager-web/sql/changes-1.8.0.sql
index 0a33640d1e..8af19b0e22 100644
--- a/inlong-manager/manager-web/sql/changes-1.8.0.sql
+++ b/inlong-manager/manager-web/sql/changes-1.8.0.sql
@@ -110,3 +110,11 @@ ALTER TABLE `inlong_consume`
ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of consume' after `ext_params`;
CREATE INDEX consume_tenant_index
ON inlong_consume (`tenant`, `is_deleted`);
+
+-- To support multi-tenancy of workflow. Please see #8404
+ALTER TABLE `workflow_approver`
+ ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of workflow approver' after `task_name`;
+ALTER TABLE `workflow_process`
+ ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of workflow process' after `inlong_stream_id`;
+ALTER TABLE `workflow_task`
+ ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of workflow task' after `display_name`;