CAS Software AG(德國 Karlsruhe,1986 年成立)專注中小企業 CRM 領域。新產品 CAS PIA (Personal Information Assistant) 以 SaaS 模式交付,目標:提供桌面級體驗的 Web CRM,整合市場營銷、郵件、個性化信函等功能,採用模塊化架構。
| 層級 | 技術選型 | 角色 |
|---|---|---|
| 表示層 | Eclipse RAP (Rich Ajax Platform) | 構建桌面風格 Ajax UI,單代碼庫可編譯為 RCP/Web |
| 運行時 | Eclipse Equinox (OSGi R4) | 模塊化、動態擴展、多產品線組件復用 |
| 應用服務器 | Apache Tomcat | 承載 OSGi 運行時與 Web 應用 |
| 業務邏輯/數據訪問 | EIM (Enterprise Information Management) 核心 + Spring | 組件化服務層,支持 JAX-WS/RMI/REST 遠程調用 |
| 持久層 | MySQL + 自研擴展數據模型、CAS-SQL、ACEGI 權限 | 可擴展數據模型、列級 ACL、多數據庫支持 |

RAP 運行於服務器,通過 Qooxdoo JS 框架在瀏覽器渲染 SWT 組件子集;RCP 直接在客戶端 JVM 運行。共享 Workbench 擴展點、JFace 數據綁定等核心編程模型。
org.eclipse.rap.ui.resources 擴展點註冊 JS 資源
| 端 | 框架 | 重點 |
|---|---|---|
| Java 端 | JUnit + RAPTestCase (OSGi 環境) | 視圖生命周期、數據綁定、業務邏輯 |
| JS 端 | Qooxdoo Test Runner (類 JSUnit) | 內存洩漏檢測、組件行為、事件處理 |
// JS 內存洩漏測試示例
testMemoryLeak: function() {
var ms1 = de.tests.MemoryLeakUtil.getMemorySnapshot();
var dc = new de.cas.qx.ui.widget.calendar.datechooser.DateChooser();
qx.ui.core.Widget.flushGlobalQueues();
dc.dispose();
var ms2 = de.tests.MemoryLeakUtil.getMemorySnapshot();
this.assertEquals("", de.tests.MemoryLeakUtil.checkMemoryLeak(ms1, ms2),
"There are some leaking objects!");
}
extendedFrameworkExports 參數實現非 OSGi 的 EIM 核心與 RAP 共享 ClassLoaderCAS 以 Eclipse RAP 為核心,構建了兼具桌面體驗與 Web 部署優勢的新一代 CRM 產品。儘管經歷陡峭學習曲線與性能調優,但 Java 開發者熟悉的編程模型、成熟工具鏈、單一代碼庫雙端交付,極大提升了團隊生產力。RAP 在企業級 SaaS 應用中的價值已獲驗證。