驰骋 BPM(CCFlow/JFlow)四大运行模式与 Flowable/Camunda 技术对比

驰骋 BPM(CCFlow/JFlow)四大运行模式与 Flowable/Camunda 技术对比

一、概述

1.1 驰骋 BPM 的产品定位

驰骋 BPM 由 CCFlow(.NET)JFlow(Java) 双平台构成,是一套流程引擎 + 表单引擎 + 低代码平台的一体化 BPM 产品。与 Flowable/Camunda 这类"纯流程引擎"不同,驰骋在引擎之上内置了组织架构、菜单权限、单据(CCBill)、门户、报表等完整企业应用能力。

代码中通过 Platform 枚举区分运行平台:

    public enum Platform
    {
        /// <summary>
        /// CCFlow .net平台.
        /// </summary>
        CCFlow,
        /// <summary>
        /// JFlow java 平台.
        /// </summary>
        JFlow
    }

1.2 两个维度的"模式"概念(勿混淆)

维度 配置项 含义
部署/组织模式 CCBPMRunModel(0/1/2/3) 单机、集团、SaaS、平台应用
产品使用模式 门户/Middleware vs BPM 中间件模式 vs 全功能 BPM 模式

门户说明(Vue3/src/Portal/readme.txt):

  • 中间件模式:客户仅使用流程引擎 + 表单引擎,菜单精简(发起、待办、在途、草稿等)。
  • BPM 模式:完整菜单体系、权限管理、低代码设计器,可构建独立业务系统。

本文重点分析 四大运行模式(CCBPMRunModel) 的技术实现,并与 Flowable/Camunda 的多租户/组织架构能力对照。


二、四大运行模式定义与配置

2.1 枚举与配置入口

后端枚举定义(BP.Sys.CCBPMRunModel):

    public enum CCBPMRunModel
    {
        /// <summary>
        /// 单机版
        /// </summary>
        Single,
        /// <summary>
        /// 集团模式
        /// </summary>
        GroupInc,
        /// <summary>
        /// 多租户模式
        /// </summary>
        SAAS,
        /// <summary>
        /// 平台应用模式
        /// </summary>
        PASS
    }

app.config 配置项:

<!-- 0=单组织,1=集团,2=SAAS,3=平台应用(PASS) -->
<add key="CCBPMRunModel" value="0"/>
模式 英文标识 典型场景
0 单机版 Single 单一企业、内网 OA、POC 演示
1 集团版 GroupInc 集团总部 + 多家子公司共用一套 BPM
2 多租户 SaaS SAAS 云 BPM 平台,租户数据强隔离
3 平台应用 PASS 云平台上的应用托管模式(CCBPMRunModelReal 识别,部分逻辑仍回落到 Single)

2.2 安装初始化差异

安装时按模式加载不同组织种子数据 SQL:

            sqlscript = BP.Difference.SystemConfig.CCFlowAppPath + "WF/Data/Install/SQLScript/Port_Inc_CH_RunModel_" + (int)SystemConfig.CCBPMRunModel + ".sql";
            DBAccess.RunSQLScript(sqlscript);

            if (SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
            {
                BP.Port.Emp empAdmin = new Emp("admin");
                BP.Web.WebUser.SignInOfGener(empAdmin);
            }

            if (SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
            {
                BP.WF.Dev2Interface.Port_Login("admin", "100", null);
            }

            if (SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc)
            {
                BP.WF.Dev2Interface.Port_Login("admin", "100", null);
            }
  • Single:直接以 admin 登录,无多组织概念。
  • GroupInc / SAAS:以平台组织 100admin 登录,需选择/切换组织。

三、四大模式技术实现对比

3.1 单机版(Single)

核心特征:无 OrgNo 数据隔离,人员编号全局唯一(如 zhangsan)。

后端实现要点

  • SystemConfig.CCBPMRunModel == Single 时,SQL 查询不加 OrgNo 条件。
  • WebUser.RootNo 对管理员返回 "0",表示无组织根节点概念。
  • 待办统计、流程查询等直接按 FK_Emp 过滤。
                if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
                    wfSql = " AND A.OrgNo='" + WebUser.OrgNo + "'";

(Single 模式下 wfSql 为空,不加 OrgNo 过滤。)

前端实现要点

  • SystemConfig.CCBPMRunModel 来自 Cookie/LocalStorage。
  • 人员选择、表单树、流程树等 SQL 数据源使用 Single 后缀 的全局查询(见 GloWF.ts*Single 系列 SFTable)。
  • 中间件门户不展示集团专属菜单(如"管理组织"、“切换部门”)。

对比 Flowable/Camunda:等价于单租户部署,不启用 tenantId。组织架构需自行对接 IDM 或在应用层维护。


3.2 集团版(GroupInc)

核心特征:一套 BPM 实例服务多个法人/子公司,通过 Port_Org + OrgNo 字段实现逻辑隔离,人员编号在组织内唯一。

数据模型Port_Inc_CH_RunModel_1.sql 种子数据):

  • Port_Org:组织主表(如 100 集团平台、ccs 驰骋公司、quanyi 泉亿公司)。
  • Port_DeptPort_StationPort_Emp 均带 OrgNo 字段。
  • 人员 No 在组织内唯一(如 yuwen),跨组织可重复。

后端隔离机制

  1. 查询过滤:非 Single 模式在流程、人员、部门查询中追加 OrgNo 条件。
  2. 组织管理员Port_OrgAdminer 表维护二级管理员;WebUser.IsAdminOrgNo 判断。
  3. 集团岗责体系GroupStationModel 配置):
    • 0:每套组织独立角色体系(默认)。
    • 1:全集团共享一套岗责体系。
    • 2:每个部门独立角色体系。
        /// <summary>
        /// 集团模式下的角色体系
        /// @0=每套组织都有自己的角色体系@1=所有的组织共享一套岗则体系.@2=每个部门有自己的角色体系.
        /// </summary>
        public static int GroupStationModel
  1. 找人算法FindWorker.cs):按直属领导找人时,GroupInc 追加 And OrgNo = '@WebUser.OrgNo'
                        if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.Single)
                            sql = "SELECT Leader,FK_Dept FROM Port_Emp WHERE No='" + empNo + "'";
                        if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.GroupInc)
                            sql = "SELECT Leader,FK_Dept FROM Port_Emp WHERE No='" + empNo + "' And OrgNo = '" + WebUser.OrgNo + "'";
                        if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
                            sql = "SELECT Leader,FK_Dept FROM Port_Emp WHERE No='" + WebUser.OrgNo + "_" + empNo + "'";

前端实现要点

  • 集团版用户菜单增加"管理组织(AdminOnly)"、“切换部门”(PopMenuUser.ts)。
  • 流程查询、单据搜索在 GroupInc 下追加组织过滤(SearchFlow.vueuseSearchBill.ts)。
  • 菜单、表单树按 OrgNo 隔离:OrgNo='@WebUser.OrgNo'

对比 Flowable/Camunda

能力 驰骋 GroupInc Flowable Camunda
多组织 Port_Org + OrgNo 字段贯穿全表 需自建或借助 Flowable Platform Camunda 8 有 Tenant 概念
组织切换 内置 Port_Login(user, orgNo) 无内置 Tenant 切换需自行实现
流程定义隔离 WF_Flow 可按组织复制/共享 tenantId 隔离部署 tenantId 隔离
岗责体系 内置 Port_Station,支持三种集团策略 候选组 candidateGroups candidateGroups / Identity Service

驰骋集团版的优势在于组织、岗责、流程、表单在同一产品内闭环;Flowable/Camunda 需额外集成 Identity/Org 模块。


3.3 多租户 SaaS 版(SAAS)

核心特征:面向云 BPM 平台,租户间强隔离,人员主键采用 {OrgNo}_{UserID} 复合编号。

与集团版的关键差异

项目 GroupInc SAAS
人员编号 组织内唯一,如 yuwen 全局唯一,如 ccs_yuwen
UserID 字段 可选 必须,存真实登录名
流程实例 部分表加 OrgNo WF_GenerWorkFlow 等强制 OrgNo
登录 选组织后登录 Port_Login("admin", "100", null) 平台管理员

后端实现Emp.cs):

                    if (value.StartsWith(BP.Web.WebUser.OrgNo + "_") == true)
                    {
                        this.SetValByKey(EmpAttr.UserID, value.Replace(BP.Web.WebUser.OrgNo + "_", ""));
                    }
                    else
                    {
                        this.SetValByKey(EmpAttr.No, BP.Web.WebUser.OrgNo + "_" + value);
                    }

SAAS 模式下实体 Map 自动注入隐藏条件 OrgNo = @WebUser.OrgNoStation.csTeam.cs 等)。

流程统计统一追加 OrgNo:

        public static String Check_CCBPMRunModel()
        {
            String sql = "";
            if (BP.Difference.SystemConfig.CCBPMRunModel == CCBPMRunModel.SAAS)
            {
                sql += " AND A.OrgNo = '" + WebUser.OrgNo + "'";
            }
            return sql;
        }

前端实现要点

  • WebUser.CCBPMRunModel == 2 时,审核组件走云 Handler:BP.Cloud.HttpHandler.App
  • 用户头像路径含 OrgNo 前缀。
  • 数据源 SQL 使用 *SaaS 后缀版本,按 OrgNo 过滤。

对比 Flowable/Camunda

  • Flowable:企业版支持 Multi-tenancy(tenantId 贯穿引擎表);开源版需应用层隔离。
  • Camunda 8:原生多租户(Tenant),与 Zeebe 集群集成。
  • 驰骋 SAAS:租户隔离下沉到全产品线(组织、表单、流程、单据、菜单),不仅是引擎表隔离。

驰骋 SaaS 的不足:OrgNo 多以 SQL 字符串拼接实现隔离,需严格防范 SQL 注入;Flowable/Camunda 的 tenantId 在引擎层有框架级保障。


3.4 平台应用模式(PASS)

核心特征:面向云平台应用商店/托管场景,枚举值为 3CCBPMRunModelReal 返回 PASS,但 CCBPMRunModel 属性将 03 均映射为 Single 以兼容旧逻辑。

        public static CCBPMRunModel CCBPMRunModelReal
        {
            get
            {
                int val = BP.Difference.SystemConfig.GetValByKeyInt("CCBPMRunModel", 0);
                if (val == 0 ) return CCBPMRunModel.Single;
                if (val == 1) return CCBPMRunModel.GroupInc;
                if (val == 2) return CCBPMRunModel.SAAS;
                return CCBPMRunModel.PASS;
            }
        }
        public static CCBPMRunModel CCBPMRunModel
        {
            get
            {
                int val = BP.Difference.SystemConfig.GetValByKeyInt("CCBPMRunModel", 0);
                if (val == 0 || val==3) return CCBPMRunModel.Single;
                ...
            }
        }

PASS 模式在代码库中落地较少,前端 SystemConfig.ts 甚至未导出 PASS 枚举,属于演进中的模式,与 SaaS 云平台的应用分发场景配套。

对比 Flowable/Camunda:类似 Camunda SaaS 或 Flowable Cloud 的应用市场 + 租户双层模型,但驰骋 PASS 尚未形成与 Flowable Platform 同量级的独立产品线文档。


四、架构对照:驰骋 BPM vs Flowable/Camunda

4.1 总体架构图

内容概要:本文档围绕“经济学期刊论文复现:数字化转型能否促进企业的高质量发展”这一核心命题,系统整合了MATLABPython编程实现的大量科研案例,聚焦于数字化转型对企业全要素生产率(TFP)及高质量发展影响的实证研究。文档不仅复现了高水平经济学期刊论文中的计量经济模型,如基于中国上市公司数据的数字化转型生产率关系分析,还深度融合了工程领域的建模技术,涵盖微电网优化、负荷预测、风电光伏不确定性建模、电力系统故障仿真等。同时,提供了智能优化算法(如遗传算法、粒子群优化)、机器学习(LSTM、CNN-BiGRU-Attention)、信号处理、路径规划等多学科交叉的技术资源,构建了一个从理论推导到代码实现的完整科研支持体系,旨在帮助研究者系统掌握论文复现实证分析的核心方法。; 适合人群:具备一定MATLAB或Python编程基础,从事经济学、管理学、能源系统、智能制造及相关交叉学科研究的研究生、科研人员及高校教师。; 使用场景及目标:①复现经济学顶刊中关于数字化转型企业高质量发展的实证模型;②学习如何量化数字化转型并构建其对企业绩效的影响评估框架;③掌握基于真实数据的计量经济建模、场景生成优化调度仿真技术,全面提升科研论文写作实证研究能力。; 阅读建议:建议读者结合文中提供的代码数据资源,重点研读“论文复现”“创新未发表”模块,按照技术路径循序渐进地实现模型复现拓展。推荐关注“荔枝科研社”公众号及百度网盘链接获取完整资料,系统性地开展学习科研实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驰骋低代码、工作流、表单引擎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值