所有文章
- OpenNTF 把首頁 app 搬出 Domino:純靠 DRAPI 跑在 Open Liberty 上
Jesse Gallagher 把 OpenNTF 的首頁 app 從 XPages 改寫成 Jakarta EE,資料層完全走 DRAPI(Domino REST API),最後把它打包成 WAR、部署到 Open Liberty — 跑在 Domino 之外。這件事的意義不是「又一個改寫」,而是它驗證了一條路:為 Domino 寫的 Jakarta EE app 可以是可攜的,資料留在 NSF、執行環境卻不綁 Domino。本文整理他做了什麼、技術堆疊、為什麼值得關注,以及他自己點出的幾個還很粗糙的地方。
2026.06.13 - NotesAgent:用程式呼叫另一支 Agent(Run vs RunOnServer)
你有一支很重的處理 agent,想讓另一支 agent、或一個按鈕在需要時觸發它 — 不是用排程、是用程式直接叫起來。NotesAgent 就是做這件事的類別:db.GetAgent() 拿到 agent,再用 Run 或 RunOnServer 跑它。本文拆解這兩個方法最關鍵的差異(在 client 跑還是在 server 跑)、怎麼用 noteID 把一份文件傳給被呼叫的 agent、IsEnabled / Trigger / Target 等屬性,以及四個限制:不能遞迴、不能 debug、使用者不能互動、輸出只進 Domino log。
2026.06.12 - NotesRichTextNavigator × NotesRichTextRange:用程式走訪與改寫 Rich Text
你有 500 份文件的 Body 欄位,要找出每一個 doclink、或把某個字串全部換掉 — 光靠 NotesRichTextItem 拿到整個欄位還不夠,你需要更細的工具。NotesRichTextNavigator 讓你依「元素型態」一個一個走訪 rich text,NotesRichTextRange 讓你選定一段、然後套樣式或刪除。本文拆解這兩個 Release 6 起的搭檔、element-type 常數、FindAndReplace 的選項與回傳值,以及一個踩了就 debug 半天的鐵則:FindAndReplace 之後所有 navigation marker 全部失效。
2026.06.11 - NotesUIWorkspace × NotesUIDocument:LotusScript 的前端自動化
站上前面拆過的 NotesDatabase、NotesDocument 都是後端類別 — 但當你要在使用者按下按鈕的當下、讀他「螢幕上還沒存檔」的欄位值、跳一個對話框問他、或把當前文件切到編輯模式,靠的是另一半:NotesUIWorkspace 與 NotesUIDocument。本文拆解這組前端雙人組、最關鍵的「前端值 vs 後端 Document」觀念、FieldGetText/FieldSetText、Prompt 與 PickList 對話框,以及一個最容易忘的鐵則:UI class 不能在背景 / 排程 agent 裡跑。
2026.06.10 - NotesName:別再用字串切 Domino 階層名稱
要從 CN=王小明/OU=Sales/O=Acme/C=TW 取出「王小明」,你還在用 Mid、InStr、@Name 硬切字串嗎?NotesName 是 Domino 內建的名稱解析類別 — session.CreateName() 一句,就能在 canonical、abbreviated、common、Internet(RFC 821/822)各種格式間互轉,並逐段拆出 O / OU / C / G / S 等元件。本文拆解全部唯讀屬性、三種格式互轉、flat name 與 Internet 名稱的行為差異、以及「abbreviation 會有歧義時不縮寫」這個容易忽略的規則。
2026.06.09 - Nomad 定位三件組:NotesGPS / NotesGPSPosition / NotesGPSCoordinates
傳統 LotusScript 沒有定位 API — 但跑在 HCL Nomad 上的 app 其實拿得到使用者的經緯度。NotesGPS 是 Domino 為 Nomad 補上的客戶端定位類別,從 NotesSession.CreateGPS() 起手,經 RequestAccess() 取得授權、GetCurrentPosition() 拿到 NotesGPSPosition、再從 Coordinates 讀出 NotesGPSCoordinates 的 Latitude / Longitude。本文拆解這條三類別鏈、官方範例逐行解說,以及 error 4508、iOS 首呼叫 Speed/Heading 為空、HighAccuracy 室內失準等幾個一定要知道的坑。
2026.06.08