整站嵌入、半耦合、非耦合三条路各有代价。本文以非耦合为主线,讲清工具栏、审核组件、Token 与参数归一化的接入方式。
Toolkit 是一组可原样拷贝进您前端工程的「流程能力积木箱」。 它不是整站门户,也不替代您的业务表单设计;它负责把「发送、退回、审核、选人、会签……」这些流程动作,变成您页面上可直接使用的组件和 API。
src/Toolkit/)。可以把关系想象成:
您的前端系统(菜单、业务页、自绘表单)
│
│ 引入 Toolkit 组件 / 调用 Dev2Interface
▼
Toolkit 目录(工具栏、审核组件、WorkOpt、流程 API)
│
│ WF/Comm/ProcessRequest + Token
▼
该 BPM 平台服务器(流程组件 引擎、节点属性、流程属性)版本 | 说明 |
|---|---|
Vue3 Toolkit | 当前主推与本仓库权威实现(前端模块源码目录),原生 Vue3,不再依赖 ant-design-vue / naive-ui |
H5 / Vue2 Toolkit | 产品分发包(如该低代码平台)中仍可能提供,用于存量技术栈;新项目优先 Vue3 |
React Toolkit | 不再作为推荐交付形态;请统一到 Vue3 Toolkit,或通过 iframe / API 对接 |
旧文档里若仍写「React 版 Toolkit」,以本文与仓库
Toolkit/README.md为准。
能力 | 通俗理解 | 落地方式 |
|---|---|---|
嵌入流程组件 | 把「流程遥控器」嵌进自己的表单页 | ToolBar(发送/退回/移交…)、WorkCheck(审核意见)、WorkOpt(选人/会签/挂起…)、父子流程 SubFlow |
调用流程 API | 不自己拼 HTTP,直接调方法 | Dev2Interface:发起、发送、保存、退回、撤销、删除、终止、会签、抄送等 |
按设计器配置减负 | 节点上勾了「可退回」,工具栏就出现退回;审核组件开了才显示 | 后端 InitToolBar、节点审核属性 FWCSta / FWCShowModel 驱动前端 |
绑定功能页面到菜单 | 不想自绘发起/待办列表时,直接挂产品页 | 通过 Vue3 FEForward / iframe 嵌入 GL_Start、GL_TodoList 等(见第 6 章) |
快速搭办理页 | 自绘业务区 + Toolkit 工具栏/审核区 | SDK 表单模式(非耦合集成,见第 4 章) |
写清楚「不做啥」,比夸大「啥都能」更重要:
属于 Toolkit | 不属于 Toolkit(用产品主站或自研) |
|---|---|
办理工具栏、审核组件、WorkOpt 弹窗 | 完整表单设计器、从表完整 UI(主站 WF/CCForm/Dtl) |
前端 Dev2Interface 流程门面 | 流程设计器、权限组织维护整站 |
Token / 请求封装 / TurnTo 跳转辅助 | 报表大屏、CCBill 单据全套(Dev2InterfaceCCBill 仅主站保留) |
嵌入办理页所需的样式与原生 UI 控件 | 发起/待办列表页本体(列表在产品 GenerList,可 iframe 复用) |
该 BPM 平台首先推荐使用 Toolkit 做二次开发:您保留业务表单与菜单体系,引擎侧的「会跑流程」能力用积木拼上去即可。
读图要点:
统一请求通道(与主站一致):
配置项 | 含义 | 常见值 |
|---|---|---|
VITE_GLOB_API_URL | 后端 Host | 如 http://localhost:56146/ |
REQUEST_URL | Handler 入口相对路径 | WF/Comm/ProcessRequest |
开发代理 | Vite 把 /api 转到后端 | 见第 5 章 |
Token | 登录态 | URL 参数 / setRequestToken / localStorage 键 flow_token |
后端侧,Toolkit 前端大量调用:
流程组件.HttpHandler.WF_TSDev2Interface —— TS/Toolkit 专用流程 API流程组件.HttpHandler.WF_MyFlow —— 办理初始化、InitToolBar、发送等流程组件.HttpHandler.WF_WorkOpt —— 选人、审核、会签等操作面板流程组件.HttpHandler.WF_MyView / WF_MyCC —— 查看器 / 抄送处理器初始化把「自家系统」和「该引擎」拼在一起,常见有三条路。Toolkit 对应其中工作量较小、个性化最强的一条。
模式 | 形象比喻 | 谁画表单 | 谁画工具栏/审核 | 适用 |
|---|---|---|---|---|
非耦合(SDK + Toolkit) | 引擎是发动机,车身您自己造 | 您的前端 | Toolkit 组件嵌入您的页 | 前后端分离、表单个性化强、推荐 |
半耦合(嵌入式表单 SelfForm) | 该平台外壳 + 中间嵌您的业务页 | 您的页(iframe) | 该平台 MyFlowSelfForm 壳 | 想少写工具栏,又要自定义中间表单 |
整站嵌入(iframe 产品前端) | 直接把该平台前台「嵌窗」进系统 | 该平台前端 | 该平台前端 | 最快上线四大菜单与三大处理器 |
设计器里的对应项:节点表单方案 SDK 表单 ≈ 非耦合;嵌入式表单 ≈ 半耦合。智能 SDK(
SmartSDKFrm.js)属历史方案,新项目请用 Vue3 Toolkit,不再展开。
工作量较小、边界清晰的集成模式:
Dev2Interface 完成。如下
可以把它想成:您装修客厅,该平台只提供「开关面板」和「水电接口」。 开关(工具栏按钮)亮不亮,由节点属性决定;水电(发送/退回)由引擎执行。
┌─────────────────────────────────────────────┐
│ ToolBar:发送 | 保存 | 退回 | 移交 | 轨迹 … │ ← Toolkit
├─────────────────────────────────────────────┤
│ │
│ 您自己的业务表单(任意技术栈 UI) │ ← 宿主系统
│ │
├─────────────────────────────────────────────┤
│ WorkCheck:审核意见 / 签名 / 附件 / 轨迹 │ ← Toolkit
└─────────────────────────────────────────────┘可选:退回信息条 ToolbarFlow、父子流程 WorkOpt/SubFlow.vue、发送选人等 WorkOpt 弹窗(由工具栏自动拉起)。
NodeFormType.SDKForm)。@SDKFromServHost,或配置 VITE_GLOB_SDKFROESERV_HOST)。InitToolBar 下发给 ToolBar。FWCSta(是否显示/可编辑)、FWCShowModel(普通/轨迹/时间轴)、FWCLab(标题文案)等。参数 | 说明 |
|---|---|
WorkID | 工作实例 ID |
NodeID / FK_Node | 当前节点 |
FlowNo / FK_Flow | 流程编号 |
Token | 登录令牌(务必与后端会话一致) |
PageType | MyFlow(办理)/ MyView(查看)/ MyCC(抄送) |
FID | 分流合流等场景的父工作 ID(按需) |
IsReadonly | 1 只读 |
CCNodeID | 抄送场景下审核配置以抄送节点为准时使用 |
Toolkit 提供 parseFlowUrlParams / buildWorkOptParams 帮助您从路由 query 归一化这些参数。
请复制整个 src/Toolkit/,不要只挑子目录。内部引用均为相对路径(独立宿主工程中,Dev2Interface.ts 应使用包内 ./utils/gener/HttpHandler,而非主站别名 /@/)。
目录摘要:
Toolkit/
├── index.ts # 导出入口(自动引入 toolkit.css)
├── ToolBar.vue # 工作处理器工具栏
├── ToolbarFlow.vue # 退回信息条
├── WorkOptModalHost.vue # WorkOpt 弹窗宿主
├── Dev2Interface.ts # 流程 API 门面
├── config/ # API 地址、Token
├── adapters/ # WebUser 等可替换适配
├── components/ # 原生 UI(Modal/Drawer/Tree/Table)
├── styles/toolkit.css # tk-* 样式
├── utils/ # HttpHandler、TurnTo、参数解析…
├── WorkCheck/ # 审核组件
└── WorkOpt/ # 选人、会签、挂起、父子流程等pnpm add vue vue-router axios dayjs lodash-es.env 与代理VITE_GLOB_API_URL=http://localhost:8085/vite.config.ts 开发代理示例:
server: {
proxy: {
'/api': {
target: 'http://localhost:8085',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
},
},每次进入办理页建议:
import { setRequestToken } from '@/Toolkit';
onMounted(() => setRequestToken(String(route.query.Token || '')));
watch(toolbarParams, (p) => setRequestToken(String(p.Token || '')), { deep: true });获取 Token 的常见方式:调用后端 Port_Login(或贵司封装的单点登录),再把 Token 拼进打开办理页的 URL。
若您暂时不想自己画「发起 / 待办 / 在途」列表,可以走整站嵌入或 FEForward 转发页:部署 Vue3 前端后,用 iframe 打开对应 action。
示例(部署地址假设为 https://bpm.your.com):
https://bpm.your.com/#/FEForward?action=GL_Start&token=您的Token当前常用 action:
action | 功能 |
|---|---|
GL_Start | 发起 |
GL_TodoList | 待办 |
GL_Running | 在途(运行中) |
GL_CC | 抄送 |
GL_Batch | 批处理 |
GL_Draft | 草稿 |
GL_RecentWork | 近期工作 |
GL_RecentStart | 近期发起 |
MyFlow | 单独打开办理(需再带 WorkID 等参数) |
FlowTree / FrmTree | 流程树 / 表单树 |
第三方系统接入步骤要点:
VITE_GLOB_IS_THIRDPART_SYSTEM=1,VITE_GLOB_API_URL 指向真实后端。/WF/API/Port_Login 或 Java 侧 Dev2Interface.Port_Login)。src 带上 action 与 token。说明:这些列表页属于产品前端能力;Toolkit 包聚焦办理组件与 API。两者可组合——列表用 iframe,办理页用 SDK+Toolkit。
以下示例展示「工具栏 + 审核组件」最小闭环(完整说明见仓库 前端模块源码目录):
<template>
<div>
<ToolBar :params="toolbarParams" :before-flow-send="beforeFlowSend" />
<WorkCheck
v-if="workCheckVisible"
ref="workCheckRef"
:params="workCheckParams"
:node-info="nodeInfo"
:is-readonly="workCheckReadonly"
:examine-mode="examineMode"
/>
<!-- 中间区域:放置您自己的业务表单 -->
</div>
</template>
<script setup lang="ts">
import { computed, onMounted, watch, ref } from 'vue';
import { useRoute } from 'vue-router';
import {
ToolBar,
WorkCheck,
setRequestToken,
buildWorkOptParams,
parseFlowUrlParams,
useWorkCheckFwcSta,
} from '@/Toolkit';
const route = useRoute();
const workCheckRef = ref<InstanceType<typeof WorkCheck>>();
const queryReadonly = computed(() => parseInt(String(route.query.IsReadonly ?? '0'), 10) === 1);
const toolbarParams = computed(() =>
buildWorkOptParams(parseFlowUrlParams(route.query as Record<string, unknown>)),
);
const { nodeInfo, examineMode, workCheckVisible, workCheckReadonly, beforeFlowSend: saveWorkCheckBeforeSend } =
useWorkCheckFwcSta(toolbarParams, { queryIsReadonly: queryReadonly });
const workCheckParams = computed(() => ({
DoWhat: 'WorkCheck',
WorkID: toolbarParams.value.WorkID,
NodeID: toolbarParams.value.NodeID ?? toolbarParams.value.FK_Node,
FK_Node: toolbarParams.value.FK_Node ?? toolbarParams.value.NodeID,
FlowNo: toolbarParams.value.FlowNo ?? toolbarParams.value.FK_Flow,
Token: toolbarParams.value.Token,
}));
async function beforeFlowSend(): Promise<boolean> {
return saveWorkCheckBeforeSend(workCheckRef);
}
onMounted(() => setRequestToken(String(route.query.Token || '')));
watch(toolbarParams, (p) => setRequestToken(String(p.Token || '')), { deep: true });
</script>发送前钩子 beforeFlowSend 的典型职责:先保存审核意见,再允许发送——就像登机前先核验登机牌。
职责:根据当前节点 InitToolBar 返回的按钮列表,渲染并执行发送、保存、退回等操作。
常用 props:
参数 | 必填 | 说明 |
|---|---|---|
params | 是 | WorkID、NodeID、FlowNo、Token 等 |
beforeFlowSend | 否 | 发送前异步钩子;返回 false 则中止发送 |
发送时的几种分支(由引擎规则决定,前端只是「听话」):
IsSelectEmps ≠ 0):弹出接受人面板。ToNodesPanel),由办理人选择走向。工具栏常见按钮(是否出现取决于节点配置):
按钮 No | 含义 |
|---|---|
Send | 发送 |
Save | 保存 |
Draft / SaveAsDraft | 存为草稿 |
Return | 退回 |
Shift | 移交 |
CC | 抄送 |
Hungup | 挂起 |
UnSend | 撤销发送 |
Delete / CanCelFlow / EndFlow | 删除 / 取消 / 结束 |
HuiQian 系列 | 会签、加主持人、会签发送等 |
Track | 轨迹 |
FixFlow / FixFlowUn | 冻结 / 解冻 |
PreplaceWoker | 预置处理人 |
DelayedSend | 延期发送 |
NodeToolBar | 设计器配置的自定义「函数型」按钮 |
QRCode / Help / Scrip 等 | 二维码、帮助、小纸条等扩展入口 |
保存业务数据时,可通过 params 携带:
paras:主表字段串 dtls:从表数据 aths:附件信息对应后端 WF_TSDev2Interface.Node_SaveWork。
职责:意见填写、常用短语、手写签名、审核附件、轨迹/时间轴展示。
FWCSta(审核状态)决定组件生死:
FWCSta | 行为 |
|---|---|
0 | 不显示 |
1 | 可编辑;发送前应保存审核意见 |
2 | 只读 |
推荐使用 useWorkCheckFwcSta:自动处理显隐、只读,并提供发送前保存。
注意:
examineMode='normalMode',应跟随节点 FWCShowModel(普通 / 轨迹 / 时间轴)。WorkCheck 不渲染区块标题;宿主请读取 FWCLab(默认「审核信息」)自行展示,用法类似父子流程的 SFLab。由工具栏在需要时打开,例如:
SubFlow.vue(展示子流程列表、发起子流程;标题文案看 SFLab / SFSta)宿主一般只需挂好 WorkOptModalHost(随 ToolBar 体系使用),无需逐个手写弹窗。
当工作是被退回回来的,顶部可展示退回原因、退回附件等,避免办理人「莫名其妙又看到自己的单」。
Dev2Interface(不用自己拼接口)Toolkit 内的 Dev2Interface.ts 是面向 TS 的流程门面,底层打到 流程组件.HttpHandler.WF_TSDev2Interface(及部分 MyFlow / WorkOpt Handler)。
方法 | 作用 |
|---|---|
Flow_Start | 发起流程 |
Node_CreateBlank | 创建空白 WorkID |
Node_CreateBlankThenDelEndCreate | 创建前清理再创建(特殊场景) |
Node_SendWork / Node_SendWorkByJson | 发送 |
Node_SaveWork | 保存主表/从表/附件参数 |
Node_ReturnWork | 退回 |
Node_ShiftWork | 移交 |
Node_SetDraft | 设为草稿 |
Flow_DeleteFlow / Flow_DoDeleteDraft | 删除流程 / 草稿 |
Flow_DoUnSend | 撤销发送 |
Flow_DoFlowOver | 结束流程 |
Flow_SetFlowParas | 设置流程全局参数 |
Node_SetParentInfo | 设置父流程信息 |
Node_HuiQian_* / HuiQian_SaveAndClose | 会签相关 |
MyFlow_Init / MyView_Init / MyCC_Init | 三大处理器初始化 |
CC_Init / Node_CC_WriteTo_CClist 等 | 抄送 |
Accepter_Init | 接受人面板数据 |
Upload_File | 上传 |
Port_SendMsg* | 发消息 |
使用建议:能嵌
ToolBar就优先嵌组件——按钮权限、选人弹窗、TurnTo 跳转都已编排好;只有高度定制的页面才直接裸调 API。
C# 侧完整业务能力在 流程组件.Dev2Interface(列表查询、发送、退回、抄送等);
WF_TSDev2Interface 是给前端 Toolkit/TS 调用的 HttpHandler 薄封装。
Java(该引擎)侧有对等 API 命名习惯,集成思路一致。
四大菜单数据若您要自绘列表,也可直接调引擎 API,例如:
菜单 | 引擎 API(概念) |
|---|---|
发起 | DB_GenerCanStartFlowsOfDataTable / DB_StarFlows |
待办 | DB_GenerEmpWorksOfDataTable |
在途 | DB_GenerRuning |
抄送 | DB_CCList |
当节点表单方案为 嵌入式表单(SelfForm) 时:
系统会把 FK_Flow、FK_Node、WorkID、Token 等参数拼到您的 URL 后。
您的页面需实现 Save():保存成功返回 true,失败返回 false——外壳点「发送」时会先调它,像安检门一样拦住不完整的数据。
该模式不必整包引入 Toolkit 办理组件(外壳已有),但若您希望完全自控 UI,仍应回到第 4 章的 SDK + Toolkit。
utils/turnToNavigate.ts(如 handleTurnToResponse)处理。 MyFlowSelfForm.vue);postMessage 关闭 Tab(如 type: 2)。WF/Admin/TestingContainer/Default.vue。现象 | 排查方向 |
|---|---|
请求 401 | 页面是否 setRequestToken;Token 是否过期 |
后端地址不对 | VITE_GLOB_API_URL 与 Vite proxy 是否一致 |
CondModel=1 却弹出选人 | 核对设计器转向规则;Toolkit 通过 loadNodeRow 读 CondModel |
审核区不显示 | FWCSta 是否为 0;参数是否齐全;是否使用了 useWorkCheckFwcSta |
轨迹模式不对 | 勿写死 examineMode;跟随 FWCShowModel |
工具栏按钮缺失 | 到节点属性检查按钮启用;看 InitToolBar 返回 |
自定义用户信息 | 替换 adapters/WebUser.ts |
独立工程 HttpHandler 报错 | 确认 Dev2Interface 引用的是 Toolkit 包内路径,而非主站 /@/ |
项 | 说明 |
|---|---|
整包复制 | 含 components/、styles/、WorkOpt/、WorkCheck/ |
Token | setRequestToken + watch |
导出常用 | ToolBar、WorkCheck、ToolbarFlow、setRequestToken、buildWorkOptParams、useWorkCheckFwcSta、loadNodeRow、Dev2Interface |
主站独有勿强拷 | Dev2InterfaceCCBill.ts(单据)按需保留 |
Toolkit 解决的是:打开一张单之后怎么办。 产品级入口仍可概括为:
发起 / 待办 ──► 工作处理器 MyFlow ──► ToolBar + 表单 + WorkCheck
在途 / 完成 ──► 工作查看器 MyView ──► 催办 / 撤销 / 轨迹(只读向)
抄送 ──► 抄送处理器 MyCC ──► 知晓、打印、轨迹非耦合集成时:列表可自绘或 iframe;处理器页面由您用 Toolkit 拼装,行为与产品三大处理器对齐。
admin / 123)。 前端模块源码目录 到您的前端。 VITE_GLOB_API_URL、代理与 Token。 ToolBar + 自绘表单 + WorkCheck。 FEForward iframe 挂上发起/待办/在途/抄送。这样,您得到的是:自家产品的脸面 + 该引擎的筋骨——也是该 BPM 平台最推荐的 Toolkit 集成路径。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。