6

Hibernate (JPA なし) と Spring を永続層の実装に使用する製品で、カスタム BPM 実装を Activiti または jBPM-5 に置き換えたいと考えています。残念ながら、Activiti と jBPM5 の両方に JPA が必要であり (ドキュメントによると)、製品内の既存の Hibernate 実装をすべて JPA に移行することはできません。

  1. Hibernate の実装を JPA に移行せずに (つまり、.hbm ファイルを保持する)、Spring 3 で JPA 2.0 (JPA プロバイダーは Hibernate) を構成する方法はありますか?

注: アプリケーションが JPA に準拠せず、別の JPA プロバイダーを使用できないことは承知しています。

  1. 方法がある場合は、Spring JTA トランザクション マネージャーが適切な設定で構成されていると仮定します。アプリケーション ロジックと BPM ワークフロー ロジックを単一の Spring トランザクションで実行できますか?
4

2 に答える 2

1

トランザクションについては、Activiti SpringTransactionDocsを参照してください。JPAを使用するようにアプリケーションを移植できない場合、別のオプションは、Hibernateドメイン上にファサードをレイヤー化することです。Activitiを使用すると、SpringマネージドBeanでメソッドを呼び出すことができるため、ファサードを作成したり、既存のサービスレイヤーを利用したりできます。Activityに付属しているサンプルアプリケーションを見て、Spring統合がどのように機能するかを確認してください。

于 2011-02-19T04:33:00.900 に答える
0

jBPM w/JPA は、Spring を使用して古い非 JPA アプリケーションと統合できます。jBPM との対話では JPA を使用しますが、アプリケーションでは休止状態を使用します。唯一の欠点は、2 つの異なるトランザクションを処理する必要があることですが、ほとんどの問題は軽減できます。

ここに画像の説明を入力

  1. 最初に Hibernate トランザクションを開始し、必要なビジネス ロジックを実行します

  2. JBPM API を呼び出してプロセスを開始したり、イベントを送信したりして、JBPM トランザクションを開始します。

  3. WorkItemHandler の実装は、セッション ファクトリ API を使用して外部トランザクションに参加する必要があります。

  4. ビジネス コードによって生成されるほとんどの例外をトリガーするために、各 WorkItemHandler 実行の最後に Hibernate flush() を呼び出す必要があります。

  5. WorkItemHandler は、JBPM トランザクションも失敗するように、ビジネス コードによって生成された例外をキャッチして再スローする必要があります。

于 2016-01-17T17:16:28.957 に答える