) ((java.lang.reflect.ParameterizedType) getClass()
+ .getGenericSuperclass())
+ .getActualTypeArguments()[0];
+ }
+
+ /**
+ * 获取查询对象,然后可以自行编写easy-query查询语句
+ *
+ * @return 查询对象
+ */
+ public EntityQueryable queryable() {
+ return entityQuery().queryable(entityClass);
+ }
+
+ /**
+ * 获取删除对象,然后可以自行编写easy-query删除语句
+ *
+ * @return 删除对象
+ */
+ public ExpressionDeletable
deletable() {
+ return entityQuery().deletable(entityClass);
+ }
+
+ /**
+ * 获取更新对象,然后可以自行编写easy-query更新语句
+ *
+ * @return 更新对象
+ */
+ public EntityUpdatable
updatable(T entity) {
+ return entityQuery().updatable(entity);
+ }
+
+ /**
+ * 获取更新对象,然后可以自行编写easy-query更新语句
+ *
+ * @return 更新对象
+ */
+ public ExpressionUpdatable
updatable() {
+ return entityQuery().updatable(entityClass);
+ }
+
+ /**
+ * 获取更新对象,然后可以自行编写easy-query更新语句
+ *
+ * @return 更新对象
+ */
+ public EntityInsertable
insertable(T entity) {
+ return entityQuery().insertable(entity);
+ }
+
+ @Override
+ public T selectById(Serializable id) {
+ return queryable()
+ .useLogicDelete(isLogicDelete())
+ .whereById(id)
+ .singleOrNull();
+ }
+
+ @Override
+ public List selectByIds(Collection extends Serializable> ids) {
+ return queryable()
+ .useLogicDelete(isLogicDelete())
+ .whereByIds(ids)
+ .toList();
+ }
+
+ @Override
+ public Page selectPage(T entity, Page page) {
+ UISort objectSort = UISort.of(page);
+ EasyPageResult pageResult = queryable()
+ .filterConfigure(NotNullOrEmptyValueFilter.DEFAULT)
+ .useLogicDelete(isLogicDelete())
+ .where(buildWhereCondition(entity))
+ .orderByObject(Objects.nonNull(objectSort), objectSort)
+ .toPageResult(page.getPageNum(), page.getPageSize());
+
+ Page rPage = new Page<>(pageResult.getData(), pageResult.getTotal());
+ rPage.setPageNum(page.getPageNum());
+ rPage.setPageSize(page.getPageSize());
+ return rPage;
+ }
+
+ @Override
+ public List selectList(T entity, WarmQuery query) {
+ UISort uiSort = UISort.of(query);
+ return queryable()
+ .filterConfigure(NotNullOrEmptyValueFilter.DEFAULT)
+ .useLogicDelete(isLogicDelete())
+ .where(buildWhereCondition(entity))
+ .orderByObject(Objects.nonNull(uiSort),uiSort)
+ .toList();
+ }
+
+ @Override
+ public long selectCount(T entity) {
+ return queryable()
+ .filterConfigure(NotNullOrEmptyValueFilter.DEFAULT)
+ .useLogicDelete(isLogicDelete())
+ .where(buildWhereCondition(entity))
+ .count();
+ }
+
+ @Override
+ public int save(T entity) {
+ return (int) insertable(entity)
+ .setSQLStrategy(SQLExecuteStrategyEnum.ONLY_NOT_NULL_COLUMNS)
+ .executeRows();
+ }
+
+ @Override
+ public int updateById(T entity) {
+ return (int) updatable(entity)
+ .useLogicDelete(isLogicDelete())
+ .setSQLStrategy(SQLExecuteStrategyEnum.ONLY_NOT_NULL_COLUMNS)
+ .executeRows();
+ }
+
+
+ @Override
+ public int deleteById(Serializable id) {
+ return (int) deletable()
+ .useLogicDelete(isLogicDelete())
+ .allowDeleteStatement(!isLogicDelete())
+ .whereById(id)
+ .executeRows();
+ }
+
+ @Override
+ public int deleteByIds(Collection extends Serializable> ids) {
+ return (int) deletable()
+ .useLogicDelete(isLogicDelete())
+ .allowDeleteStatement(!isLogicDelete())
+ .whereByIds(ids)
+ .executeRows();
+ }
+
+ @Override
+ public void saveBatch(List list) {
+ entityQuery().insertable(list)
+ .setSQLStrategy(SQLExecuteStrategyEnum.ONLY_NOT_NULL_COLUMNS)
+ .batch()
+ .executeRows();
+
+ }
+
+ @Override
+ public void updateBatch(List list) {
+ entityQuery().updatable(list)
+ .setSQLStrategy(SQLExecuteStrategyEnum.ONLY_NOT_NULL_COLUMNS)
+ .useLogicDelete(isLogicDelete())
+ .batch()
+ .executeRows();
+
+ }
+
+ public abstract SQLActionExpression1 buildWhereCondition(T entity);
+
+ public boolean isLogicDelete() {
+ return FlowEngine.getFlowConfig().isLogicDelete();
+ }
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowDefinition.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowDefinition.java
new file mode 100644
index 00000000..93a9bfe1
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowDefinition.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.dromara.warm.flow.core.entity.Definition;
+import org.dromara.warm.flow.core.entity.Node;
+import org.dromara.warm.flow.core.entity.User;
+import org.dromara.warm.flow.orm.entity.proxy.FlowDefinitionProxy;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 流程定义对象 flow_definition
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_definition")
+public class FlowDefinition implements Definition,ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 流程编码 */
+ private String flowCode;
+
+ /** 流程名称 */
+ private String flowName;
+
+ /**
+ * 设计器模型(CLASSICS经典模型 MIMIC仿钉钉模型)
+ */
+ private String modelValue;
+
+ /** 流程类别 */
+ private String category;
+
+ /** 流程版本 */
+ private String version;
+
+ /** 是否发布(0未发布 1已发布 9失效) */
+ private Integer isPublish;
+
+ /** 审批表单是否自定义(Y是 N否) */
+ private String formCustom;
+
+ /** 审批表单路径 */
+ private String formPath;
+
+ /** 监听器类型 */
+ private String listenerType;
+
+ /** 监听器路径 */
+ private String listenerPath;
+
+ /** 流程激活状态(0挂起 1激活)*/
+ private Integer activityStatus;
+
+ /** 扩展字段 */
+ private String ext;
+
+ @ColumnIgnore
+ private List nodeList = new ArrayList<>();
+
+ @ColumnIgnore
+ private List userList = new ArrayList<>();
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowForm.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowForm.java
new file mode 100644
index 00000000..f5568eea
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowForm.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.dromara.warm.flow.core.entity.Form;
+import org.dromara.warm.flow.orm.entity.proxy.FlowFormProxy;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+
+import java.util.Date;
+
+/**
+ * @author vanlin
+ * @since 2024/8/19 10:30
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_form")
+public class FlowForm implements Form, ProxyEntityAvailable {
+
+ /**
+ * 主键
+ */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /**
+ * 表单编码
+ */
+ private String formCode;
+
+ /**
+ * 表单名称
+ */
+ private String formName;
+
+ /**
+ * 表单版本
+ */
+ private String version;
+
+ /**
+ * 是否发布(0未发布 1已发布 9失效)
+ */
+ private Integer isPublish;
+
+ /**
+ * 表单类型(0内置表单 存 form_content 1外挂表单 存form_path)
+ */
+ private Integer formType;
+
+ /**
+ * 表单路径
+ */
+ private String formPath;
+
+ /**
+ * 表单内容
+ */
+ private String formContent;
+
+ /**
+ * 表单扩展,用户自行使用
+ */
+ private String ext;
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ /**
+ * 租户ID
+ */
+ private String tenantId;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /**
+ * 删除标记
+ */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowHisTask.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowHisTask.java
new file mode 100644
index 00000000..64605b0e
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowHisTask.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import org.dromara.warm.flow.core.entity.HisTask;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+import org.dromara.warm.flow.orm.entity.proxy.FlowHisTaskProxy;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 历史任务记录对象 flow_his_task
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_his_task")
+public class FlowHisTask implements HisTask, ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 任务开始时间 */
+ private Date createTime;
+
+ /** 审批完成时间 */
+ private Date updateTime;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 对应flow_definition表的id */
+ private Long definitionId;
+
+ /** 流程名称 */
+ @ColumnIgnore
+ private String flowName;
+
+ /** 流程实例表id */
+ private Long instanceId;
+
+ /** 任务表id */
+ private Long taskId;
+
+ /** 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) */
+ private Integer cooperateType;
+
+ /** 业务id */
+ @ColumnIgnore
+ private String businessId;
+
+ /** 开始节点编码 */
+ private String nodeCode;
+
+ /** 开始节点名称 */
+ private String nodeName;
+
+ /** 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nodeType;
+
+ /** 目标节点编码 */
+ private String targetNodeCode;
+
+ /** 结束节点名称 */
+ private String targetNodeName;
+
+ /** 审批者 */
+ private String approver;
+
+ /** 协作人(只有转办、会签、票签、委派) */
+ private String collaborator;
+
+ /** 权限标识 permissionFlag的list形式 */
+ @ColumnIgnore
+ private List permissionList;
+
+ /**
+ * 跳转类型(PASS通过 REJECT退回 NONE无动作)
+ */
+ private String skipType;
+
+ /**
+ * 流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)
+ **/
+ private String flowStatus;
+
+ /** 审批意见 */
+ private String message;
+
+ /** 流程变量 */
+ private String variable;
+
+ /** 业务详情 存业务类的json */
+ private String ext;
+
+ /** 创建者 */
+ @ColumnIgnore
+ private String createBy;
+
+
+ /** 审批表单是否自定义(Y=是 N=否) */
+ private String formCustom;
+
+ /** 审批表单是否自定义(Y是 2否) */
+ private String formPath;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowInstance.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowInstance.java
new file mode 100644
index 00000000..1e5f1177
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowInstance.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.dromara.warm.flow.core.entity.Instance;
+import org.dromara.warm.flow.orm.entity.proxy.FlowInstanceProxy;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+
+import java.util.Date;
+
+/**
+ * 流程实例对象 flow_instance
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_instance")
+public class FlowInstance implements Instance, ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 对应flow_definition表的id */
+ private Long definitionId;
+
+ /** 流程名称 */
+ @ColumnIgnore
+ private String flowName;
+
+ /** 业务id */
+ private String businessId;
+
+ /** 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nodeType;
+
+ /** 流程节点编码 每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制 */
+ private String nodeCode;
+
+ /** 流程节点名称 */
+ private String nodeName;
+
+ /** 流程变量 */
+ private String variable;
+
+ /** 流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回) */
+ private String flowStatus;
+
+ /** 流程激活状态(0挂起 1激活)*/
+ private Integer activityStatus;
+
+ /** 审批表单是否自定义(Y是 N否) */
+ @ColumnIgnore
+ private String formCustom;
+
+ /** 审批表单是否自定义(Y=是 N=否) */
+ @ColumnIgnore
+ private String formPath;
+
+ /** 流程定义json */
+ private String defJson;
+
+ /** 扩展字段 */
+ private String ext;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowNode.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowNode.java
new file mode 100644
index 00000000..c3860cd2
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowNode.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.dromara.warm.flow.core.entity.Node;
+import org.dromara.warm.flow.core.entity.Skip;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+import org.dromara.warm.flow.orm.entity.proxy.FlowNodeProxy;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 流程节点对象 flow_node
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_node")
+public class FlowNode implements Node, ProxyEntityAvailable {
+
+ /** 跳转条件 */
+ @ColumnIgnore
+ List skipList = new ArrayList<>();
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM, strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nodeType;
+
+ /** 流程id */
+ private Long definitionId;
+
+ /** 流程节点编码 每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制 */
+ private String nodeCode;
+
+ /** 流程节点名称 */
+ private String nodeName;
+
+ /** 权限标识(权限类型:权限标识,可以多个,用@@隔开) */
+ private String permissionFlag;
+
+ /** 流程签署比例值 */
+ private String nodeRatio;
+
+ /** 流程节点坐标 */
+ private String coordinate;
+
+ /**
+ * 版本
+ * @deprecated 下个版本废弃
+ **/
+ private String version;
+
+ /** 任意结点跳转 */
+ private String anyNodeSkip;
+
+ /** 监听器类型 */
+ private String listenerType;
+
+ /** 监听器路径 */
+ private String listenerPath;
+
+ /**
+ * 审批表单是否自定义(Y=是 N=否)
+ */
+ private String formCustom;
+
+ /**
+ * 审批表单路径
+ */
+ private String formPath;
+
+ /**
+ * 节点扩展属性
+ */
+ private String ext;
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowSkip.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowSkip.java
new file mode 100644
index 00000000..3a9fda11
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowSkip.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import org.dromara.warm.flow.core.entity.Skip;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+import org.dromara.warm.flow.orm.entity.proxy.FlowSkipProxy;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 节点跳转关联对象 flow_skip
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_skip")
+public class FlowSkip implements Skip, ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 流程id */
+ private Long definitionId;
+
+ /** 节点id */
+ @ColumnIgnore
+ private Long nodeId;
+
+ /** 当前流程节点的编码 */
+ private String nowNodeCode;
+
+ /** 当前节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nowNodeType;
+
+ /** 下一个流程节点的编码 */
+ private String nextNodeCode;
+
+ /** 下一个节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nextNodeType;
+
+ /** 跳转名称 */
+ private String skipName;
+
+ /** 跳转类型(PASS审批通过 REJECT退回) */
+ private String skipType;
+
+ /** 跳转条件 */
+ private String skipCondition;
+
+ /** 流程跳转坐标 */
+ private String coordinate;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowTask.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowTask.java
new file mode 100644
index 00000000..36039127
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowTask.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import org.dromara.warm.flow.core.entity.Task;
+import org.dromara.warm.flow.core.entity.User;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+import org.dromara.warm.flow.orm.entity.proxy.FlowTaskProxy;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 待办任务记录对象 flow_task
+ *
+ * @author warm
+ * @since 2023-03-29
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_task")
+public class FlowTask implements Task, ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 对应flow_definition表的id */
+ private Long definitionId;
+
+ /** 流程实例表id */
+ private Long instanceId;
+
+ /** 流程名称 */
+ @ColumnIgnore
+ private String flowName;
+
+ /** 业务id */
+ @ColumnIgnore
+ private String businessId;
+
+ /** 节点编码 */
+ private String nodeCode;
+
+ /** 节点名称 */
+ private String nodeName;
+
+ /** 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) */
+ private Integer nodeType;
+
+ /**
+ * 流程状态(0待提交 1审批中 2审批通过 4终止 5作废 6撤销 8已完成 9已退回 10失效 11拿回)
+ */
+ private String flowStatus;
+
+ /** 权限标识 permissionFlag的list形式 */
+ @ColumnIgnore
+ private List permissionList;
+
+ /** 流程用户列表 */
+ @ColumnIgnore
+ private List userList;
+
+ /** 审批表单是否自定义(Y=是 N=否) */
+ private String formCustom;
+
+ /** 审批表单 */
+ private String formPath;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowUser.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowUser.java
new file mode 100644
index 00000000..0763c50f
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/entity/FlowUser.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2024-2025, Warm-Flow (290631660@qq.com).
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.dromara.warm.flow.orm.entity;
+
+import com.easy.query.core.annotation.*;
+import com.easy.query.core.basic.extension.logicdel.LogicDeleteStrategyEnum;
+import com.easy.query.core.proxy.ProxyEntityAvailable;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.dromara.warm.flow.core.entity.User;
+import org.dromara.warm.flow.orm.strategy.WarmFlowLogicDeleteStrategy;
+import org.dromara.warm.flow.orm.entity.proxy.FlowUserProxy;
+
+import java.util.Date;
+
+/**
+ * 流程用户对象 flow_user
+ *
+ * @author xiarg
+ * @since 2024/5/10 10:58
+ */
+@Data
+@Accessors(chain = true)
+@EntityProxy
+@Table("flow_user")
+public class FlowUser implements User, ProxyEntityAvailable {
+
+ /** 主键 */
+ @Column(value = "id", primaryKey = true)
+ private Long id;
+
+ /** 创建时间 */
+ private Date createTime;
+
+ /** 更新时间 */
+ private Date updateTime;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /** 租户ID */
+ private String tenantId;
+
+ /** 删除标记 */
+ @LogicDelete(strategy = LogicDeleteStrategyEnum.CUSTOM,strategyName = WarmFlowLogicDeleteStrategy.NAME)
+ private String delFlag;
+
+ /** 人员类型(1代办任务的审批人权限 2代办任务的转办人权限 3待办任务的委托人权限) */
+ private String type;
+
+ /** 权限人 */
+ private String processedBy;
+
+ /** 任务表id */
+ private Long associated;
+
+}
diff --git a/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/interceptor/TenantInterceptor.java b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/interceptor/TenantInterceptor.java
new file mode 100644
index 00000000..499064c5
--- /dev/null
+++ b/warm-flow-orm/warm-flow-easy-query/warm-flow-easy-query-core/src/main/java/org/dromara/warm/flow/orm/interceptor/TenantInterceptor.java
@@ -0,0 +1,103 @@
+package org.dromara.warm.flow.orm.interceptor;
+
+import com.easy.query.core.basic.extension.interceptor.EntityInterceptor;
+import com.easy.query.core.basic.extension.interceptor.PredicateFilterInterceptor;
+import com.easy.query.core.expression.parser.core.base.WherePredicate;
+import com.easy.query.core.expression.segment.condition.PredicateSegment;
+import com.easy.query.core.expression.segment.index.EntitySegmentComparer;
+import com.easy.query.core.expression.sql.builder.EntityInsertExpressionBuilder;
+import com.easy.query.core.expression.sql.builder.EntityUpdateExpressionBuilder;
+import com.easy.query.core.expression.sql.builder.LambdaEntityExpressionBuilder;
+import com.easy.query.core.expression.sql.builder.impl.DeleteExpressionBuilder;
+import com.easy.query.core.expression.sql.builder.impl.QueryExpressionBuilder;
+import com.easy.query.core.expression.sql.builder.impl.UpdateExpressionBuilder;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.warm.flow.core.FlowEngine;
+import org.dromara.warm.flow.core.entity.RootEntity;
+import org.dromara.warm.flow.core.handler.TenantHandler;
+import org.dromara.warm.flow.core.utils.ObjectUtil;
+import org.dromara.warm.flow.core.utils.StringUtils;
+
+/**
+ * 租户拦截器
+ *
+ * @author warm
+ * @since 2025/12/20
+ */
+@Slf4j
+public class TenantInterceptor implements EntityInterceptor, PredicateFilterInterceptor {
+
+ public static final String NAME = "TenantInterceptor";
+
+ @Override
+ public String name() {
+ return NAME;
+ }
+
+ @Override
+ public boolean apply(Class> entityClass) {
+ return true;
+ }
+
+ @Override
+ public void configure(Class> entityClass, LambdaEntityExpressionBuilder lambdaEntityExpressionBuilder, WherePredicate