当前位置: 首页 > news >正文

从队长到联合国-驰骋BPM三态组织类型划分白皮书

从「队长」到「联合国」——驰骋 BPM 三态组织类型划分白皮书

文档定位:驰骋 BP 架构 · 4.3 组织结构设计(组织类型划分)
文档版本:2026-06
依据代码CCFlow/Components/BP.En30BP.PortBP.WebBP.DifferenceBP.Sys
姊妹文档:组织结构设计技术报告 · 五表工程价值宣传 · 组织结构数据字典


开篇:为什么要有「三种组织」?

在企业数字化里,组织结构从来不是一张通讯录——它是流程找人、权限隔离、低代码应用分域的共同地基。人员、部门、角色,以及它们之间的对应关系,决定了系统「谁能看见什么、谁能审批什么」。

驰骋 BPM(CCBPM)将这套语义持久化在Port_*系列数据表中,实体类统一归属BP.Port命名空间。五张核心表(Port_DeptPort_EmpPort_StationPort_DeptEmpPort_DeptEmpStation)撑起全部组织语义;在此基础上,驰骋用一个配置项切换三种截然不同的运行世界:

配置值枚举俗称一句话比喻
0CCBPMRunModel.Single单组织版一个家,一位家长
1CCBPMRunModel.GroupInc集团版一个生产队,队长管多户人家
2CCBPMRunModel.SAAS多租户版联合国开大会,各国互不隶属

这不是三套产品,而是同一套引擎、同一套表结构、三种隔离策略——从单机部署到集团管控,再到 SaaS 商业化,改配置即可演进,不必推倒重来。


一、代码里的「总开关」:CCBPMRunModel

运行模式在源码中定义为枚举CCBPMRunModelBP.Sys.EnumLab):

publicenumCCBPMRunModel{Single,// 单机版 / 单组织GroupInc,// 集团模式SAAS,// 多租户模式}

系统通过appsettings.json/app.config中的CCBPMRunModel键读取,逻辑集中在SystemConfig.CCBPMRunModel

配置值生效模式
03单组织(Single
1集团(GroupInc
2多租户(SAAS

设计要点:全站数百处业务分支——人员编号规则、管理员判定、数据查询过滤、枚举共享——均读取这一开关。组织隔离不是某个模块的「补丁」,而是贯穿 BP.En30 引擎层的横切能力


二、组织数据的共同底座:Port_*BP.Port

无论哪种运行模式,组织结构的核心语义不变:

OrgNo

FK_Dept

FK_Dept

FK_Emp

FK_Station

FK_Dept

FK_Emp

OrgNo

Port_Org

Port_Dept

Port_Emp

Port_DeptEmp

Port_Station

Port_DeptEmpStation

Port_OrgAdminer

表名实体类职责
Port_DeptDept部门树,ParentNo+OrgNo
Port_EmpEmp人员主档,含主部门FK_Dept
Port_StationStation角色(岗位)
Port_DeptEmpDeptEmp部门—人员(支持兼职)
Port_DeptEmpStationDeptEmpStation部门—角色—人员(流程选人核心)
Port_OrgOrg组织/租户单元
Port_OrgAdminer主管理员与二级管理员

流程引擎「按部门 + 角色找人」的 SQL 直指五表核心:

SELECTFK_EmpFROMPort_DeptEmpStationWHEREFK_Station='角色编号'ANDFK_Dept='部门编号'

三种模式共享这套表,差异体现在OrgNo怎么用、账号是否全局唯一、数据能否跨组织共享。


三、单组织版:一台服务器,一位admin

3.1 业务画像

  • 典型场景:中小企业、部门内网、POC 演示、私有化单实例部署。
  • 全系统只有一个逻辑组织,通常由账号admin统一管理组织、数据源与流程。
  • 无需OrgNo隔离——WebUser.OrgNo在单组织模式下直接返回空字符串。

3.2 代码印证

组织编号为空WebUser.cs):

if(BP.Difference.SystemConfig.CCBPMRunModel==CCBPMRunModel.Single)return"";// OrgNo 属性

管理员判定admin/system账号,或Port_OrgAdminer中的二级管理员,或历史GloVar标记均可获得管理权限。

人员编号Emp.UserIDEmp.No等价,无租户前缀:

// SAAS 模式下 UserID 可重复;单组织下 UserID 即 Noif(BP.Difference.SystemConfig.CCBPMRunModel==CCBPMRunModel.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_Org):

Mapmap=newMap("Port_Org","独立组织");map.AddTBString(OrgAttr.Adminer,null,"创始人",...);// 主管理员

管理员层级WebUser.IsAdmin/WebUser.IsAdmin2):

  • IsAdminadmin系统账号,或Port_OrgAdminer中当前组织的管理员,或Port_Org.Adminer主管理员。
  • IsAdmin2:在Port_OrgAdminer中但不是Port_Org.Adminer主管理员 → 二级协助管理员。

组织上下文注入:集团模式下登录后,WebUser.OrgNoPort_Emp按人员No解析:

stringno=DBAccess.RunSQLReturnString("SELECT OrgNo FROM Port_Emp WHERE No='"+WebUser.No+"'");

数据隔离 + 跨组织共享(以枚举为例,MapData.cs):

// 本组织枚举sqlWhere=" EnumKey IN (...) AND OrgNo='"+orgNo+"'";// 集团共享:其他组织 IsShare=1 的枚举 UNION 进来if(CCBPMRunModel==CCBPMRunModel.GroupInc){sqlEnum+=" UNION SELECT A.* FROM ... AND B.IsShare=1 AND B.OrgNo!='"+WebUser.OrgNo+"'";}

Sys_EnumMain在集团模式下显式提供共享开关:

if(SystemConfig.CCBPMRunModel==CCBPMRunModel.GroupInc)map.AddBoolean("IsShare",true,"是否共享给其他组织?",true,true);

角色体系可按组织定制Station.cs):GroupStationModel支持「每组织独立岗责」或「每部门独立岗责」,适应不同集团管控粒度。

4.3 一句话总结

集团版 =统一身份 + 分权治理 + 可选共享。一个账号走天下,各子公司流程自治,集团资产可下沉复用。


五、SAAS 多租户版:联合国与各小国

5.1 业务画像

  • 超级管理员admin:平台运营方,负责开通租户(组织)。
  • 每个租户一位管理员,可设多位二级管理员——与集团版表面相似,但本质不同
    • 租户之间无业务往来、无隶属关系,彼此完全隔离。
    • 用户账号租户内唯一、跨租户可重复:租户 A 的001与租户 B 的001是两个人。
    • 物理上可同库同表,逻辑上靠OrgNo+ 编号前缀实现硬隔离。

5.2 代码印证

账号双字段设计Emp.cs):

字段含义
UserID租户内登录名,可重复
No全局主键,格式OrgNo_UserID
/// 用户ID: SAAS模式下 UserID 是可以重复的.if(CCBPMRunModel==CCBPMRunModel.SAAS){if(!value.StartsWith(WebUser.OrgNo+"_"))this.SetValByKey(EmpAttr.No,WebUser.OrgNo+"_"+value);}

对外暴露的统一用户标识WebUser.UserID):

if(SystemConfig.CCBPMRunModel==CCBPMRunModel.SAAS)returnWebUser.OrgNo+"_"+WebUser.No;// 全局唯一returnWebUser.No;

组织解析按 UserID(与集团版按No不同):

// SAAS:按 UserID 查 OrgNo"SELECT OrgNo FROM Port_Emp WHERE UserID='"+WebUser.No+"'"

部门人员关系带 OrgNoDeptEmp.cs):SAAS 模式下Port_DeptEmp查询附加OrgNo条件,防止跨租户兼职数据串读。

SQL 构建层适配SqlBuilder.cs):关联Port_Emp时,SAAS 模式自动将外键字段映射为UserID,保证报表与实体查询在租户语义下正确。

枚举主键租户化SysEnumMain设计注释):

// 如果是 SAAS 模式, No = OrgNo + "_" + EnumKey

5.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

集团 GroupInc

IsShare 可选

集团 admin

组织 A + Adminer

组织 B + Adminer

单组织 Single

admin

全系统组织数据


七、与流行设计的对比

7.1 业界常见三种多组织方案

方案代表思路典型实现
A. 独立库/独立 Schema每租户一个数据库阿里云 RDS 多库、部分 OA
B. 共享库 + 行级tenant_id所有表加租户列Salesforce、多数 SaaS ORM
C. 共享库 + 逻辑组织树一棵大树,节点即组织用友 NC、部分 ERP

7.2 驰骋方案的定位

驰骋走的是「B + C 混合」路线:

  • 共享库、共享核心表(五表 +OrgNo),部署与运维成本低于独立库方案;
  • 集团版在 B 的基础上增加组织树 + 共享标记(C 的变体),满足「总部统管、分子公司自治」;
  • SAAS 版在 B 的基础上增加OrgNo_编号前缀,解决「租户内账号可重名」的商用刚需。

7.3 对比矩阵

评价维度独立库/Schematenant_id行隔离驰骋三态方案
租户强隔离★★★★★★★★★★★★(SAAS 前缀 + OrgNo 双保险)
部署运维成本★★★★★★★★★★★★(单库单实例)
集团内资源共享★★★★★★★★★(IsShare等显式机制)
从单组织平滑升级★★★★★★★★(改配置 + 补OrgNo
集成 HR 主数据★★★★★★★★★★★(五表与编制语义对齐)
防串租户工程纪律物理隔离依赖每 SQL 带条件引擎层WebUser.OrgNo+ 实体 Hidden 条件
跨租户账号重名天然支持需额外设计原生支持(SAASUserID

八、这样设计的优点

8.1 一套代码,三种商业形态

从私有化单机到集团管控再到云端 SaaS,无需 fork 代码分支CCBPMRunModel一处配置,人员实体、管理员逻辑、枚举查询、SQL 构建器同步切换——显著降低产品线的研发与测试矩阵。

8.2 组织语义不随模式而变

五表核心模型在三种模式下保持一致,流程选人规则、部门树、兼职与角色绑定不因升级模式而失效。实施顾问学会一套组织建模方法,即可服务不同规模客户。

8.3 隔离策略与业务场景精准匹配

  • 单组织:零开销,最快上线;
  • 集团:全局账号 + 分权 + 可选共享,贴合国企治理;
  • SAAS:租户账号可重名,降低中小企业上云门槛(001admin无需加随机后缀)。

8.4 引擎层强制隔离,而非靠自觉

集团/SAAS 模式下,EmpStationDeptEmp等实体的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 主数据 租户互不感知 │ │ │ ▼ ▼ ▼ CCBPMRunModel=0 CCBPMRunModel=1 CCBPMRunModel=2 单组织版 集团版 SAAS 版
如果你……推荐模式
500 人以下企业,一套流程走天下单组织
央企/集团,各子公司自建流程但账号统一集团
软件公司做 BPM 云平台,客户自助开通SAAS
先从单组织起步,未来可能集团化单组织 → 集团(补OrgNo,改配置)
已集团化,要对外 SaaS 化评估账号模型差异,规划UserID与编号迁移

十一、结语:一种架构哲学

驰骋 BPM 的组织类型划分,体现的不仅是技术选型,更是一种务实的企业软件哲学

不为一棵树砍整片森林——五表撑起全部组织语义;
不为一种客户造一个产品——一个CCBPMRunModel切换三种商业世界;
不让流程引擎绕过组织——OrgNo从登录态渗透到查询、枚举、角色与管理员判定。

从单组织的「一位admin」,到集团版的「队长与家长」,再到 SAAS 的「联合国与各小国」——驰骋用同一套Port_*底座,把组织结构做成了可生长、可商业化、可集成的平台能力。

这正是驰骋 BP 架构在 4.3 节所要传达的核心:组织类型不是表多表少的问题,而是隔离边界与商业形态是否匹配的问题。


附录:关键源码索引

主题路径
运行模式枚举BP.En30/Sys/EnumLab.csCCBPMRunModel
配置读取BP.En30/Difference/SystemConfig.csCCBPMRunModel
登录上下文BP.En30/Web/WebUser.csOrgNo,IsAdmin,UserID
人员与 SAAS 编号BP.En30/Port/Emp.cs
部门BP.En30/Port/Dept.cs
角色与集团岗责BP.En30/Port/Station.cs
组织实体BP.WF/Port/Admin2Group/Org.csPort_Org
枚举共享BP.En30/Sys/SysEnumMain.cs,MapData.cs
SAAS SQL 适配BP.En30/En/SqlBuilder.cs
真实用户号BP.En30/Sys/Base/Glo.csUserNo

驰骋工作流团队 · 组织结构系列文档 · 2026

http://www.gsyq.cn/news/1556554.html

相关文章:

  • 2026年六月青岛门窗选购实测白皮书:五大本地实力品牌深度横评与避坑指南 - GrowthUME
  • 2026石龙企业常年法律顾问推荐|5家口碑过硬本地律所(首选广东卡夫律师事务所) - GrowthUME
  • 生成式AI工程化落地:从Stable Diffusion到科学发现的实战手记
  • 基于MCP1663评估板的SEPIC电源设计:从拓扑原理到实战优化
  • 2018 Data Science Bowl肺结节分割实战解析
  • 2026厚街老牌法律顾问事务所盘点|劳资、股权一站式企业法律服务优选 - GrowthUME
  • 广州配眼镜多少钱?全品类价格透明选购手册 - 配眼镜新资讯
  • 亚洲EMBA前三中立测评:高管科学择校选型指南
  • Coding Plan额度:大模型编程的真实资源瓶颈与效能优化
  • 实时屏幕标注工具LiveDraw:如何在动态演示中实现真正的手写自由?
  • 南京配眼镜探店实录:到店体验全分享 - 配眼镜新资讯
  • 深入解析MCU时钟系统:从FLL原理到S08 ICG实战配置
  • C++完美转发与引用折叠
  • 武汉配眼镜多少钱?六个常见问题一次说清楚 - 配眼镜新资讯
  • 2026虎门高口碑法律顾问律所推荐(知识产权+商事纠纷专项) - GrowthUME
  • 郑州配眼镜常见问题速查:价格流程一次性讲清楚 - 配眼镜新资讯
  • 构建企业级文档智能检索系统的5步架构设计实战指南
  • Selenium元素定位全解析:八种策略与实战避坑指南
  • Get cookies.txt LOCALLY终极指南:本地Cookie导出工具完全教程
  • 异构双核MCU架构解析:LPC43S6x如何实现高性能与低功耗的完美平衡
  • 江浙沪超大型仿真大树定制该怎么选?2026仿真大树定制行业选型与落地调研报告 - 三棵树园艺
  • 2026合肥刑事辩护服务市场调研与适配律师推荐指南 - 万事通达
  • AI团队范式:mini与nano协同架构解析
  • 郑州配眼镜怎么避坑?五步选出靠谱好眼镜 - 配眼镜新资讯
  • 深耕龙城防水领域 匠心守护安居|微顺虹防水:初心筑品质,服务护万家 - 徽顺虹
  • 数据为中心的AI:从模型优化转向数据治理的工程实践
  • 上海配眼镜实用攻略:三步完成从需求到取镜的决策 - 配眼镜新资讯
  • 2026苏州防水补漏权威指南:卫生间/屋面/外墙/地下室正规施工+透明报价+避坑全攻略 - 苏易修缮
  • CPPM考试科目有哪些?考试内容详解 - 众智商学院课程中心
  • MC68F375 QSMCM模块深度解析:QSPI主从模式与SCI队列通信实战