2011-02-10 35 views
6

Tôi muốn thay thế triển khai BPM tùy chỉnh bằng Activiti hoặc jBPM-5 trong một sản phẩm sử dụng Hibernate (Không có JPA) với Spring để triển khai lớp liên tục. Thật không may, cả Activiti và jBPM5 đều yêu cầu JPA (theo tài liệu của họ) và không thể di chuyển tất cả việc triển khai Hibernate hiện có sang JPA trong sản phẩm.Tệp .hbm có thể được sử dụng trong ứng dụng JPA với Hibernate là nhà cung cấp JPA không?

  1. Có cách nào để định cấu hình JPA 2.0 (nhà cung cấp JPA Hibernate) với Spring 3 mà không di chuyển triển khai Hibernate sang JPA (tức là giữ lại tệp .hbm) không?

Lưu ý: Tôi biết rằng ứng dụng sẽ không tuân thủ JPA và nhà cung cấp JPA khác không thể sử dụng được.

  1. Nếu có cách nào, giả sử Trình quản lý giao dịch Spring JTA được định cấu hình với cài đặt thích hợp. có thể logic ứng dụng và logic luồng công việc BPM được thực hiện trong một giao dịch mùa xuân không?
+0

Điều này không trả lời chính xác câu hỏi của bạn, nhưng gần đây tôi có tình huống tương tự và kết thúc bằng cách sử dụng HibernateTools để chuyển đổi các tệp * .hbm.xml của tôi sang các hạt được chú thích JPA. Nó khá là không đau và đã cứu tôi nỗ lực vượt qua những gì bạn đang làm bây giờ. Đây có phải là một lựa chọn cho bạn không? – Fil

+0

Cảm ơn bạn @Filip Zalewski. Sản phẩm lớn về kích thước của nó. Chỉ có lý do, tôi muốn thay đổi thành JPA là chạy BPM và ứng dụng trong cùng một giao dịch. Tôi không nghĩ, Di cư là lựa chọn đúng đắn. – Sujee

+0

Dường như có thể: http://bill.burkecentral.com/2007/07/06/co-existence-with-hibernate-jpa-and-ejb3/ http://docs.jboss.org/hibernate/entitymanager/ 3.6/tham chiếu/vi/html/configuration.html –

Trả lời

1

Về giao dịch, xem Activiti Spring Transaction Tài liệu. Nếu bạn không thể cổng ứng dụng của bạn để sử dụng JPA, một tùy chọn khác là lớp một mặt tiền trên miền Hibernate của bạn. Activiti cho phép bạn gọi các phương thức trên bean được quản lý vào mùa xuân, vì vậy bạn có thể tạo một mặt tiền hoặc sử dụng một lớp dịch vụ hiện có. Hãy xem các ứng dụng mẫu đi kèm với Hoạt động để xem cách hoạt động của tích hợp mùa xuân.

0

jBPM w/JPA có thể được tích hợp với các ứng dụng không phải JPA cũ sử dụng Spring. Các tương tác với jBPM sử dụng JPA, nhưng ứng dụng của bạn sẽ sử dụng chế độ ngủ đông. Hạn chế duy nhất là bạn phải đối phó với 2 giao dịch khác nhau, nhưng bất kỳ vấn đề chủ yếu có thể được giảm nhẹ.

enter image description here

  1. Bắt đầu giao dịch Hibernate của bạn đầu tiên và thực hiện bất kỳ logic kinh doanh bạn muốn

  2. Bắt đầu giao dịch jBPM của bạn bằng cách gọi các API jBPM để bắt đầu một quá trình, hoặc gửi một sự kiện vv

  3. Bất kỳ triển khai WorkItemHandler nào cần tham gia giao dịch bên ngoài bằng cách sử dụng nhà máy phiên API

  4. Hibernate flush() cần phải được gọi là ở phần cuối của mỗi thực WorkItemHandler để kích hoạt hầu hết các trường hợp ngoại lệ được tạo ra bởi mã số kinh doanh

  5. Các WorkItemHandler nên bắt bất kỳ ngoại lệ tạo ra bởi các mã số kinh doanh và rethrow nó sao cho Giao dịch JBPM cũng không thành công

Các vấn đề liên quan