明道雲應用搭建進階實戰
複雜工作流 · 聚合表 · 資料工廠 · 程式碼塊 · 效能最佳化 · 大資料量
工作流
聚合表
資料工廠
程式碼塊
效能
ETL
六大進階主題
① 複雜工作流編排
- 並行分支、條件分支、迴圈節點
- 子流程複用與錯誤補償
- 超時回收、重試、人工干預節點
- 非同步節點 + 佇列削峰
② 聚合表 & 跨應用聯動
- 多工作表聯合查詢 · 去重合並
- 按維度彙總:時間/部門/客戶等級
- 聚合表作為 BI 資料層
- 增量重新整理與定時快照
③ 資料工廠 ETL
- 資料來源連線:MySQL/Oracle/API/Excel
- 欄位對映 · 清洗規則 · 脫敏
- 排程:定時/Cron/事件觸發
- 失敗告警 & 斷點續跑
④ 程式碼塊 & 自定義頁面
- JS 程式碼塊:業務計算 / 動態路由
- 自定義頁面:Vue/React 嵌入
- 自定義控制元件:日曆、甘特、地圖
- 與工作表 API 雙向資料繫結
⑤ 效能最佳化
- 欄位索引策略 · 精確檢索優先
- 冷熱資料分層 · 歸檔歷史
- 檢視快取 · 聚合預計算
- ES 模糊搜尋 · 分頁 + 虛擬滾動
⑥ 大資料量處理
- 批次匯入:分批 + 斷點續傳
- 非同步匯出:任務佇列 + 進度通知
- 關聯欄位大表的查詢裁剪
- 歸檔到物件儲存 + 按需召回
程式碼塊示例:動態審批路由
根據報銷金額選擇不同審批人鏈路,金額 ≥ 50000 增加 CFO 節點。
// 明道雲工作流 · JS 程式碼塊節點
// 輸入:record(當前記錄),context(流程上下文)
// 輸出:approverIds(審批人 ID 列表)
const amount = Number(record.amount || 0);
const deptLeader = await md.getManager(record.creator, 1); // 直屬上級
const finance = 'user_fin_001';
const cfo = 'user_cfo_001';
let approvers = [deptLeader, finance];
if (amount >= 50000) approvers.push(cfo);
return { approverIds: approvers.filter(Boolean) };
資料工廠參考架構
① 資料來源
- MySQL / Oracle / PG
- ERP / CRM API
- Excel / CSV 上傳
- 明道雲工作表
② 清洗層
- 去重 / 去空
- 欄位對映 / 格式化
- 列舉值轉換
- 敏感欄位脫敏
③ 聚合層
- 維度分組 / 指標計算
- 多表 JOIN
- 同比 / 環比
- 預計算檢視
④ 輸出
- 儀表盤 / 聚合表
- 回寫業務工作表
- 外部 BI / 數倉
- API 下游消費
效能最佳化 Checklist
查詢加速
- 高頻篩選欄位建索引
- 避免過多 JOIN,優先聚合表
- 列表檢視預設隱藏大欄位
- 模糊搜尋走 ES
資料瘦身
- 歷史資料歸檔到"歸檔表"
- 附件存 OSS,DB 只留引用
- 工作流 done 狀態記錄定期清理
- 大欄位拆子表按需載入
工作流
- 高頻觸發加條件過濾
- 長耗時節點放非同步佇列
- 失敗節點設重試上限 3 次
- 定時任務錯峰執行
前端體驗
- 長列表啟用虛擬滾動
- 分頁大小預設 20-50
- 儀表盤限制單次資料點 < 10k
- 自定義頁面懶載入元件