C デプロイメント・ディスクリプタのプロパティ

この付録では、Oracle WebLogic Server、Oracle Enterprise Manager Fusion Middleware Controlまたはその両方で実行時に使用されるBPELプロセス・サービス・コンポーネントのデプロイメント・ディスクリプタ構成およびパートナ・リンク・プロパティを定義する方法について説明します。

この付録の内容は次のとおりです。

デプロイメント・ディスクリプタのプロパティの詳細は、『パフォーマンスのチューニング』「Oracle BPEL Process Managerのパフォーマンス・チューニング」を参照してください。

C.1 デプロイメント・ディスクリプタのプロパティの概要

デプロイメント・ディスクリプタは、Oracle WebLogic ServerまたはOracle Enterprise Manager Fusion Middleware Control、あるいはその両方によって実行時に使用されるBPELプロセス・サービス・コンポーネントのプロパティです。プロパティには、次の2種類があります。

  • 構成

  • パートナ・リンク・バインディング

表C-1は、構成のデプロイメント・ディスクリプタのプロパティを示しています。

構成プロパティを定義する場合は、プロパティ名にbpel.configの接頭辞を追加する必要があります。たとえば、inMemoryOptimizationプロパティは、bpel.config.inMemoryOptimizationとして定義する必要があります。Oracle JDeveloperのプロパティ・インスペクタでプロパティを定義する方法の詳細は、「プロパティ・インスペクタでデプロイメント・ディスクリプタのプロパティを定義する方法」を参照してください。

表C-1 configurationsデプロイメント・ディスクリプタのプロパティ

プロパティ名 説明

completionPersistPolicy

このプロパティは、インスタンス・データの保存方法を構成します。BPELサービス・コンポーネント・レベルでのみ設定できます。使用可能な値は、次のとおりです。

  • on(デフォルト): 終了したインスタンスは通常どおり保存されます。

  • deferred: 終了したインスタンスは保存されますが、異なるスレッドを使用して別のトランザクションで保存されます。

  • faulted: 失敗したインスタンスのみ保存されます。

    ノート: 未処理のフォルトが発生した場合は、これらのフラグに関係なく、インスタンスの監査情報がCUBE_INSTANCE表に保持されます。

  • off: このプロセスのインスタンスは保存されません。

disableAsserts

このプロパティをtrueに設定すると、BPELプロジェクトでアサーションが無効になります。

globalTxMaxRetry

非同期BPELプロセスでアウトバウンド・アダプタを使用している場合は、リモート・フォルトに対する最大再試行回数を指定します。

globalTxRetryInterval

非同期BPELプロセスでアウトバウンド・アダプタを使用している場合は、リモート・フォルトに対する再試行間隔(ミリ秒単位)を指定します。

inMemoryOptimization

デフォルト値はfalseです。このプロパティをtrueに設定できるのは、デハイドレーション・ポイントがない場合のみです。wait、receive、onMessage、onAlarmなどのアクティビティでは、プロセス内にデハイドレーション・ポイントが作成されます。このプロパティをtrueに設定すると、to-spec問合せ時にこのプロセスのインスタンスに対するインメモリー最適化が試行されます。

keepGlobalVariables

インスタンスの完了後に、サーバーがグローバル変数値をインスタンス・ストアに保持できるかどうかを指定します。

  • false (デフォルト): インスタンスが完了すると、グローバル変数値は削除されます。

  • true: グローバル変数値は削除されません。

oneWayDeliveryPolicy

このプロパティは、プロセスの永続ポリシーを配信レイヤーに設定します。有効な値は、次のとおりです。

  • async.persist: メッセージはデータベースに保存されます。この設定の場合、信頼性は確保されますが、データベースのパフォーマンスに多少の影響が出ます。システムの全体的なパフォーマンスに影響が出ることもあります。

  • async.cache: 受信した配信メッセージはインメモリー・キャッシュにのみ保存されます。信頼性よりパフォーマンスを優先する場合は、この設定を検討してください。async.cacheに設定すると、一方向メッセージの到着頻度が配信の頻度よりかなり高い場合や、サーバー障害が発生した場合には、メッセージが失われる可能性があります。また、システムが過負荷の状態になり(メッセージがスケジュール済キューにたまり)、メモリー不足エラーが発生することもあります。各自のユースケース・シナリオを検討し、この設定が適切かどうかを判断してください。

    高可用性環境でoneWayDeliveryPolicyasync.cacheに設定すると、サーバー・クラッシュ発生時に実行途中の起動メッセージおよびコールバック・メッセージが失われたり、重複したりすることがあります。async.cacheに対しては、サーバーのフェイルオーバーはサポートされていません。

  • sync: 同じスレッドで直接起動が発生します。呼出しキューのメッセージのスケジューリングはバイパスされ、BPELインスタンスが同期的に呼び出されます。この設定は、データベースのパフォーマンスに影響を与えることがあります。

BPELプロセスを作成するときのこのプロパティの設定の詳細は、「BPELプロセス・サービス・コンポーネントの追加方法」を参照してください。

reenableAggregationOnComplete

このプロパティは、メッセージをルーティングするために作成して使用するインスタンス数を制御します。有効な値は、次のとおりです。

  • true: 同じ相関のメッセージを処理する新規インスタンスが作成されます。

  • false: メッセージを処理するインスタンスが1つのみ作成されます。

詳細は、「同じインスタンスへのメッセージのルーティング」を参照してください。

sensorActionLocation

センサー・アクションXMLファイルの場所。センサー・アクションXMLファイルには、イベントに対するアクション・ルールが構成されています。

sensorLocation

センサーXMLファイルの場所。センサーXMLファイルは、イベントが記録されるセンサーのリストを定義したものです。

transaction

このプロパティは、コールを開始するBPELインスタンスのトランザクション動作を構成します。

  • requiresNew: 新規トランザクションが実行のために作成され、既存のトランザクションがある場合はそのトランザクションが一時停止されます。この動作は、リクエスト/レスポンス(開始)環境、およびbpel.config.oneWayDeliveryPolicysyncに設定されている一方向開始環境の両方に適用されます。

  • required: リクエスト/レスポンス(開始)環境では、この設定によって、トランザクションがある場合はコール元トランザクションが結合され、トランザクションがない場合は新規トランザクションが作成されます。bpel.config.oneWayDeliveryPolicysyncに設定されている一方向開始環境では、起動メッセージは、同じトランザクションの同一スレッドを使用して処理されます。

  • notSupported: トランザクションを必要とせずにビジネス・プロセスを実行します。詳細は、「トランザクションなしのビジネス・プロセスの実行」を参照してください。

ノート: このプロパティは、中間プロセスのreceiveアクティビティには適用されません。この場合は、別のトランザクションの別のスレッドを使用してメッセージが処理されます。これは、相関が必要であり、常に非同期で処理されるためです。

BPELプロセスを作成するときのこのプロパティの設定の詳細は、「BPELプロセス・サービス・コンポーネントの追加方法」を参照してください。

表C-2は、パートナ・リンク・バインディングのデプロイメント・ディスクリプタのプロパティを示しています。

パートナ・リンク・バインディング・プロパティを定義する場合は、プロパティ名にbpel.partnerLink.partner_link_nameの接頭辞を追加する必要があります。たとえば、nonBlockingInvokeプロパティは、bpel.partnerLink.partner_link_name.nonBlockingInvokeとして定義する必要があります。Oracle JDeveloperのプロパティ・インスペクタでプロパティを定義する方法の詳細は、「プロパティ・インスペクタでデプロイメント・ディスクリプタのプロパティを定義する方法」を参照してください。

表C-2 partnerLinkBindingデプロイメント・ディスクリプタのプロパティ

プロパティ名 説明

idempotent

idempotentアクティビティとは、再試行可能なアクティビティ(assignアクティビティやinvokeアクティビティなど)です。非冪等アクティビティの後にインスタンスが保存されます。このプロパティは、永続プロセスと一時プロセスの両方に適用されます。

  • true (デフォルト): サーバーに障害が発生した場合、再起動後にアクティビティが再度実行されます。これは、アクティビティの呼出し直後にサーバーがデハイドレーションされず、アクティビティの実行が記録されていないためです。

  • false: アクティビティは実行直後にデハイドレーションされ、デハイドレーション・ストアに記録されます。idempotentをfalseに設定すると、フェイルオーバーによる保護は強化されますが、BPELプロセスがデハイドレーション・ストアに頻繁にアクセスする場合はパフォーマンスに影響が出ることがあります。

    idempotentプロパティをfalseに設定した場合のフォルト処理の使用方法の詳細は、「idempotentプロパティとフォルト処理に関する必知事項」を参照してください。

idempotentプロパティの詳細は、「パートナ・リンク操作レベルでの冪等性の管理」を参照してください。

nonBlockingInvoke

デフォルト値はfalseです。trueに設定されている場合は、独立したスレッドを生成して起動を行うため、invokeアクティビティによってインスタンスがブロックされることはありません。

詳細は、「シングル・スレッドでのフローのブランチのパラレル実行に関する必知事項」を参照してください。

validateXML

メッセージの境界の検証を有効化します。trueに設定すると、このパートナ・リンクに対するreceiveアクティビティおよびinvokeアクティビティ中に、XMLメッセージがXMLスキーマと照合して検証されます。XMLメッセージが無効な場合は、bpelx:invalidVariables実行時フォルトがスローされます。これによって、ドメイン・レベルのvalidateXMLプロパティがオーバーライドされます。

C.1.1 プロパティ・インスペクタでデプロイメント・ディスクリプタのプロパティを定義する方法

構成およびパートナ・リンク・バインディングのデプロイメント・ディスクリプタのプロパティと値は、Oracle JDeveloperのプロパティ・インスペクタで定義します。完了すると、composite.xmlファイルのBPELプロセス・サービス・コンポーネント・セクションにプロパティが表示されます。

  1. SOAコンポジット・エディタで、図C-1に示すように、BPELプロセス・サービス・コンポーネントを選択します。

    図C-1 選択されたBPELプロセス・サービス・コンポーネント

    図C-1の説明が続きます
    「図C-1 選択されたBPELプロセス・サービス・コンポーネント」の説明
  2. Oracle JDeveloperの右下の隅にある「プロパティ・インスペクタ」に移動します。
  3. 図C-2に示すように、「プロパティ」セクションで「追加」アイコンをクリックします。

    この例では、BPELプロセスの作成時に「BPELプロセスの作成」ダイアログで「配信」オプションが選択されていたため、oneWayDeliveryPolicyプロパティがすでに定義されています。BPELプロセスを作成するときのこのプロパティの設定の詳細は、「BPELプロセス・サービス・コンポーネントの追加方法」を参照してください。

    図C-2 プロパティ・インスペクタ

    図C-2の説明が続きます
    「図C-2 プロパティ・インスペクタ」の説明

    「プロパティの作成」ダイアログが表示されます。

  4. 「名前」フィールドに、デプロイメント・ディスクリプタのプロパティを入力します。この例では、構成のデプロイメント・ディスクリプタのプロパティoneWayDeliveryPolicyが定義されています。そのため、bpel.configの接頭辞が必要です。構成のデプロイメント・ディスクリプタのプロパティの詳細は、表C-1を参照してください。

    そのかわりにパートナ・リンク・バインディング・プロパティを追加する場合は、bpel.partnerLink.partner_link_nameの接頭辞が必要です(partner_link_nameはパートナ・リンクの名前です。たとえば、LoanService)。パートナ・リンク・バインディングのデプロイメント・ディスクリプタのプロパティの詳細は、表C-2を参照してください。

  5. 「値」フィールドに、このプロパティに適用可能な値(たとえばasync.persist)を入力します。
  6. 「OK」をクリックします。

    プロパティ・インスペクタに、追加されたデプロイメント・ディスクリプタのプロパティが表示されます。

  7. SOAコンポジット・エディタで「ソース」をクリックします。

    次の例に示すように、composite.xmlファイル内にbpel.config接頭辞が付いたoneWayDeliveryPolicy構成プロパティが表示されます。

<component name="LoanApproval" version="2.0">
. . .
  <componentType>
  . . .
  . . .
  <property name="bpel.config.oneWayDeliveryPolicy" type="xs:string"
  many="false">async.persist</property>
	</componentType>
</component>

プロパティ・インスペクタで、かわりにパートナ・リンク・バインディングのデプロイメント・ディスクリプタのプロパティ(たとえば、nonBlockingInvokeパートナ・リンク・バインディング・プロパティ)を定義した場合は、次の例に示すように、composite.xmlファイル内に表示されます。接頭辞が、このタイプのプロパティに必要なbpel.partnerLink.partner_link_nameであることに注目してください。

<component name="myBPELServiceComponent" version="2.0">
 . . .
  <componentType>
  . . .
  . . .
 <property name="bpel.partnerLink.partner_link_name.nonBlockingInvoke">
false</property>
 </componentType>
</component>

C.1.2 BPELプロセス内でのプリファレンス値の取得方法

プロパティの値は、XPath拡張関数ora:getPreference(myPref)を使用してBPELプロセスで読み取ることができます。これによって、bpel.preference.myPrefの値を取得します。

この関数は、単純なassign文の一部として、または条件式の中で、あるいはより複雑なXPath式の一部として使用できます。