跳转至

运行时门户(obpm-runtime-web/portal/vue3)

用户侧核心前端:流程办理、表单渲染、视图展示、待办中心。总览见 [[frontend-architecture]];表单定义 Schema 见 [[../workspace-mechanism/xml-schemas/form-file]]。

1. 工程定位

Vue 3 组合式 API(<script setup>,旧组件选项式)+ Vite + Element Plus + Pinia + Vue Router(hash)+ vue-i18n + Axios + SCSS; Handsontable(Sheet 视图)、ECharts(图表/仪表盘);jQuery 全局保留(window.$,遗留脚本注入用)。开发时 Vite 代理多前缀(/obpm、/static、/converter、/static/kms/kmspc…)到 localhost:8888(Lite 单体)。

2. 组件体系(src/components/)

门户的组件目录即**运行时能力的分块**:

flowchart TD
    MAIN["main/ 主框架<br/>门户布局·菜单·导航"]
    FC["flowcenter/ 流程中心<br/>launch·pending·processing·unread·read·meter"]
    FORM["form/ 表单容器<br/>按 JsonTemplate 动态渲染"]
    FIELD["field/ 字段渲染器<br/>o_input·o_date_picker·o_select…<br/>o_file_kms·o_flow_history·o_gps…"]
    VIEW["view/ 视图渲染<br/>列表·树·日历·甘特·折叠·卡片"]
    ACT["activity/ 工具栏操作<br/>保存·提交·打印…(.activity 定义)"]
    WIDGET["widget/ 首页组件"]
    AI["ai_assistant/ AI 助手"]
    DIALOG["o_action_dialog/ 操作弹层"]

    MAIN --> FC & FORM & VIEW & WIDGET
    FORM --> FIELD
    FORM --> ACT
    VIEW --> ACT
    ACT --> DIALOG

关键机制——字段渲染器映射:form/ 拿到 .form 的 templatecontext(JsonTemplate)后,field/field.js 按 fields[].scope 分发到对应 o_*.vue 渲染器(与后端 FormField 子类一一对应,见 [[../java/classes/form-field-hierarchy]])——设计器定义什么字段,运行时就渲染什么控件,同构映射。

标题栏是否显示由当前布局 fieldRef.showTitle 决定(Java 编译到字段包装 HTML 的 showTitle 属性;PC 端 field_label.vue 读 isFieldTitleVisible,Mobile 端 CSS 按 .baseField[showtitle=false] 隐藏)。自定义 mobile 布局时必须以包装 HTML 为准,不能只信 PC 解析出的字段 JSON。

3. 路由(hash 模式)

路由 组件 用途
/ views/Main.vue 门户主布局
/launch flowcenter/main_launch.vue 发起流程
/pending / /processing flowcenter/* 待办 / 经办
/unread / /read flowcenter/* 未读 / 已读(消息)
/meter 仪表盘
/open views/Opener.vue 统一资源打开入口(菜单/待办跳转进表单或视图)
/printView / /formPrint / /print_pdf Print*.vue 打印/表单打印/PDF
/ui-spec views/UiSpec.vue UI 规范页

路由按 chunk 懒加载(webpackChunkName 注释)。

4. 静态伴生资源(obpm-runtime-web 其余部分)

目录/文件 用途
login/ 登录落地页(与 signon-web 配合)
UEditor/ 富文本编辑器(HTMLEditorField 字段的运行时控件)
viewer/pdf、viewer/wps 文档在线预览
dingding.html、feishu.html 钉钉/飞书 OAuth 回调页
config.js 全局配置

这些与 portal/vue3 同仓不同代——门户是 Vite 工程,伴生资源是原样部署的静态文件,由后端 magic-static / /static 路径托管。

5. 一次流程办理的数据流

sequenceDiagram
    participant U as 用户
    participant P as 门户 /pending
    participant R as 后端 runtime
    participant F as form/ + field/

    U->>P: 打开待办
    P->>R: GET 待办列表(ActorRT 视图)
    R-->>P: 待办(docId + formId + flowState)
    U->>P: 点击办理
    P->>R: GET 文档 + Form 定义(templatecontext)
    R-->>P: Document/Items + JsonTemplate
    P->>F: 按 scope 分发渲染 o_* 字段
    U->>F: 填写并点工具栏(activity type=5 流程处理)
    F->>R: 保存文档(TLK_)+ 流程流转(FlowStateRT/NodeRT/ActorRT)
    R-->>P: 下一节点待办人
    P->>U: 办结/刷新待办

后端运行态实体与表见 [[../java/classes/workflow-node-hierarchy]] 与 [[../table-schema/core-tables]]。