2011-02-10 28 views
6

我想用Activiti或jBPM-5替代自定義BPM實現,該產品使用Hibernate(No JPA)和Spring來實現持久層。不幸的是,Activiti和jBPM5都需要JPA(根據他們的文檔),並且不可能將所有現有的Hibernate實現遷移到產品中的JPA。可以使用.hbm文件在JPA應用程序中使用Hibernate作爲JPA提供程序嗎?

  1. 是否有配置JPA 2.0的方式(JPA提供商休眠)和Spring 3不遷移Hibernate實現JPA到(即保留.hbm文件)?

注意:我知道應用程序將不符合JPA並且不能使用另一個JPA提供程序。

  1. 如果有辦法,假設Spring JTA事務管理器配置了正確的設置。 可以在單個Spring事務中執行應用程序邏輯和BPM工作流邏輯嗎?
+0

這並不完全回答你的問題,但我最近有類似的情況,並最終使用HibernateTools將我的* .hbm.xml文件轉換爲JPA註釋的bean。這是相當無痛的,爲我省下了現在正在做的事情。這是你的選擇嗎? – Fil 2011-02-10 22:46:17

回答

1

關於交易,請參閱Activiti Spring Transaction Docs。如果你不能移植你的應用程序來使用JPA,另一個選擇是在你的Hibernate域中建立一個門面。 Activiti允許你在spring管理的bean上調用方法,所以你可以創建一個門面或利用現有的服務層。查看附帶「活動」的示例應用程序,以瞭解彈簧集成如何工作。

0

jBPM w/JPA可以使用Spring與較早的非JPA應用程序集成。與jBPM的交互使用JPA,但您的應用程序會使用休眠。唯一的缺點是你必須處理2個不同的交易,但是任何問題都可以減輕。

enter image description here

  1. 首次啓動Hibernate事務,並執行任何業務邏輯,你想

  2. 通過調用jBPM的API來啓動一個進程,或發送事件等開始你的jBPM交易

  3. 任何WorkItemHandler實現需要使用會話工廠API來加入外部事務

  4. 的Hibernate的flush()需要在每個WorkItemHandler執行結束被稱爲以觸發通過業務代碼生成最異常

  5. 的WorkItemHandler應該抓住由業務代碼生成的任何異常並重新拋出它,以便JBPM交易也失敗

相關問題