双引擎协同:驰骋低代码「工程引擎」——管理思想、三态任务与适用场景全解析
驰骋 BPM 低代码平台在「流程引擎」之外,新增了与之一脉相承的 工程引擎(菜单分组「工程」)。本文结合
Vue3/src/CCFast/CCPrj前后端实现,解读其管理思想、任务处理的三种模式,并分析典型适用场景与边界。
一、为什么需要工程引擎?
在企业数字化建设中,流程引擎(WF) 擅长处理「按节点顺序推进、需要审批留痕」的事务性工作;而 项目管理 更关注「多任务并行、阶段分组、工期可视、人力投入」——这是两套不同的管理范式。
驰骋低代码的做法不是另起炉灶,而是 参照流程引擎的分层架构,平行建设工程管理体系:
| 维度 | 流程引擎(WF) | 工程引擎(CCPrj) |
|---|---|---|
| 层次 | 流程类别 → 流程模板 → 流程实例 | 工程类别 → 工程模板 → 工程实例 |
| 主键 | WorkID(后端算法生成) | OID(同 WorkID 生成方式) |
| 业务编号 | BillNo | BillNo(项目实例编号) |
| 生命周期 | 发起 / 待办 / 在途 / 已完成 | 草稿 / 进行中 / 已完成 |
| 设计器 | 流程设计器 | 工程模板设计器(甘特 + 任务树) |
| 用户入口 | 发起、待办、在途、已完成 | 同名菜单体系(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.vue 与 TaskCenter.vue 打开任务时,均调用 loadTaskTemplateMeta 读取 TaskType、RefFlowNo、RefFrmID,再动态加载对应处理器。同一套工程骨架,挂载三种不同的「任务内脏」。
模式一:通用任务(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_CreateTaskFlow → TemplateTaskFlowSingle 维护 RefFlowNo。
模式三:单据任务(TaskType = 2)→ TaskBill.vue
定位:将任务 锚定到一张低代码表单,在工程内直接填报、保存结构化数据。
典型能力(见 TaskBill.vue):
- 通过
FrmGener_Init加载表单; - 使用
FrmFool渲染可编辑字段; - 保存单据 写回业务表;
- 自动注入工程上下文字段(工程 ID、编号、名称、发起人、部门等,见
GPN_PrjTask.defaultBillFields)。
适合:检查表、测量记录、材料清单、设备台账等 强结构、可统计、可归档 的采集场景。数据落在 PTable 关联表,便于后续报表与大屏。
创建入口:GPN_PrjTask 选择「单表单」→ 后端 Task_CreateTaskBill → 自动创建 Frm{taskId} 及默认字段。
三模式对比一览
| 维度 | 通用任务 | 流程任务 | 单据任务 |
|---|---|---|---|
| 组件 | TaskGener.vue | TaskFlow.vue | TaskBill.vue |
| 核心价值 | 日志、工时、协作 | 审批、合规、留痕 | 结构化数据采集 |
| 绑定对象 | 无 | RefFlowNo | RefFrmID |
| 数据形态 | 文本日志 + 附件 | 流程轨迹 + 表单节点 | 业务表字段 |
| 典型用户动作 | 写日志、标记完成 | 提交流程、审批 | 填表、保存 |
| 与 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 全景。
六、实施建议:如何用好三态任务?
-
先画任务树,再定任务型
在模板设计阶段把阶段、工期、负责人定好;对每个叶子任务判断:要审批 → 流程任务;要结构化数据 → 单据任务;其余 → 通用任务。 -
流程任务只绑「必须审批」的节点
避免整工程流程化,否则失去甘特并行优势。 -
单据任务复用现有表单资产
平台已有大量Frm实体,可直接关联,减少重复建表。 -
用 LinkPrj 一次性挂全菜单
实施交付时,为每个工程模板生成查询/发起/待办/在途/完成入口,用户体验与流程模块一致。 -
任务中心作为个人工作台
引导用户从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.ts、MyPrj.vue、TaskGener.vue、TaskFlow.vue、TaskBill.vue、TaskCenter.vue、GPN_Menu.ts、TemplateTask.ts、GPN_PrjTask.ts。