21.2.4. BusinessActivityManager
com.arjuna.mw.wst11.BusinessActivityManager は Web サービスが通常使用するクラスです。Web サービスが基礎となるビジネスアクティビティサービス実装とやりとりする方法を定義します。
BusinessActivityManager
は特定のアクティビティを表していません。代わりに、スレッドごとの暗黙的なアクティビティへのアクセスを提供しています。
メソッド
currentTransaction
- 現在のビジネスアクティビティに対して
TxContext
を返します。TxContext
がない場合は、NULL
を返します。戻り値を使用して、複数のスレッドが同じビジネスアクティビティのスコープ内で実行可能なようにできます。currenTransaction
メソッドを呼び出すことで、そのアクティビティから現在のスレッドの関連付けの解除はしません。 suspend
- すべての現在のビジネスアクティビティからスレッドの関連付けを解除します。これにより特定のアクティビティと関連付けられていない作業を実行できます。
suspend
メソッドはTxContext
インスタンスを返します。これはトランザクションのハンドルです。これでスレッドはどのアクティビティとも関連付けられていません。 resume
TxContext
を使用して、ビジネスアクティビティとのスレッドの関連付けまたは再度の関連付けを行います。スレッドの関連付けまたは再度の関連付けの前に、現在関連付けられているすべてのビジネスアクティビティからの関連付けが解除されます。TxContext
がNULL
の場合、suspend
メソッドが呼び出されたかのように、スレッドはすべてのビジネスアクティビティとの関連付けが解除されます。パラメータ
- txContext
suspend
により返される TxContext インスタンスであり、再開されるトランザクションを特定します。
例外
UnknownTransactionException
TxContext
が参照するビジネスアクティビティは呼び出しスレッドのスコープでは無効です。
enlistForBusinessAgreementWithParticipantCompletion
- 現在のビジネスアクティビティで特定のパーティシパントを登録します。これにより
BusinessAgreementWithParticipantCompletion
プロトコルに参加することになります。パーティシパントの一意識別子も必要です。戻り値は BAParticipantManager のインスタンスであり、これを使用してパーティシパントの状態における変更をコーディネータに伝えます。特にパーティシパントは Participant Completion プロトコルに登録されているため、このアクティビティで行うことを期待するすべての作業を完了し、かつすべての変更を永久的にすると、この返されたインスタンスの completed メソッドを呼び出すことが期待されます。代わりに、パーティシパントが補正アクションを実行する必要がなく、例えば他のパーティシパントが失敗すると、返された BAParticipantManager インスタンスの exit メソッドを呼び出すことでアクティビティを終了できます。パラメータ
- participant
- インターフェース
BusinessAgreementWithParticipantCompletionParticipant
の実装です。対応するコーディネータメッセージを受信すると、そのclose
、cancel
、compensate
メソッドが呼び出されます。 - id
- パーティシパントの一意識別子です。この文字列値は登録されている各パーティシパントにより異なるはずです。また、所定の識別子は、同じコンテナにデプロイされた他の Web サービスではなく、登録している Web サービスにパーティシパントが属していると決定できるはずです。
例外
- UnknownTransactionException
- 呼び出しスレッドに関連付けられているトランザクションはありません。
- WrongStateException
- トランザクションは新しいパーティシパントが登録できる状態にありません。例えば、終了しているときなどです。
enlistForBusinessAgreementWithCoordinatorCompletion
- 現在のアクティビティで特定のパーティシパントを登録します。これにより
BusinessAgreementWithCoordinatorCompletion
プロトコルに参加することになります。パーティシパントの一意識別子も必要です。戻り値はBAParticipantManager
のインスタンスであり、これを使用してパーティシパントの状態における変更をコーディネータに伝えます。この場合、この返されたインスタンスのcompleted
メソッドの呼び出しはエラーです。Coordinator Completion プロトコルにより、パーティシパントはそれがすべての変更を永久的にする前にcompleted
メソッドが呼び出されるまで待つよう要求されます。別の方法として、加える変更がないとパーティシパントが決定すると、返されたBAParticipantManager
インスタンスのexit
メソッドを呼び出すことでアクティビティを終了できます。パラメータ
- participant
- インターフェース BusinessAgreementWithCoordinatorCompletionParticipant の実装です。対応するコーディネータメッセージを受信すると、その completed、close、cancel、compensate メソッドが呼び出されます。
- id
- パーティシパントの一意識別子です。この文字列値は登録されている各パーティシパントにより異なるはずです。また、所定の識別子は、同じコンテナにデプロイされた他の Web サービスではなく、登録している Web サービスにパーティシパントが属していると決定できるはずです。
例外
- >UnknownTransactionException
- 呼び出しスレッドに関連付けられているトランザクションはありません。
- WrongStateException
- トランザクションは新しいパーティシパントが登録できる状態にありません。例えば、終了しているときなどです。