首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Eclipse RAP 富 Ajax 平台在 CAS Software AG CRM 產品中的企業級應用實踐

     編輯:Java 相關知識

項目背景:CAS PIA — 首個 SaaS 化 CRM 產品

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、多數據庫支持

為什麼選擇 Eclipse RAP?

  • 用戶體驗:符合人機工程、可切換主題、拖拽等桌面級交互
  • 開發效率:Java 開發者熟悉的 SWT/JFace API,屏蔽 JS/CSS/HTML 細節
  • 擴展性:支持自定義組件(Compound/Owner-drawn)無縫集成
  • 工程質量:Eclipse 生態成熟設計模式與工具鏈
  • 單一代碼庫:同源碼構建 Web (RAP) 與桌面 (RCP) 雙形態

RAP 與 RCP 架構對比

RAP vs RCP 架構對比

RAP 運行於服務器,通過 Qooxdoo JS 框架在瀏覽器渲染 SWT 組件子集;RCP 直接在客戶端 JVM 運行。共享 Workbench 擴展點、JFace 數據綁定等核心編程模型。

關鍵實踐:自定義組件開發

組件類型

  • Compound (復合):組合現有 RAP 組件,如時間選擇器
  • Owner-drawn (自繪):基於 Qooxdoo/JS/CSS 深度定制,如日曆、工具欄、Outlook 風格導航

自繪組件四步驟

  1. 服務端 Java 實現 (SWT API 子集)
  2. 客戶端 JS 實現 (Qooxdoo)
  3. Java 適配器橋接雙端 (协议編解碼、事件同步)
  4. 通過 org.eclipse.rap.ui.resources 擴展點註冊 JS 資源

典型自研組件

  • 日曆組件 (~20,000 行 JS):迷你月視圖、任務拖拽、多視圖切換
  • Office 風格工具欄:按鈕組、下拉菜單、狀態反饋
  • 可折疊導航面板:模仿 Outlook 邊欄交互

自定義日曆與工具欄截圖

質量保障:雙端單元測試體系

端框架重點
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!");
}

測試痛點與對策

  • 異步 UI 測試難:缺乏成熟工具支持非頁面刷新的 Ajax 交互錄製回放
  • 集成測試慢:引入 Mockito/EasyMock (Java) 與 JSMock/Mock4JS (JS) 隔離外部依賴
  • 未來目標:研究自動化用戶交互模擬(點擊、輸入)

踩坑記與經驗教訓

性能與資源佔用

  • 初期 IE 性能差、資源佔用高,對象池緩解但未根治
  • 寄望 Qooxdoo 優化與 IE8 發布(後證實有效)
  • Firefox/Chrome 表現較好

構建與部署挑戰

  • Equinox 部署於 Tomcat (而非嵌入式) 導致構建腳本複雜
  • Releng-Tools 文檔缺乏、動態腳本生成問題頻出
  • 解決方案:打包含 Equinox+RAP+業務包的單一 WAR,利用 extendedFrameworkExports 參數實現非 OSGi 的 EIM 核心與 RAP 共享 ClassLoader

未來規劃

  • 2009 Q1 正式發布 CAS PIA,目標進入歐洲 SaaS CRM 前 20
  • 2009 年 2 月在匈牙利塞格德大學開設 RAP 課程
  • 期望 RAP 新增「服務端觸發客戶端動作」原生支持(現自研方案)

總結

CAS 以 Eclipse RAP 為核心,構建了兼具桌面體驗與 Web 部署優勢的新一代 CRM 產品。儘管經歷陡峭學習曲線與性能調優,但 Java 開發者熟悉的編程模型、成熟工具鏈、單一代碼庫雙端交付,極大提升了團隊生產力。RAP 在企業級 SaaS 應用中的價值已獲驗證。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved