本文以数据字典形式梳理一套工作流引擎的组织结构建模方式,包括五张核心表、三种运行模式与视图/接口两种集成路径,供系统集成与方案设计参考。
组织结构是指系统运行所依赖的人员、部门、角色,以及它们之间的对应关系。该引擎 将这些数据持久化在 Port_* 系列数据表中(实体类位于 引擎内核命名空间 命名空间)。
核心五表(视图/接口集成时通常需要映射这五张表):
表名 | 实体类 | 说明 |
|---|---|---|
Port_Emp | Emp | 人员(用户)。主键 No;FK_Dept 为主部门;含姓名、手机、邮箱、状态等。SAAS 模式下另有 UserID 字段,账号 No 通常为 组织编号_UserID 格式。 |
Port_Dept | Dept | 部门。树形结构,ParentNo 表示上级部门,NameOfPath 为部门全路径;Leader 为部门领导账号;OrgNo 标识所属组织。 |
Port_Station | Station | 角色(岗位)。流程选人规则的核心维度之一;通过 FK_StationType 归属角色类型;集团/SAAS 模式下含 OrgNo 做组织隔离。 |
Port_DeptEmp | DeptEmp | 部门-人员。支持一人多部门(兼职);主键 MyPK = FK_Dept + "_" + FK_Emp。删除记录时会级联清理该人员在该部门下的角色关系。 |
Port_DeptEmpStation | DeptEmpStation | 部门-角色-人员。三要素关联,是流程节点"按部门+角色找人"的数据基础;主键 MyPK = FK_Dept + "_" + FK_Emp + "_" + FK_Station。 |
扩展表(多组织模式下使用,集成时按需处理):
表名 | 实体类 | 说明 |
|---|---|---|
Port_Org | Org | 组织/租户。集团模式与 SAAS 模式的隔离单元;No 通常与根部门编号相同;Adminer 为主管理员。 |
Port_OrgAdminer | OrgAdminer | 组织管理员。记录主管理员与二级管理员,可配置流程/表单目录权限。 |
Port_StationType | StationType | 角色类型。对 Port_Station 做分类,如"管理岗""业务岗"。 |
Port_Team / Port_TeamType / Port_TeamEmp | Team 等 | 标签(用户组)。用于人员分组,辅助选人,非流程核心依赖。 |
表间关系:
要点:
Port_Emp.FK_Dept 归属一个主部门;通过 Port_DeptEmp 可额外挂接其他部门。Port_DeptEmpStation,而非 Port_Station 本身。OrgNo 字段做数据隔离。该引擎 支持三种组织结构运行模式,通过配置项 该引擎RunModel 切换:
该引擎.propertiesapp.config / appsettings.json值 | 模式 | 说明 |
|---|---|---|
0 | 单组织 | 只有一个管理员 admin,管理组织、数据源及组织内流程。无 OrgNo 隔离。 |
1 | 集团组织 | 一个集团管理员 admin 可创建多个独立组织;每个组织有主管理员和若干二级管理员;各组织流程/表单默认互不可见,可通过 OrgNo 隔离;用户账号全局唯一;组织间可共享流程。类比:一个生产队(集团)管理多户人家(组织),每户有家长(组织管理员)。 |
2 | SAAS 模式 | 超级管理员可开通租户;每个租户有独立管理员;用户账号可跨租户重复(如租户 1 和租户 2 均可有 001 用户,通过 OrgNo + UserID 区分);租户间无业务往来。类比:联合国(超级管理员)下辖多个独立国家(租户)。 |
该引擎 运行在内置组织结构之上。若业务系统已有自己的组织数据,需保持两边一致,这一过程称为组织结构集成——本质是让 该引擎 能读取您系统的部门、人员、角色数据。
两种集成方式:
方式 | 做法 | 适用场景 |
|---|---|---|
视图模式 | 删除 该引擎 侧五张核心表,创建同结构的数据库视图,将外部数据映射过来。 | 推荐:该引擎 库与业务库可合并部署,无特殊隔离要求、不做流程服务中心时优先采用。 |
接口模式(数据同步) | 业务系统组织数据变更时,调用 该引擎 提供的同步 API 增删改对应记录。核心接口见 OrganizationAPI:Port_Org_Save、Port_Dept_Save、Port_Emp_Save、Port_Station_Save 等。 | 该引擎 库与业务库不在同一服务器,或无法共用数据库时采用。 |
接口同步注意事项(参考 Port_Emp_Save 实现):
Port_Emp_Save,传入部门编号及该部门下的角色编号集合。Port_Emp_Save。kvs 参数必须包含 @UserID=xxxx;用户编号通常为 组织编号_UserID 格式。总结:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。