技术文章

当前位置:首页>帮助手册>技术文章

O2OA 开发平台 × 鸿蒙系统:一套可落地的移动办公与低代码集成方案(技术细节版)

时间:2025-09-18   

这是一篇技术稿。聚焦 O2OA 与鸿蒙(HarmonyOS / OpenHarmony)端侧集成的落地路径:架构、工程拆解、认证与通信、H5 混合、卡片(服务窗)、消息推送、文件上传、分布式能力、性能与安全、信创兼容等,附 ArkTS 代码片段,便于团队按图实作。


image.png


该方案的特点或者优势

1双形态:ArkTS 原生 + H5 混合两条路线,覆盖 HarmonyOS NEXT 与传统设备。

2统一认证:建议走 OIDC/OAuth2 授权码(PKCE)+ JWT,端侧统一 Bearer 调用 O2OA REST。

3能力矩阵:待办/审批走 卡片(Service Widget) 快速触达;通知用 系统通知 + 推送;长连接用 WebSocket 或 SSE。

4工程实践:ArkUI/Stage 模型、Web 组件注入 Token、分环境构建、证书 Pinning、最小权限、端云联调清单。

5信创适配:后端继续跑在麒麟/统信/龙芯/飞腾等平台与国产数据库(达梦/金仓/人大金仓/openGauss)上,前后端解耦,端侧无侵入。


image.png

image.png


该方案典型业务场景与总体架构

1场景

1)移动审批:待办、已办、抄送;流程查看、意见填写、附件上传。

2)智能助手:结合 O2OA 的 AI/ML 能力(如会议纪要、表单填写建议)在端侧唤起。

3)通知触达:任务提醒、流程超时、公告播报。

4)资产/档案:移动端文件定位、在线预览、扫码入库。


2架构展示(文字版)

[O2OA 网关/API] ——(HTTPS/OIDC)—— [HarmonyOS App(ArkTS)]
       |                                   |-- 原子化服务/卡片(待办数)
       |                                   |-- WebView(表单H5 + JSBridge)
       |                                   |-- WebSocket/SSE(实时提醒) [AI/搜索/文件]                       |-- Push/通知/深链(deeplink)
       | [信创数据库/操作系统/芯片栈]


端侧工程拆解(ArkTS / Stage 模型)

1推荐工程结构

/entry                // 主 HAP
  /src/main/ets    
  /entryability           // 主 Ability(Stage)
    /pages            // ArkUI 页面(待办/审批/设置)    
    /components          // 组件(列表卡片、状态视图)    
    /common            // 常量/工具/网络封装/存储    
    /services           // 业务服务(auth、workflow、file)  
    /resources          // 字体/图标/多语言
      module.json5            // 权限与元数据(INTERNET、NOTIFICATIONS…)
  /widget              // 卡片 HAP(可选)
  /feature-x            // 业务子模块(按需拆分)

2. 基础权限建议:按需最小化


统一认证:OIDC/OAuth2(PKCE)+ JWT

1ArkTS:最小可用网络封装

// common/net.tsimport http from '@ohos.net.http';export async function request(url: string, options: {
 method?: string; headers?: Record<string,string>; body?: string } = {}) {
   const httpReq = http.createHttp();  try {
       const resp = await httpReq.request(url, {
             method: options.method ?? 'GET',      
             header: options.headers ?? {},      
             extraData: options.body ?? '',      
             expectDataType: http.HttpDataType.STRING,
    });    
    if (resp.responseCode >= 200 && resp.responseCode < 300) {
          return JSON.parse(resp.result ?? '{}');
    }
    throw new Error(`HTTP ${resp.responseCode}: ${resp.result}`);
  } finally {
    httpReq.destroy();
  }
}

2. 带 Token 调用 O2OA

// services/workflow.ts
import { request } from '../common/net';
import { tokenStore } from '../common/tokenStore';
const API_BASE = ' 
export async function fetchTodoList(page = 1, size = 20) {
  const token = await tokenStore.getAccessToken();
    return request(`${API_BASE}/workflow/todo?page=${page}&size=${size}`,
     {
         headers: {
          'Authorization': `Bearer ${token}` 
         }
  });
}

H5 混合:ArkUI Web 组件 + JSBridge(推荐保留)

对于复杂表单/流程设计,用 O2OA 的 H5 能力更高效。原生负责导航、鉴权、系统能力(通知/文件/分布式),H5 负责表单与可视化。

1. 关键点

1)使用 Web 组件加载表单页:https://o2.example.com/h5/form?id=xxx

2)通过 注入 JS 或 URL Scheme 把 Token/用户信息安全传入(仅限同源 HTTPS)。

3)监听 H5 返回事件,在原生层做文件选取/拍照、扫码等。

2. ArkTS:Web 注入示例

// pages/FormPage.ets (片段)Web({
  src: `https://o2.example.com/h5/form?id=${this.formId}`,
    controller: this.webCtrl
    })
.onPageEnd(async () => {
  const token = await tokenStore.getAccessToken();  // 仅在可信页面注入,与后端约定window.O2OA.setToken
  this.webCtrl.runJavaScript(`window.O2OA && window.O2OA.setToken(${JSON.stringify(token)})`);
})

安全提示:只对受信域名白名单页面注入;生产启用 内容安全策略(CSP),并对 WebView 开启 HTTPS 强制与证书校验。


原子化服务/服务卡片(Form/Widget)

1用于「待办数量」「今日审批」「公告摘要」等 glance 信息。

2使用卡片的 FormProvider 定时/事件刷新;点击深链到对应页面(deeplink)。

卡片数据推送思路:

1App 启动或收到推送 → 拉取 /workflow/todo/count → 更新卡片。

2设定 WorkScheduler 周期(后台受限场景尽量以推送事件触发)。


消息触达:系统通知 + 推送通道

1系统通知:到达即显,适合本地与实时提醒。

2云推送:后端(O2OA 或网关)与推送服务对接,按用户/角色推送消息,点击深链参数(如 taskId)直达详情页。

3实时连接:在 App 前台可使用 WebSocket(或 SSE)同步待办数、在线消息。

4本地通知(示意):

// services/notify.tsimport notification from '@ohos.notificationManager';
export async function notify(text: string, deeplink?: string) {  
    await notification.publish({    
        content: { 
            notificationContentType: notification.ContentType.TEXT, normal: { text } 
        },    
        label: 'o2oa',    
        wantAgent: deeplink ? /* 构造 deep link */ 
        undefined : undefined
  });
}


文件与拍照上传

1. ArkTS 端使用 文件选择/相机 能力获取 File/uri,通过表单上传到 /file/upload

2建议后端支持 分片/断点续传,大文件直传对象存储(后端签名换直传,端侧仅 PUT 到存储)。

3上传(简化示意)

// services/file.ts
import http from '@ohos.net.http';
import { tokenStore  } from '../common/tokenStore';
export async function upload(uri: string) {
  const token = await tokenStore.getAccessToken();
  const httpReq = http.createHttp();
    try {
        const resp = await httpReq.request('https://o2.example.com/api/file/upload', {
          method: http.RequestMethod.POST,
          header: {'Authorization': `Bearer ${token}`},
          files: [{ 
              name: 'file', 
              filename: 'upload.bin', 
              filePath: uri 
          }]
    });    
    if (resp.responseCode !== 200) throw new Error('upload failed');    
    return JSON.parse(resp.result ?? '{}');
  } finally {
    httpReq.destroy();
  }
}


分布式能力(可选)

1设备协同:在平板/手机/PC 形态间同步审批上下文(例如半填的表单草稿)。

image.png

2分布式数据:使用分布式 KV/数据库时,建议只存储无敏感轻量数据;敏感信息仍以 Token + 后端拉取为准。

3跨设备流转:利用深链参数在目标设备继续流程。


后端(O2OA)配合清单

认证:开放 OIDC/OAuth2 授权码(PKCE)与 Client Credentials(仅服务到服务)。


安全加固与合规

1证书 Pinning:在客户端校验后端证书公钥指纹,防中间人。

2Token 安全:仅内存/受限存储,锁屏清除策略;前后台切换时刷新有效期。

3最小权限:仅在需要时申请相机/媒体/通知。

4输入验证:端侧基础校验 + 服务端强校验,严禁信任端侧。

5日志脱敏:Token/手机号/身份证等全部脱敏或不落盘。

6合规:遵循企业数据分级、等保/隐私合规要求,端侧展示须可控。


兼容与演进策略

1双路线并行:ArkTS 原生优先 + H5 混合兜底,保证 HarmonyOS NEXT 设备可用。

2SDK 依赖体检:如既有 Android 依赖(地图/扫码等),需替换为 Harmony 生态等效能力或 H5 能力。

3模块化:推送、扫码、预览等能力抽象为接口,便于替换底层实现。

4灰度与 A/B:通过远程配置开关 H5/原生页面比例,平滑迁移。


性能与体验优化清单

1首屏:缓存待办数/用户信息,后台并行拉取;Skeleton 占位。

2列表:虚拟滚动 + 分页(20~30)+ 图片懒加载。

3表单:分段提交、草稿自动保存(本地/分布式 KV)。

4网络:开启 HTTP 压缩、合理超时与重试、弱网降级到 H5。

5状态管理:统一 Store(如 AppStorage/LocalStorage),避免多源真相。

6可用性:深色模式、无障碍语义标签、文字缩放适配。


信创生态与 O2OA 的后端适配

1操作系统:统信 UOS、银河麒麟 Kylin 等;

2CPU:龙芯、飞腾、鲲鹏、海光等;

3数据库:达梦、神通、金仓、人大金仓、openGauss 等。

4O2OA 部署:仍以 Java/Jakarta EE 微服务化部署,容器化优先;通过适配层/数据源驱动确保国产数据库兼容;日志/监控接入国产中间件(ELK 等国产替换)。

端侧(鸿蒙)与后端(信创)完全解耦,移动端只面向统一的 HTTPS API 与 OIDC,工程上不受服务器底层差异影响。


交付与运维(实操建议)

1环境分层:DEV/UAT/PROD 三套域名与 IdP;App 以构建参数切换。

2CI/CD:hvigor/ohpm 构建,接企业流水线;自动化单测 + UI 回归。

3监控指标:登录成功率、API RTT、推送送达率、崩溃率、首屏时间。

4回归清单:登录/刷新、列表分页、审批提交流、附件上传、卡片刷新、通知深链、弱网/离线、权限拒绝路径。


常见问题(FAQ)

1. 我们已有 Android 版 App,迁移难度大吗?
建议 ArkTS 原生 + H5 混合重构关键路径(登录、列表、审批),其余页面先以 H5 运行;逐步替换第三方 SDK 为鸿蒙等效能力。


2. 不用原生表单,全用 H5 可以吗?
可以,但建议把登录、通知、文件、扫码、卡片等 系统级能力 放在原生侧,整体体验与稳定性更好。


3. AI 助手怎么集成?
端侧以文本/语音输入,走 O2OA 的 AI 网关(SSE/WebSocket 流式),在审批页提供「智能填充/要点总结」侧栏;注意敏感字段的提示与用户确认。


小结

1O2OA 与鸿蒙系统的结合,不只是要能正常运行,而是要做到体验稳定、触达高效、安全合规、可持续演进。

2以 ArkTS 原生 + H5 混合 为主线,配合 OIDC 统一认证、卡片/通知触达、文件与实时连接,即可快速构建一套企业级移动办公与低代码能力的高质量实现。

3后端继续拥抱 信创生态,端云一体、前后解耦,保持长期可维护与可扩展。


上一篇:O2OA信创生态:从兼容到深度集成的工程实践白皮书

下一篇:没有了!