D HCL Domino 日報
所有文章 搜尋 類別地圖 關於
文 A
  • Domino REST API DQL +1
    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 Tutorial
    在 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 Security
    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 Security +1
    呼叫 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 DevOps
    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 →
  • LotusScript Tutorial +2
    跨 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
    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
    在 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
    在 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 →
‹ 上一頁1…567…20下一頁 ›
由 Astro 與 GitHub Actions 驅動