ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从源码看 AI 与流程引擎的分工:驰骋 BPM 的 AI 落点与边界

从源码看 AI 与流程引擎的分工:驰骋 BPM 的 AI 落点与边界 本文基于仓库源码静态分析梳理 AI 能力在设计期/运行期的分布与工程边界供架构与平台工程师参考。AI 是更快的输入法引擎是必须成立的编译器——从驰骋 BPM 的 AI 落点看两类能力的边界依据代码CCFlow/Components/BP.WF/AITools.cs、WF_Admin_AI*.cs、Vue3/src/WF/Admin/GPN_AI*.ts、Vue3/src/Copilot/文档版本2026-09写作口径只写仓库里能对得上的调用链与字段不做「AI 全能」或「低代码已死」的结论。一、先把问题问清楚「有了 AI 还需要低代码吗」这句话通常混了三个不同的问题写页面的活要不要 AI 干——这是生成能力问题。业务怎么落地要不要模型和元数据——这是运行时问题。改一处、影响哪里由谁保证——这是治理问题。AI大模型最擅长的是第 1 类从自然语言或截图产出一段结构化文本。 低代码擅长的是第 2、3 类把业务规则固化成可校验、可升级、可审计的元数据与代码结构。下面不空谈直接看驰骋 BPM 把 AI 放在了哪些位置以及它故意没有让 AI 碰哪些位置。二、驰骋把 AI 放在哪里一张调用图从代码看驰骋的 AI 能力集中在设计期入口是若干GPN_AI*向导落点是后端WF_Admin_AI*.cs与AITools.cs。运行期发送、退回、找人、会签目前仍由确定性引擎执行没有 AI 介入。设计期AI 参与 ├─ AI 流程 GPN_AIFlowNew / GPN_AIFlow.ts → WF_Admin_AIFlow ├─ AI 修改流程 Prompt_AIFlow.ts → WF_Admin_AIFlow_Designer ├─ AI 表单 GPN_AIFrm.ts → WF_Admin_AIFrm ├─ AI 大屏 GPN_RptBlueAI.ts → HttpHandlerRpt ├─ AI 高代码实体 GPN_AIFrm(FromGPN_MenuHardCode) → WF_Admin_AIFrm.AiHardCode_* ├─ AI 接收人 GPN_AIAccepter.ts → WF_Admin_AI.AiNode_DeliveryWays* └─ AI 助手 Vue3/src/Copilot/index.vue → WF_Admin_AI_Copilot / WF_Admin_AI 运行期AI 不参与 └─ 发送 / 退回 / 找人 / 会签 / 超时 → WorkNode、FindWorker、ExecEvent纯确定性代码底层只有一个薄封装BP.WF.AITools默认走 DeepSeek 的chat/completionsJSON 模式强制response_formatjson_object温度0.3超时 300 秒见AITools.cs的CallDeepSeekChatAsync。识图另配 OpenAI 兼容视觉接口未配置时回退通义千问多模态——这是工程上很实在的一处取舍deepseek-chat 不支持image_url所以识图必须换模型代码里写得很直白。三、AI 干得好的部分把「描述」变成「草稿」3.1 表单识别「分组」与「从表」AITools.Frm_Words构造的提示词是整个 AI 表单能力的核心。它做了几件低代码平台自己不太会写、但 AI 很擅长的事给上下文把已存在的字段、可用枚举库、可用外键表、已有分组、已有从表全部拼进提示词要求「不要重复、优先复用」。定输出格式强制返回纯 JSON 数组字段结构固定为No / Name / 数据类型 / 逻辑类型 / 长度 / 备注 / 分组 / 是否必填 / ExtInfo / Tip。区分分组与从表提示词里明确「一条业务只有一份的信息放 main 的不同分组一对多、可多行重复的才是从表」。生成时就把扩展属性带上ExtInfo里包含Icon、JSExp正则^^提示、suffixcm等于让 AI 顺手把图标、校验、单位也配了。识图场景更体现工程细节。Frm_Words(...MainAndDtl)会要求模型把纸质/扫描表单里「标题上方的单值项」放主表、「中间多列多行的表格区」放从表并强制dtls至少一条。返回后Frm_ParseAiFormMainAndDtls、Frm_AttrResponseToDataTable负责剥 Markdown 围栏、兼容{main:[],dtls:[]}或纯数组、列名归一化name→Name、type→数据类型、缺失列补默认值。AI 输出天然不稳定这一层清洗是让草稿能进设计器的前提。前端GPN_AIFrm.ts的EnsureMergedSelectionSource也值得一提它把主表字段和从表字段合成一棵「分组 项」的勾选树用户先勾选、再落库AiFrm_SaveAttrs/AiFrm_DtlsSave。AI 生成的永远只是候选落库动作由人确认。3.2 流程把自然语言翻译成一串方法调用WF_Admin_AIFlow_Designer.Edit()是这套体系里最像「agent」的一段。流程导出当前流程的 XML 模板flow.GenerFlowXmlTemplete()超 12 万字符截断连同用户提示词、Flow/Node/Cond字段说明一起塞给模型要求模型返回一个任务数组每个任务是{ MethodName, MethodParas, GenerPara }后端按序调用Dev2InterfaceCCFast.ExeMethod用GenerPara如NodeID在任务间传递上一步产物。也就是说AI不直接改数据库它只填参数真正改流程的是Dev2InterfaceCCFast里既有的、经过事务与校验的静态方法FlowTemplate_NodeCreate、FlowTemplate_DirCreate、FlowTemplate_CondCreate_ByFrm…。提示词里甚至写明了「用真实 NodeID勿臆造」。这是个可以推广的范式让模型做意图 → 方法映射让既有 API 做落地。好处是 AI 出错时错在参数而非数据一致性。3.3 接收人只放开「客观型」规则WF_Admin_AI.AiNode_DeliveryWaysGener/Save有一段很克制的设计。它把DeliveryWay分成两类客观型AiSafeDeliveryWays与上一节点处理人相同、与发起人相同、部门负责人、直属领导、分管领导——这些由组织结构在计算期推导不需要再绑定角色/部门/人员集合写Node.DeliveryWay即可生效。绑定型按角色、按部门、按人员、按表单字段——需要额外配置。AI拒绝自动落库返回明确提示引导用户去接收人规则页手填。代码里的处理是IsAiSafeDeliveryWay不在白名单就直接返回该接收人规则需要额外绑定角色/部门/人员或表单字段为避免节点缺失配置导致发送失败AI 暂不作为全自动落库请在接收人规则页手动选定该规则并完成绑定。这是全文最值得记的一个细节。它说明作者想清楚了一件事AI 的可用边界不是模型能力边界而是出错后系统能不能兜住的边界。会导致发送失败的配置宁可不自动做。3.4 高代码AI 生成 TypeScript / C# / Java 实体AiHardCode_GenerFromWords/Img代表另一条路线不生成低代码元数据而是生成高代码实体类。它先让 AI 判断表单形态Gener_FrmTypeByPromptEntityNoName实体 /EntityOID单据 /EntityTree树再生成三套源码——GenerCodeTS2024、GenerCodeCS2024、GenerCodeJava2024用同一套fillMapLinesInto规则保证三种语言语义一致最后写入Vue3Path下的目录。这里出现了本文要讨论的核心问题AI 生成的代码怎么接进一个已经成体系的工程驰骋的答案是给代码一个「模板」和「归宿」——实体继承EntityNoName/EntityOIDEnMap里用平台约定的AddTBString/AddDDLSysEnum/AddTBDtl保存时写进约定的目录。AI 只填内容不决定架构。四、AI 干不好、也不该干的部分4.1 运行时不能交给概率流程引擎的核心是「发送到下一个节点后状态一定可推导」。WorkNode的按RunModel分派NodeSend_11、NodeSend_24_SameSheet…、FindWorker的 50 种接收人计算、ExecEvent的事件时序——这些一旦掺入模型输出就失去了「同一输入必得同一结果」这个前提审计和排障都无从谈起。所以从代码看驰骋的 AI全部落在设计期改的是WF_Flow、WF_Node、Sys_MapAttr这类元数据改完经设计器保存、经流程检查FlowDesignerV2 的 SSE 检查验证才进入运行期。AI 产出的东西必须先「固化」成确定性的配置或代码。4.2 「生成一个页面」不等于「交付一个系统」回到第一节的第 2、3 问。一个业务系统真正难的不是画出表单而是问题谁来回答驰骋的载体这个菜单谁能看见、能点哪些按钮权限模型GPM_Menu 权限中心这一步该找谁找人引擎DeliveryWayPort_*退回范围、超时怎么处理流程语义NodeAttr/FlowAttr业务数据怎么查、怎么报表数据模型ND{Flow}Rpt、通用数据源配置用尽了怎么扩展扩展点事件 高代码模式子类这些是结构性的不是生成性的。AI 能帮你更快地填出表单字段但它不会替你决定「一人多部门时按本部门角色找人」该怎么配——那是组织建模。4.3 一致性靠的是约束不是提示词高代码那一章doc/低代码部分/面向模式编程思想-的高代码开发.md讲得很清楚驰骋前端有 14 种页面模式基类定契约、子类写业务、解析页面统一渲染。这个「铁三角」的价值在 AI 时代反而更明显——基类约束了子类「必须实现Init()、BtnClick()」格式统一解析页面统一了 UI升级 Vue/组件库时业务子类不动工厂按ClassID注册避免「野生页面」。有了 AI生成 100 个GL_*子类变得很容易。但如果没有基类约束和工厂注册这 100 个文件就是 100 个失控点。低代码/模式化提供的约束正是让 AI 的产物可治理的前提。五、结论不是替代是分工回到标题。从驰骋 BPM 的代码分布看AI 与低代码的关系更像这样维度AI 负责低代码/引擎负责产出物草稿字段、节点、代码片段结构元数据、表结构、权限、运行时时机设计期人确认后落库运行期确定性执行正确性概率需清洗与校验可推导、可审计出错影响参数错重来即可数据一致性必须兜住边界依据模型能力「出错能不能兜住」所以答案不是「有了 AI 就不需要低代码」而是AI 把低代码的门槛进一步压低——从「会拖拽配置」压到「会描述业务」。驰骋的GPN_AI*向导、Copilot助手自然语言打开菜单/发起流程都在做这件事。低代码/引擎把 AI 的产出变得可用——没有EnMap、没有DeliveryWay白名单、没有Dev2Interface这些结构化落点AI 生成的内容只是一段无法进系统的文本。两者的接缝就是 AI 落地成败的关键——AITools的字段归一化、AiSafeDeliveryWay的安全集合、任务 JSON 的占位符替换这些「不性感」的工程代码才是决定 AI 能力能不能上生产的地方。一句话AI 是更快的输入法低代码/引擎是必须成立的编译器。打字快不能替代编译器但编译器配上快输入法交付效率是真的会变。附录本文涉及的代码索引主题路径AI 底层封装DeepSeek / 视觉模型CCFlow/Components/BP.WF/AITools.csAI 表单提示词与解析AITools.Frm_Words、Frm_ParseAiFormMainAndDtls、Frm_AttrResponseToDataTableAI 表单 HandlerCCFlow/Components/BP.WF/CCFast/WF_Admin_AIFrm.csAI 流程生成CCFlow/Components/BP.WF/CCFast/WF_Admin_AIFlow.csAI 流程修改任务 JSONCCFlow/Components/BP.WF/CCFast/WF_Admin_AIFlow_Designer.csAI 接收人安全集合CCFlow/Components/BP.WF/HttpHandler/WF_Admin_AI.csAI 助手指令解析CCFlow/Components/BP.WF/HttpHandler/WF_Admin_AI_Copilot.cs、Vue3/src/Copilot/AI 表单向导前端Vue3/src/WF/Admin/GPN_AIFrm.tsAI 流程向导前端Vue3/src/WF/Admin/FoolFormDesigner/GPN_AIFlowNew.ts、Vue3/src/WF/Admin/AI/Prompt_AIFlow.tsAI 大屏向导前端Vue3/src/CCFast/RptBlue/GPN_RptBlueAI.ts流程修改接口AI 调用的落地方法Dev2InterfaceCCFast.FlowTemplate_*、ExeMethod高代码模式约束 AI 产物的框架doc/低代码部分/面向模式编程思想-的高代码开发.md本文基于当前仓库源码静态分析撰写AI 相关能力仍在迭代具体行为以你部署的版本为准。
返回列表