
从「队长」到「联合国」——驰骋 BPM 三态组织类型划分白皮书文档定位驰骋 BP 架构 · 4.3 组织结构设计组织类型划分文档版本2026-06依据代码CCFlow/Components/BP.En30BP.Port、BP.Web、BP.Difference、BP.Sys姊妹文档组织结构设计技术报告 · 五表工程价值宣传 · 组织结构数据字典开篇为什么要有「三种组织」在企业数字化里组织结构从来不是一张通讯录——它是流程找人、权限隔离、低代码应用分域的共同地基。人员、部门、角色以及它们之间的对应关系决定了系统「谁能看见什么、谁能审批什么」。驰骋 BPMCCBPM将这套语义持久化在Port_*系列数据表中实体类统一归属BP.Port命名空间。五张核心表Port_Dept、Port_Emp、Port_Station、Port_DeptEmp、Port_DeptEmpStation撑起全部组织语义在此基础上驰骋用一个配置项切换三种截然不同的运行世界配置值枚举俗称一句话比喻0CCBPMRunModel.Single单组织版一个家一位家长1CCBPMRunModel.GroupInc集团版一个生产队队长管多户人家2CCBPMRunModel.SAAS多租户版联合国开大会各国互不隶属这不是三套产品而是同一套引擎、同一套表结构、三种隔离策略——从单机部署到集团管控再到 SaaS 商业化改配置即可演进不必推倒重来。一、代码里的「总开关」CCBPMRunModel运行模式在源码中定义为枚举CCBPMRunModelBP.Sys.EnumLabpublicenumCCBPMRunModel{Single,// 单机版 / 单组织GroupInc,// 集团模式SAAS,// 多租户模式}系统通过appsettings.json/app.config中的CCBPMRunModel键读取逻辑集中在SystemConfig.CCBPMRunModel配置值生效模式0或3单组织Single1集团GroupInc2多租户SAAS设计要点全站数百处业务分支——人员编号规则、管理员判定、数据查询过滤、枚举共享——均读取这一开关。组织隔离不是某个模块的「补丁」而是贯穿 BP.En30 引擎层的横切能力。二、组织数据的共同底座Port_*与BP.Port无论哪种运行模式组织结构的核心语义不变OrgNoFK_DeptFK_DeptFK_EmpFK_StationFK_DeptFK_EmpOrgNoPort_OrgPort_DeptPort_EmpPort_DeptEmpPort_StationPort_DeptEmpStationPort_OrgAdminer表名实体类职责Port_DeptDept部门树ParentNoOrgNoPort_EmpEmp人员主档含主部门FK_DeptPort_StationStation角色岗位Port_DeptEmpDeptEmp部门—人员支持兼职Port_DeptEmpStationDeptEmpStation部门—角色—人员流程选人核心Port_OrgOrg组织/租户单元Port_OrgAdminer—主管理员与二级管理员流程引擎「按部门 角色找人」的 SQL 直指五表核心SELECTFK_EmpFROMPort_DeptEmpStationWHEREFK_Station角色编号ANDFK_Dept部门编号三种模式共享这套表差异体现在OrgNo怎么用、账号是否全局唯一、数据能否跨组织共享。三、单组织版一台服务器一位admin3.1 业务画像典型场景中小企业、部门内网、POC 演示、私有化单实例部署。全系统只有一个逻辑组织通常由账号admin统一管理组织、数据源与流程。无需OrgNo隔离——WebUser.OrgNo在单组织模式下直接返回空字符串。3.2 代码印证组织编号为空WebUser.csif(BP.Difference.SystemConfig.CCBPMRunModelCCBPMRunModel.Single)return;// OrgNo 属性管理员判定admin/system账号或Port_OrgAdminer中的二级管理员或历史GloVar标记均可获得管理权限。人员编号Emp.UserID与Emp.No等价无租户前缀// SAAS 模式下 UserID 可重复单组织下 UserID 即 Noif(BP.Difference.SystemConfig.CCBPMRunModelCCBPMRunModel.SAAS)returnthis.GetValStringByKey(EmpAttr.UserID);returnthis.GetValStringByKey(EmpAttr.No);数据查询枚举、表单、角色等实体不附加OrgNo过滤条件模型最简、集成成本最低。3.3 一句话总结单组织版 零隔离开销的完整 BPM。适合「我就要一套流程平台」的客户部署快、学习曲线平。四、集团版生产队与多户人家4.1 业务画像驰骋用「生产队」比喻集团版形象且准确集团管理员admin相当于生产队长可创建多个下属组织。每个组织一位主管理员家长在Port_Org.Adminer登记可配置多位二级管理员Port_OrgAdminer。数据隔离各部门、流程、表单、角色默认按OrgNo隔离A 组织设计的流程B 组织默认看不见。选择性共享集团模式下枚举等资源支持IsShare标记可将本组织资产共享给其他组织使用。账号全局唯一同一工号在全集团只出现一次Port_Emp.No唯一人员可在组织间调配符合大型国企、控股集团的 HR 实践。4.2 代码印证组织实体BP.WF.Port.Admin2Group.Org→ 表Port_OrgMapmapnewMap(Port_Org,独立组织);map.AddTBString(OrgAttr.Adminer,null,创始人,...);// 主管理员管理员层级WebUser.IsAdmin/WebUser.IsAdmin2IsAdminadmin系统账号或Port_OrgAdminer中当前组织的管理员或Port_Org.Adminer主管理员。IsAdmin2在Port_OrgAdminer中但不是Port_Org.Adminer主管理员 → 二级协助管理员。组织上下文注入集团模式下登录后WebUser.OrgNo从Port_Emp按人员No解析stringnoDBAccess.RunSQLReturnString(SELECT OrgNo FROM Port_Emp WHERE NoWebUser.No);数据隔离 跨组织共享以枚举为例MapData.cs// 本组织枚举sqlWhere EnumKey IN (...) AND OrgNoorgNo;// 集团共享其他组织 IsShare1 的枚举 UNION 进来if(CCBPMRunModelCCBPMRunModel.GroupInc){sqlEnum UNION SELECT A.* FROM ... AND B.IsShare1 AND B.OrgNo!WebUser.OrgNo;}Sys_EnumMain在集团模式下显式提供共享开关if(SystemConfig.CCBPMRunModelCCBPMRunModel.GroupInc)map.AddBoolean(IsShare,true,是否共享给其他组织?,true,true);角色体系可按组织定制Station.csGroupStationModel支持「每组织独立岗责」或「每部门独立岗责」适应不同集团管控粒度。4.3 一句话总结集团版 统一身份 分权治理 可选共享。一个账号走天下各子公司流程自治集团资产可下沉复用。五、SAAS 多租户版联合国与各小国5.1 业务画像超级管理员admin平台运营方负责开通租户组织。每个租户一位管理员可设多位二级管理员——与集团版表面相似但本质不同租户之间无业务往来、无隶属关系彼此完全隔离。用户账号租户内唯一、跨租户可重复租户 A 的001与租户 B 的001是两个人。物理上可同库同表逻辑上靠OrgNo 编号前缀实现硬隔离。5.2 代码印证账号双字段设计Emp.cs字段含义UserID租户内登录名可重复No全局主键格式OrgNo_UserID/// 用户ID: SAAS模式下 UserID 是可以重复的.if(CCBPMRunModelCCBPMRunModel.SAAS){if(!value.StartsWith(WebUser.OrgNo_))this.SetValByKey(EmpAttr.No,WebUser.OrgNo_value);}对外暴露的统一用户标识WebUser.UserIDif(SystemConfig.CCBPMRunModelCCBPMRunModel.SAAS)returnWebUser.OrgNo_WebUser.No;// 全局唯一returnWebUser.No;组织解析按 UserID与集团版按No不同// SAAS按 UserID 查 OrgNoSELECT OrgNo FROM Port_Emp WHERE UserIDWebUser.No部门人员关系带 OrgNoDeptEmp.csSAAS 模式下Port_DeptEmp查询附加OrgNo条件防止跨租户兼职数据串读。SQL 构建层适配SqlBuilder.cs关联Port_Emp时SAAS 模式自动将外键字段映射为UserID保证报表与实体查询在租户语义下正确。枚举主键租户化SysEnumMain设计注释// 如果是 SAAS 模式, No OrgNo _ EnumKey5.3 一句话总结SAAS 版 强隔离的小国家模型。平台方一套部署服务千企租户账号可「重名」引擎用OrgNo_前缀保证全局不碰撞。六、三态对比总览维度单组织Single集团GroupIncSAAS 多租户配置值012顶层管理员admin集团admin平台admin组织单元无逻辑单组织Port_Org可多级Port_Org租户OrgNo作用不使用空核心隔离键核心隔离键人员No唯一性全局唯一全局唯一OrgNo_UserID全局唯一UserID可重复否等同 No否是租户内唯一即可跨组织数据共享不适用支持如IsShare不支持组织间关系—可有层级/隶属平级、互不往来典型客户中小企业、内网国企集团、控股公司ISV、云 BPM 平台比喻一家一户生产队 多户人家联合国 各国多租户 SAAS平台 admin租户 1: 001租户 2: 001集团 GroupIncIsShare 可选集团 admin组织 A Adminer组织 B Adminer单组织 Singleadmin全系统组织数据七、与流行设计的对比7.1 业界常见三种多组织方案方案代表思路典型实现A. 独立库/独立 Schema每租户一个数据库阿里云 RDS 多库、部分 OAB. 共享库 行级tenant_id所有表加租户列Salesforce、多数 SaaS ORMC. 共享库 逻辑组织树一棵大树节点即组织用友 NC、部分 ERP7.2 驰骋方案的定位驰骋走的是「B C 混合」路线共享库、共享核心表五表 OrgNo部署与运维成本低于独立库方案集团版在 B 的基础上增加组织树 共享标记C 的变体满足「总部统管、分子公司自治」SAAS 版在 B 的基础上增加OrgNo_编号前缀解决「租户内账号可重名」的商用刚需。7.3 对比矩阵评价维度独立库/Schema纯tenant_id行隔离驰骋三态方案租户强隔离★★★★★★★★★★★★SAAS 前缀 OrgNo 双保险部署运维成本★★★★★★★★★★★★单库单实例集团内资源共享★★★★★★★★★IsShare等显式机制从单组织平滑升级★★★★★★★★★改配置 补OrgNo集成 HR 主数据★★★★★★★★★★★五表与编制语义对齐防串租户工程纪律物理隔离依赖每 SQL 带条件引擎层WebUser.OrgNo 实体 Hidden 条件跨租户账号重名天然支持需额外设计原生支持SAASUserID八、这样设计的优点8.1 一套代码三种商业形态从私有化单机到集团管控再到云端 SaaS无需 fork 代码分支。CCBPMRunModel一处配置人员实体、管理员逻辑、枚举查询、SQL 构建器同步切换——显著降低产品线的研发与测试矩阵。8.2 组织语义不随模式而变五表核心模型在三种模式下保持一致流程选人规则、部门树、兼职与角色绑定不因升级模式而失效。实施顾问学会一套组织建模方法即可服务不同规模客户。8.3 隔离策略与业务场景精准匹配单组织零开销最快上线集团全局账号 分权 可选共享贴合国企治理SAAS租户账号可重名降低中小企业上云门槛001、admin无需加随机后缀。8.4 引擎层强制隔离而非靠自觉集团/SAAS 模式下Emp、Station、DeptEmp等实体的EnMap自动注入if(CCBPMRunModel!CCBPMRunModel.Single)map.AddHidden(OrgNo,,WebUser.OrgNo);列表查询、表单维护默认带组织过滤减少「忘写 WHERE OrgNo」导致的数据穿透。8.5 管理员模型清晰可落地Port_Org.Adminer主管理员Port_OrgAdminer含二级 系统admin三级权限边界在WebUser.IsAdmin/IsAdmin2中集中实现便于审计与权责划分。九、这样设计的局限与应对局限说明应对建议共享库架构的上限超大规模租户万级以上单库压力需分库分表按OrgNo水平拆分只读副本冷热数据归档引擎分支散布CCBPMRunModel判断分布在多文件新功能优先走WebUser.OrgNo与实体 Hidden 约定避免重复造隔离逻辑集团 vs SAAS 概念相近实施顾问可能混淆牢记集团 账号全局唯一 可共享SAAS 账号可重名 绝不共享SAAS 编号前缀外部系统集成时需传递完整No使用WebUser.UserID已含OrgNo_作为对外主键文档明确映射规则单组织迁移升级到集团需补录OrgNo、创建Port_Org提供OrganizationAPI同步接口与数据初始化工具纯行隔离非物理隔离金融等强合规场景可能要求独立库支持按租户导出/独立部署实例敏感客户可采用「一租户一实例」托管十、选型指南我该怎么选┌─────────────────────────────────────┐ │ 需要 BPM 平台 │ └─────────────────┬───────────────────┘ │ ┌───────────────────────┼───────────────────────┐ │ │ │ 仅一个法人实体 多法人/多子公司 对外售卖云服务 无组织隔离诉求 同一套 HR 主数据 租户互不感知 │ │ │ ▼ ▼ ▼ CCBPMRunModel0 CCBPMRunModel1 CCBPMRunModel2 单组织版 集团版 SAAS 版如果你……推荐模式500 人以下企业一套流程走天下单组织央企/集团各子公司自建流程但账号统一集团软件公司做 BPM 云平台客户自助开通SAAS先从单组织起步未来可能集团化单组织 → 集团补OrgNo改配置已集团化要对外 SaaS 化评估账号模型差异规划UserID与编号迁移十一、结语一种架构哲学驰骋 BPM 的组织类型划分体现的不仅是技术选型更是一种务实的企业软件哲学不为一棵树砍整片森林——五表撑起全部组织语义不为一种客户造一个产品——一个CCBPMRunModel切换三种商业世界不让流程引擎绕过组织——OrgNo从登录态渗透到查询、枚举、角色与管理员判定。从单组织的「一位admin」到集团版的「队长与家长」再到 SAAS 的「联合国与各小国」——驰骋用同一套Port_*底座把组织结构做成了可生长、可商业化、可集成的平台能力。这正是驰骋 BP 架构在 4.3 节所要传达的核心组织类型不是表多表少的问题而是隔离边界与商业形态是否匹配的问题。附录关键源码索引主题路径运行模式枚举BP.En30/Sys/EnumLab.cs→CCBPMRunModel配置读取BP.En30/Difference/SystemConfig.cs→CCBPMRunModel登录上下文BP.En30/Web/WebUser.cs→OrgNo,IsAdmin,UserID人员与 SAAS 编号BP.En30/Port/Emp.cs部门BP.En30/Port/Dept.cs角色与集团岗责BP.En30/Port/Station.cs组织实体BP.WF/Port/Admin2Group/Org.cs→Port_Org枚举共享BP.En30/Sys/SysEnumMain.cs,MapData.csSAAS SQL 适配BP.En30/En/SqlBuilder.cs真实用户号BP.En30/Sys/Base/Glo.cs→UserNo驰骋工作流团队 · 组织结构系列文档 · 2026