[iDempiere] AI 輔助開發:用 Claude Code 和 Gemini CLI 加速 ERP 客製化

本篇文章更新時間:2026/06/03
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


前言:ERP 客製化的學習曲線問題

iDempiere 是一套功能完整的企業級 ERP,但它的客製化開發有著陡峭的學習曲線。要寫一個 Plugin,你需要同時掌握:OSGi bundle 架構、iDempiere 的 Application Dictionary 機制、ZK Web UI 框架、Java 後端模式、REST API 的限制與慣例。

這些知識散落在 wiki、論壇貼文、原始碼註解中,沒有統一的教學路徑。即使是有經驗的 Java 開發者,面對「建立一個 Annotation-based Process」或「正確地透過 REST API 完成一張銷售訂單」這類任務,也常常需要花大量時間查文件、看範例、踩坑。

我的解法是:把這些領域知識封裝成 AI 開發助手的技能包,讓 AI Coding Agent 直接具備 iDempiere 的開發知識,而不是每次都從零開始。

目前我開源了兩個專案,分別針對兩個主流的 AI 編碼工具:

  • idempiere-api — Claude Code 插件,專注 REST API 操作與測試
  • idempiere-skills — Gemini CLI 技能包,專注 Plugin 程式碼生成

idempiere-api:Claude Code 的 iDempiere REST API 助手

這是什麼

一個 Claude Code 插件(Plugin),安裝後讓 Claude Code 具備 iDempiere REST API 的完整知識。涵蓋 34 個功能模組、159 個測試案例,以及我從實戰中整理的五大原則和錯誤診斷指南。

安裝

# 在 Claude Code 中執行
/plugin marketplace add nczz/idempiere-api
/plugin install idempiere-api@nczz/idempiere-api

可用命令

命令 說明
/idempiere-api:test <module> 執行指定模組的 API 測試
/idempiere-api:create <doctype> 單據建立指導(含五大原則)
/idempiere-api:debug 顯示錯誤診斷指南
/idempiere-api:modules 列出所有測試模組

五大原則

透過 REST API 建立 iDempiere 單據時,有五個必須確認的面向。這些原則是我從無數次踩坑中歸納的:

  1. WHO — Token 的 User 必須屬於目標租戶,且 Context(Client/Org/Role/Warehouse)正確設定。
  2. WHAT — 確認必填欄位和正確的 DocType(C_DocTypeTarget_ID vs C_DocType_ID 依表不同)。
  3. FILL — 盡可能填寫完整資訊,避免系統預設值造成的非預期行為。
  4. WHERE — 關聯主檔(BPartner、Product、Price List)優先查詢確認存在,再建立單據。
  5. WHEN — 完成、作廢等動作必須用 Process API(POST /processes/{slug}),不能用 PUT 改 DocAction 欄位。

支援的模組(部分列舉)

  • 認證與授權(auth)
  • 業務夥伴(bpartner)
  • 銷售訂單(order)
  • 採購訂單(purchase)
  • 發票管理(invoice)
  • 付款管理(payment)
  • 出入庫(inout)
  • 庫存(inventory)
  • ...共 34 個模組

使用場景

當你在 Claude Code 中對 iDempiere 做 REST API 開發或整合測試時,這個插件讓 AI 具備:

  • 知道每個單據的正確建立順序和必填欄位
  • 知道常見的錯誤原因和解法(如 Cross-Tenant 錯誤、QtyEntered 漏填)
  • 可以直接執行測試腳本驗證 API 是否正常運作

idempiere-skills:Gemini CLI 的 iDempiere 開發技能包

這是什麼

一組 Gemini CLI 的技能(Skills),涵蓋 iDempiere Plugin 開發中最常見的 11 種模式。每個 Skill 包含完整的程式碼模板和工作流程指引,讓 Gemini 可以按照正確的模式生成 iDempiere 程式碼。

安裝

# 前置:安裝 Gemini CLI
npm install -g @google/gemini-cli

# 安裝個別技能
gemini skills install https://github.com/nczz/idempiere-skills.git --path idempiere-annotation-process
gemini skills install https://github.com/nczz/idempiere-skills.git --path idempiere-callout-generator
# ... 依需要安裝

可用技能

Skill 用途
idempiere-annotation-process 建立 Annotation-based Process + ProcessFactory
idempiere-mapped-process 建立 IMappedProcessFactory 的 Process
idempiere-callout-generator 建立欄位 Callout + CalloutFactory
idempiere-event-annotation 建立 Annotation-based Event Manager + Delegate
idempiere-osgi-event-handler 建立 OSGi component-based Event Handler
idempiere-rest-resource 建立 REST ResourceExtension(自訂 API)
idempiere-window-validator 建立 WindowValidator(視窗驗證邏輯)
idempiere-zul-form 建立自訂 ZK Form(IMappedFormFactory)
idempiere-grouped-listbox 建立 Grouped Listbox Form
idempiere-wlistbox-custom-editor 自訂 WListbox 欄位編輯器
idempiere-mapped-model-factory-service 使用 IMappedModelFactory 掃描 Model

每個 Skill 的結構

每個技能包含:

  • SKILL.md:工作流程描述,告訴 AI「建立這種元件需要哪些步驟」
  • assets/:程式碼模板(.java),包含正確的 annotation、OSGi 宣告、interface 實作

例如 idempiere-annotation-process 的工作流程:

  1. 確認 Process 的 package 位置
  2. 用模板建立 AnnotationBasedProcessFactory(OSGi @Component)
  3. 用模板建立 Process class(@Process + @Parameter annotations)
  4. 確保 Factory 的 getPackages() 包含 Process 所在的 package

使用場景

當你對 Gemini 說「幫我建立一個 C_Order.DateOrdered 的 Callout,設定 DatePromised 為今天」,安裝了 idempiere-callout-generator 技能的 Gemini 會:

  1. 用正確的 @Callout annotation template
  2. 設定正確的 tableName 和 columnName(用 I_C_Order interface 常數)
  3. 在 start() 中正確使用 mTab.setValue()
  4. 如果 Factory 不存在,同時建立 Factory class

不需要你記住所有的 annotation 格式、interface 名稱、OSGi 宣告方式。


兩個工具的互補關係

面向 idempiere-api(Claude Code) idempiere-skills(Gemini CLI)
階段 Runtime(執行期) Development(開發期)
用途 REST API 測試、單據操作、除錯 Plugin 程式碼生成
輸出 API 呼叫結果、診斷報告 Java 原始碼檔案
適合誰 整合開發者、QA、顧問 Plugin 開發者
知識來源 34 模組測試 + 五大原則 + 錯誤診斷 11 種開發模式 + 程式碼模板

一個典型的開發流程可能是:

  1. idempiere-skills + Gemini 生成 Plugin 骨架(Process、Callout、Event Handler)
  2. 部署到測試環境
  3. idempiere-api + Claude Code 測試 REST API 行為是否符合預期

為什麼要封裝領域知識給 AI

你可能會問:直接問 AI 不行嗎?為什麼要做成 plugin / skill?

差別在於精確度和一致性

  • 沒有領域知識:AI 可能用 PUT 改 DocAction(錯誤)、可能忘記 QtyEntered(錯誤)、可能用錯 C_DocType_ID vs C_DocTypeTarget_ID(錯誤)。這些都是 iDempiere 特有的陷阱,通用 AI 模型不會知道。
  • 有領域知識:AI 知道必須用 Process API 完成單據、知道每個表的必填欄位、知道正確的 Annotation 格式。產出的程式碼直接可用,不需要 debug。

本質上,這是把「資深 iDempiere 開發者的經驗」編碼化(codified),讓任何開發者都能透過 AI 存取這些經驗。


授權

  • idempiere-api:MIT License
  • idempiere-skills:依 iDempiere 社群慣例

延伸閱讀

本站 iDempiere 開發相關:

如果你的團隊正在用 iDempiere,想加速客製化開發或需要顧問協助,歡迎透過聯絡我們洽詢。


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon