#双引擎协同:驰骋低代码「工程引擎」——管理思想、三态任务与适用场景全解析

0 阅读11分钟

双引擎协同:驰骋低代码「工程引擎」——管理思想、三态任务与适用场景全解析

驰骋 BPM 低代码平台在「流程引擎」之外,新增了与之一脉相承的 工程引擎(菜单分组「工程」)。本文结合 Vue3/src/CCFast/CCPrj 前后端实现,解读其管理思想、任务处理的三种模式,并分析典型适用场景与边界。


一、为什么需要工程引擎?

在企业数字化建设中,流程引擎(WF) 擅长处理「按节点顺序推进、需要审批留痕」的事务性工作;而 项目管理 更关注「多任务并行、阶段分组、工期可视、人力投入」——这是两套不同的管理范式。

驰骋低代码的做法不是另起炉灶,而是 参照流程引擎的分层架构,平行建设工程管理体系

维度流程引擎(WF)工程引擎(CCPrj)
层次流程类别 → 流程模板 → 流程实例工程类别 → 工程模板 → 工程实例
主键WorkID(后端算法生成)OID(同 WorkID 生成方式)
业务编号BillNoBillNo(项目实例编号)
生命周期发起 / 待办 / 在途 / 已完成草稿 / 进行中 / 已完成
设计器流程设计器工程模板设计器(甘特 + 任务树)
用户入口发起、待办、在途、已完成同名菜单体系(LinkPrj 引入)

核心思想一句话:把「项目」当作与「流程」同等级的一等公民,用同一套低代码基础设施(实体、菜单、列表、表单、权限)承载,让业务人员既能跑审批,也能管进度。


二、工程引擎的管理思想

2.1 三层体系:类别 → 模板 → 实例

工程数据按三层组织(见 工程管理需求.md 与实体定义):

工程类别(Prj_Sort)
  └─ 工程模板(Prj_Prj / TemplatePrj)
       └─ 任务模板(Prj_TemplateTask + 任务分组)
            ↓ 用户「发起工程」
工程实例(Prj_GenerPrj)
  └─ 任务实例(Prj_GenerTask / GenerTask)
       └─ 参与人(Prj_GenerWorker)、日志(Prj_WorkerLog)、轨迹(Prj_Track)

关键设计:模板与实例完全脱耦。

创建工程时,系统将模板任务树 复制 到实例表;此后实例可自由增删改节点,不影响原模板。这与流程「按模板发起、实例独立演进」的逻辑一致,降低了「标准项目」与「一次性项目」之间的切换成本。

2.2 以甘特图为载体,任务树为骨架

工程实例的主界面是 MyPrj.vue——项目处理器。它以 任务树 + 甘特时间轴 呈现:

  • 阶段分组:顶面工程、墙面工程、地面工程……父子层级清晰;
  • 并行任务:同一阶段下多任务可并行,甘特条按 DTFrom / DTTo 定位;
  • 里程碑:通过节点类型标识,在时间轴上以特殊样式(如橙色短条)突出验收节点;
  • 人力视角:结合 DurationDays、参与人数量,可推算工时/人天(第一版不涉及金额成本)。

用户不需要学习专业 PM 工具,在熟悉的低代码界面里就能「看见进度」。

2.3 菜单体系:像挂流程一样挂工程

GPN_Menu.ts 中,工程分组(Group P)提供:

  • 新建工程模板:快速创建可复用模板;
  • 引入工程组件(LinkPrj):为指定模板一键生成子菜单——工程查询、发起、待办、在途、已完成。

这与流程的 LinkFlow 完全对称:选一个工程模板,自动长出整套操作入口,实施人员不必手写路由。

2.4 状态机驱动,权限边界清晰

工程状态(PrjSta):草稿 → 进行中 → 已完成(完成后不可回退)。

任务状态(TaskSta):未开始 → 已完成 / 延期 / 暂停,支持开始、完成、暂停、恢复等操作。

权限规则(需求文档 7.4 节):

操作允许角色
查看工程/任务发起人、负责人、参与人
编辑任务负责人、参与人
新增/删除任务工程发起人
启动/完成/删除工程工程发起人

工具栏按钮、行内操作均按状态 动态显隐,避免「已完成还能改」的混乱。

2.5 任务中心:跨工程的统一待办

TaskCenter.vue 提供 待办 / 参与中 / 已完成 三栏视图,聚合用户在所有工程中的任务,并按 TaskType 展示任务类型标签。点击任务后,系统根据类型 自动路由 到对应的任务处理页——这是三态任务模式落地的枢纽。


三、任务处理的三种模式(核心)

在任务模板实体 TemplateTask 中,字段 TaskType 定义了任务关联类型:

@0=通用任务
@1=绑定单流程
@2=绑定单表单

运行时,Comm/taskHandler.ts 负责解析元数据并分发到不同 Vue 组件:

// taskHandler.ts
export function getTaskTypeLabel(taskType: number) {
  switch (taskType) {
    case 1: return '流程任务';
    case 2: return '单据任务';
    default: return '通用任务';
  }
}

export function getTaskHandlerCompUrl(taskType: number) {
  if (taskType === 1) return '/@/CCFast/CCPrj/TaskFlow.vue';
  if (taskType === 2) return '/@/CCFast/CCPrj/TaskBill.vue';
  return '/@/CCFast/CCPrj/TaskGener.vue';
}

MyPrj.vueTaskCenter.vue 打开任务时,均调用 loadTaskTemplateMeta 读取 TaskTypeRefFlowNoRefFrmID,再动态加载对应处理器。同一套工程骨架,挂载三种不同的「任务内脏」。


模式一:通用任务(TaskType = 0)→ TaskGener.vue

定位:不绑定外部流程或表单,在工程上下文内完成 执行记录型 工作。

典型能力(见 TaskGener.vue):

  • 填报 工作日志(内容 + 工时 + 附件);
  • 富文本 工程描述
  • 维护任务标题、成员、计划日期;
  • 标记完成,写入轨迹;
  • 侧边 任务文件面板TaskFilePanel)管理任务级附件。

适合:现场施工记录、调研笔记、日常协作、无法表单化的柔性工作——「人做了什么事、花了多少时间」比「填了一张表」更重要。

创建入口GPN_PrjTask 向导中选择「通用类型」→ TemplateTaskGener


模式二:流程任务(TaskType = 1)→ TaskFlow.vue

定位:将工程中的某个任务 锚定到一条 WF 流程,在工程 Drawer 内嵌入流程运行时。

典型能力(见 TaskFlow.vue):

  • 展示关联流程号 RefFlowNo
  • 进入流程:iframe 加载 MyFlow?FlowNo=xxx
  • 设计流程:跳转流程设计器;
  • 任务概览 + 文件面板与工程上下文保持联动。

适合:需要 审批链、会签、退回、留痕 的节点——如合同评审、变更审批、验收签核。工程甘特负责「什么时候该做」,流程引擎负责「怎么做才合规」。

创建入口GPN_PrjTask 选择「单流程」→ 后端 Task_CreateTaskFlowTemplateTaskFlowSingle 维护 RefFlowNo


模式三:单据任务(TaskType = 2)→ TaskBill.vue

定位:将任务 锚定到一张低代码表单,在工程内直接填报、保存结构化数据。

典型能力(见 TaskBill.vue):

  • 通过 FrmGener_Init 加载表单;
  • 使用 FrmFool 渲染可编辑字段;
  • 保存单据 写回业务表;
  • 自动注入工程上下文字段(工程 ID、编号、名称、发起人、部门等,见 GPN_PrjTask.defaultBillFields)。

适合:检查表、测量记录、材料清单、设备台账等 强结构、可统计、可归档 的采集场景。数据落在 PTable 关联表,便于后续报表与大屏。

创建入口GPN_PrjTask 选择「单表单」→ 后端 Task_CreateTaskBill → 自动创建 Frm{taskId} 及默认字段。


三模式对比一览

维度通用任务流程任务单据任务
组件TaskGener.vueTaskFlow.vueTaskBill.vue
核心价值日志、工时、协作审批、合规、留痕结构化数据采集
绑定对象RefFlowNoRefFrmID
数据形态文本日志 + 附件流程轨迹 + 表单节点业务表字段
典型用户动作写日志、标记完成提交流程、审批填表、保存
与 WF 关系弱耦合强集成(iframe)中集成(共享表单引擎)

设计亮点:三种模式在 工程时间轴上统一呈现,在执行层 各取所长——不必为了填一张表去单独发起流程,也不必为了记一条日志去建一张空表单。


四、从痛点看:工程引擎解决什么问题?

4.1 痛点一:流程引擎「管不住项目全貌」

传统 BPM 以 串行节点 为中心,难以表达:

  • 多工种并行(水电同时施工);
  • 阶段折叠(顶面 / 墙面 / 地面);
  • 拖拽调整工期;
  • 里程碑验收点。

工程引擎用 甘特 + 任务树 补齐这一层,流程退居为「某一任务的处理方式」,而非项目的唯一载体。

4.2 痛点二:项目工具与业务系统「两张皮」

许多团队用 Project / 禅道管进度,用 OA 跑审批,用 Excel 记数据——三套系统、三套账号、数据对不上。

工程引擎把 进度、审批、表单 收敛到同一低代码平台:任务类型在模板期配置好,运行时自动路由,用户只面对「我的待办」。

4.3 痛点三:模板难沉淀、实例难灵活

纯定制项目管理系统:每个项目重写一遍; 纯流程驱动:改一个节点要动整张流程图。

模板复制 + 实例脱耦 兼顾了标准化与灵活性——装修公司可以沉淀「标准装修模板」,具体门店工程仍可在实例里加急改期、增删工序。

4.4 痛点四:执行过程缺乏可追溯的「人天证据」

通用任务的 工时日志 + 附件、全工程的 Prj_Track 轨迹、流程任务的 审批记录,形成多层证据链——对审计、结算、复盘都有价值。

4.5 痛点五:文件与任务割裂(增强方向)

FileWorkspace.vue 进一步探索 工程文件工作区:按任务组织目录、版本、送审状态,并与审核流程联动。这指向「图纸 / 方案 / 合同」类项目的深度场景。


五、适用场景分析

✅ 高度适配

场景推荐任务组合理由
建筑装饰 / 市政施工通用任务(日志)+ 里程碑 + 单据(检查表)甘特天然匹配工序;验收用里程碑;质检用表单
IT 实施 / 交付项目通用(日报)+ 流程(变更/上线审批)+ 单据(配置清单)三态覆盖柔性协作与刚性管控
咨询 / 外包项目通用任务为主 + 关键节点流程轻量管理,重点节点留痕
企业内部专项模板化发起 + LinkPrj 菜单快速复制「年度技改」「门店翻新」等标准项目
多组织协同工程工程实例 + 参与人 + 任务中心统一待办,降低跨部门跟进成本

⚠️ 可用但需评估

场景注意点
强依赖前置任务(CPM 关键路径)第一版不做任务依赖,复杂排程需外接或二次开发
精细成本 / 预算管理当前侧重人天统计,不含金额成本模块
超大型项目(数千任务)需关注甘特渲染性能与分页策略
纯审批、无工期概念的事务直接用流程引擎更合适,不必强行套工程

❌ 不建议使用

  • 秒级响应的实时调度(仓储分拣、客服派单)——用流程或规则引擎;
  • 无阶段、无多人、无工期的一次性填报——单张表单或单次流程即可;
  • 需要完整 PPM(投资组合)管理——工程引擎聚焦单项目执行,非 PMO 全景。

六、实施建议:如何用好三态任务?

  1. 先画任务树,再定任务型
    在模板设计阶段把阶段、工期、负责人定好;对每个叶子任务判断:要审批 → 流程任务;要结构化数据 → 单据任务;其余 → 通用任务。

  2. 流程任务只绑「必须审批」的节点
    避免整工程流程化,否则失去甘特并行优势。

  3. 单据任务复用现有表单资产
    平台已有大量 Frm 实体,可直接关联,减少重复建表。

  4. 用 LinkPrj 一次性挂全菜单
    实施交付时,为每个工程模板生成查询/发起/待办/在途/完成入口,用户体验与流程模块一致。

  5. 任务中心作为个人工作台
    引导用户从 TaskCenter 进入,而不是只在单个工程里找任务——降低多项目并行时的认知负担。


七、架构一图读懂

flowchart TB
    subgraph Menu["低代码菜单(工程分组 P)"]
        A1[新建工程模板]
        A2[引入工程组件 LinkPrj]
        A3[发起 / 待办 / 在途 / 已完成]
    end

    subgraph Template["模板层"]
        T1[工程类别 Prj_Sort]
        T2[工程模板 Prj_Prj]
        T3[任务模板 TemplateTask]
    end

    subgraph Instance["实例层"]
        I1[工程实例 GenerPrj]
        I2[任务实例 GenerTask]
        I3[参与人 / 日志 / 轨迹]
    end

    subgraph TaskMode["三态任务处理"]
        M0[TaskGener 通用任务]
        M1[TaskFlow 流程任务]
        M2[TaskBill 单据任务]
    end

  Menu --> Template
  Template -->|复制脱耦| Instance
  I2 --> TaskMode
  M1 --> WF[流程引擎 MyFlow]
  M2 --> Frm[表单引擎 FrmFool]

八、结语

驰骋低代码的 工程引擎,本质上是把成熟十年的 流程引擎方法论 平移到 项目管理领域:同样的类别—模板—实例、同样的发起—待办—在途—完成、同样的低代码实体与菜单装配能力。

其最具辨识度的创新,是 三态任务模式——在同一张甘特图上,通用协作、流程审批、表单采集三种执行方式并存,由 TaskType 一行配置、运行时自动分发。

对于 有阶段、有并行、有工期、且执行方式 heterogeneous(异构) 的项目型业务,工程引擎不是流程引擎的替代品,而是与之并列的 第二引擎。双引擎协同,才能让低代码平台真正覆盖「管事」与「管项目」两类企业核心场景。


本文基于 Vue3/src/CCFast/CCPrj 模块代码与需求文档整理,涉及核心文件:taskHandler.tsMyPrj.vueTaskGener.vueTaskFlow.vueTaskBill.vueTaskCenter.vueGPN_Menu.tsTemplateTask.tsGPN_PrjTask.ts