
iDempiere
欄位護體心法:以 Java 黑魔法施展三明治夾擊,拒絕核心清空詛咒 🥪🛡️
前言:江湖恩怨的起源 話說 iDempiere 武林之中,有一物件名曰 Request(工單),乃本門 Kanban 看板的命脈所繫。 此物件內建一套 Request Event 機制——每逢工單有任何異動,無論狀態流轉、欄位修改,一律觸發事件,忠實記錄。本是好事,奈何核心門派有個陋習:每次觸發,皆順手將 EndTime 欄位清空。 清空!不留情面,不問用途,一律清空。 偏偏本公司為了打造 Gantt 時程甘特圖,早已將 StartTime 與 EndTime 視為「預計工期起訖」的聖物,Kanban 看板上的每一條任務橫條,皆仰賴此二欄定錨。結果工單一更新,EndTime 應聲歸零,甘特條目憑空消失,掌管進度的同仁苦不堪言。 江湖人人皆知:核心源碼裡,只消刪掉一行程式碼,此患即除。 然老掌門有令,鐵口直斷:「不得動核心!日後升級,誰負責?必須以 Plugin 之道解決!」 於是,一場鬥智鬥勇、三戰三折的突圍之旅,就此展開。 第一式:OSGi 排名戰術——初入江湖,遭遇迎頭痛擊 ❌ 心法口訣:「以序取勝,先下手為強。」 吾等初出茅廬,自以為尋得破敵之道:建立三層「夾擊陣型」,以 Ranking 高下控制出手順序—— Capturer(先行者) Ranking 10000:搶在核心之前,扣押 EndTime 資料...
2026-04-16 · 閱讀 8 分鐘