- 在 formula 裡處理一串值,為什麼幾乎不用寫迴圈?
從 LotusScript/Java 過來,你會想用迴圈處理一串值。但 formula 幾乎沒有迴圈——因為一條公式本來就是對「整串 list」一次作用的。這篇把 formula 當成函數式清單語言來看:套在多值欄位上的運算自動逐元素跑(隱式 map)、@Transform 是明確的 map(還能用 @Nothing 當 filter、回傳 list 當 flatMap)、@Explode/@Implode 切字串接清單、@Sort 排序(含 [CUSTOMSORT] 用 $A/$B 自訂)。原本十行迴圈,常常一行公式就完。Formula @function 系列第二篇。
2026.08.26 - Formula 跨 View/跨資料庫取值:@DbColumn 與 @DbLookup 一次搞懂
在 formula 裡要讀另一個 view 或另一個資料庫的資料,九成的情況就靠兩個函式:@DbColumn 抓一整欄(做關鍵字清單、下拉選單),@DbLookup 按 key 找一個值(把代碼換成標籤、拉一個關聯欄位)。這篇講兩者的語法、cache 關鍵字(空字串/NoCache/ReCache)、以及那幾個一定要知道的規矩——第一欄要排序、只能相等比對、64KB 上限、還有它們在哪些地方不能用。Formula @function 系列第一篇。
2026.08.25 - Domino REST API 上線前:安全模型、rich text 單向、CORS 與 admin port
系列收尾。你已經會認證、開 scope、CRUD、查詢了;把它交給真實使用者之前,Domino 開發者最該問兩件事:它會不會繞過我的 Readers 欄位安全?以及上正式環境會踩到什麼。答案:DRAPI 是分層安全(JWT + scope + 底層 Domino 的 ACL/Readers 照算),不會漏;但有幾個很實在的限制——rich text 只能單向轉出、沒配置的欄位碰不到、同名 form/view 選哪個沒保證——加上 CORS、port 這些上線前要收的口。DRAPI 系列第六篇(完結)。
2026.08.24 - DQL 明明沒寫錯,卻一筆都查不到?因為那個 form 少了 dql mode
上一篇是用 unid 拿單一份文件。真正常見的是「符合條件的一批」——所有未完成的 todo、某區的所有客戶。DRAPI 給兩條路:GET /lists/{view} 讀一個 view/folder,或 POST /query 跑 DQL。DQL 還支援參數化查詢(?VAR + variables,防注入)。但有個接續上一篇的坑:一個 form 若沒有 dql mode,DQL 就完全看不到它。這篇把兩條查詢路徑、分頁、mode 陷阱與 DQL 存取控制講清楚。DRAPI 系列第五篇。
2026.08.23 - 在 Domino REST API 建文件,為什麼一定要帶 Form 欄位和 dataSource?
門開好了(schema + scope),這一篇做真正的活:用 REST 對 NSF 裡的文件增刪查改。建立是 POST /document、body 帶一個必填的 Form 欄位,回來的 @meta 裡有 unid;讀取是 GET /document/{unid}/{mode}。每個 CRUD 呼叫都帶 dataSource——而那個值就是你上一篇建的 scope 名字。這篇也講兩個 Domino 開發者會愣一下的點:Form 欄位為什麼必填、mode 是什麼。DRAPI 系列第四篇。
2026.08.22 - Domino REST API 的 scope 與 schema:一個 NSF 怎麼變成 REST 端點(而且預設什麼都不開)
把一個 NSF 開上 REST,不是打開開關就全部曝露。DRAPI 是 secure-by-default:你要先寫一份 schema(白名單,決定哪些 form、view、folder、agent、欄位對外),再建一個 scope(把 schema 活化成 REST mapping 的那層)。scope 的名字就是上一篇 JWT 裡 scopes claim 認的那個名字,而底下 Domino 的 ACL、Readers 欄位一樣還在算。這篇把 schema 與 scope 拆清楚。DRAPI 系列第三篇。
2026.08.21 - 呼叫 Domino REST API 一直 401?先搞懂它的 JWT 認證與 scope
DRAPI 幾乎每個呼叫都要證明你是誰。它不用傳統的 session/LTPA,而是 JWT bearer token:先 POST 到 /api/v1/auth 用 Domino 帳密換一個 token,之後每個請求都在 Authorization header 帶著它。這篇講怎麼登入拿 token、token 裡的 scopes/aud claim 在管什麼、token 從哪來(Domino 自簽 JWT、外部 OIDC、idpcat.nsf 三條路)、以及重啟金鑰會變之類的坑。DRAPI 系列第二篇。
2026.08.20 - 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