- Domino REST API 上手:把 NSF 資料變成任何語言都能呼叫的 REST 端點
想讓一個現代前端、一支 Python 服務、或一條 Power Automate 流程讀寫 Domino 資料,傳統答案(XPages、DIIOP、自己寫 LotusScript web agent 吐 JSON)都得讓對方遷就 Domino。Domino REST API(DRAPI,KEEP 專案)把它反過來:在你的 NSF 之上架一層標準的 REST/JSON API,任何會講 HTTP 的語言都能呼叫。這是 DRAPI 系列的第一篇——它是什麼、跟傳統存取差在哪、三個要先懂的積木(scope/schema、JWT、OpenAPI/Swagger),以及怎麼開始。
2026.08.19 - 跨 DB 的 embedded view 搬到測試區就「無法啟動」?問題出在 DXL 裡綁死的抄本 ID
一個 form 上的跨 DB 嵌入視圖,在開發區好好的,交到客戶測試區就顯示「無法啟動」。翻遍 Designer 的嵌入視圖 UI 也沒有地方換來源資料庫。把 form 匯出成 DXL 才發現:embeddedview 元素用來源庫的抄本 ID(replica ID)綁死來源,換了環境那個 ID 就對不上。這篇是實測記錄:怎麼診斷、怎麼用一支 NotesDXLExporter/Importer 的 agent 批次換掉,以及後來才發現的更快解法——Designer 直接「以 DXL 編輯」。
2026.08.18 - Java 的 NotesException:.id、.text 與 try/catch/finally
LotusScript 的錯誤處理是 On Error Goto、Err.Number、Resume 那一套。搬到 Java,幾乎每個 lotus.domino 方法都會丟一個受檢的 NotesException——編譯器逼你處理,而它身上帶著 .id(Notes 錯誤碼)與 .text(錯誤訊息)。這篇講 Java 版的例外處理:NotesException 的欄位、怎麼用 .id 比對 NotesError 常數做針對性處理,以及把這整個 Java 資料層系列收在一起的那條規則——recycle 要放進 finally,這樣連拋例外時也收得乾淨。
2026.08.17 - 在 Java 裡迴圈跑 DocumentCollection:先拿下一份,再 recycle 這一份
LotusScript 裡跑一個 DocumentCollection,你 Set doc = coll.GetNextDocument(doc) 一路跑到底,從不想記憶體的事。搬到 Java,同一個迴圈跑上萬份文件會把 agent 記憶體吃垮——除非你在迴圈裡 recycle 每一份,而且順序不能錯:得先用當前這份拿到下一份、再 recycle 當前這份。這篇講 Java 版的正確迭代寫法:DocumentCollection 的 getFirstDocument/getNextDocument、刪除標記的 isValid、什麼時候該改用更省的 ViewNavigator,以及那個 LotusScript 從不需要煩惱的 recycle 順序。
2026.08.16 - 在 Java 裡處理 Notes 日期,為什麼不能直接用 java.util.Date?
在 Java 裡處理 Notes 的日期,你不能直接用 java.util.Date——中間隔著一個 lotus.domino.DateTime。它是個背後連著 handle 的重量級後端物件,在迴圈裡不 recycle 就漏記憶體;它用字串在存日期、壞值會丟例外;而 toJavaDate() 是你把它換成 Java 自家時間型別、再接上 java.time 的那座橋。這篇講 Java 版 DateTime 怎麼建、怎麼讀寫、怎麼跟 Java 的時間世界互轉,以及那個從 LotusScript 帶不過來的 recycle 負擔。
2026.08.15 - Java 讀寫 Notes item:getItemValue 回的是 Vector,不是你熟的那種陣列
LotusScript 裡 doc.GetItemValue 回一個 Variant 陣列,你 For 一圈就完事。搬到 Java,同一個呼叫回的是 java.util.Vector,元素型別要自己認、缺欄位不丟例外只回空的、裡面若是 DateTime 還會漏記憶體。這篇把 Java 版 Document 的讀寫 item 講清楚:getItemValue 與那幾個型別化 getter 的回傳與缺欄位行為、replaceItemValue 接受哪些 Java 型別又會自動建 item、appendItemValue 為什麼會默默建出重複 item,以及三個 LotusScript 帶不過來的雷。
2026.08.14 - Domino 14.5.1 FP1 有什麼:RAG 能接遠端模型、49 個修正、JVM 更新
Domino 14.5.1 的第一個 Fix Pack 在 2026-07-16 悄悄上線,官方一句「建議所有客戶安裝」帶過。這篇把它對開發者與管理者最有感的幾點整理出來:RAG 多了 Remote 模式(LLM 可接遠端、向量庫仍在本機)、約 49 個修正裡不少是修回 14.5.1 自己的 regression、JVM 更新到 Semeru 21.0.11+10、兩個 OIDC 安全修正,以及幾個藏在 notes.ini 的小開關。
2026.08.13 - XPages/SSJS:直接用 java.util.Vector 操作多值欄位
LotusScript 沒有 removeElementAt、刪一個多值元素得重建陣列;SSJS 剛好相反——它跑在 Java 上,多值欄位讀進來就是一個 java.util.Vector,addElement/removeElementAt/insertElementAt 整套 API 現成可用,改完用 replaceItemValue 寫回。這篇拆解怎麼用 Vector 操作多值、倒著刪的原理、以及兩個一定會踩的雷(空欄位的 [""]、getValue 的型別)。
2026.08.12 - LotusScript 沒有 removeElementAt:從陣列、List、多值欄位刪一個元素
在 SSJS/XPages 裡刪一個多值元素很順——java.util.Vector 有 removeElementAt,倒著跑迴圈依 index 刪就好。搬到 LotusScript 卻卡住:沒有 Vector、沒有 removeElementAt,而 Erase 對陣列是「整個清空」不是「刪一個」。這篇拆解 LS 的實際選項——先分清你的集合是什麼,再用 Split/Join、陣列重建、List 的 Erase(tag)、或 Evaluate + @Replace。
2026.08.11