プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発
12c (12.2.1.2.0)
E82771-02
目次へ移動
目次

前
次

54 動的ビジネス・プロセスの作成

この章では、2レイヤーのビジネス・プロセス管理(BPM)の使用方法について説明します。2レイヤーのBPMを使用すると、動的ビジネス・プロセスを作成できます。動的ビジネス・プロセスの実行は、設計時に事前定義された要素ではなく、そのビジネス・プロセスが実行されるコンテキストの要素に基づいています。このような要素の例には、顧客のタイプ、地理的位置、チャネルなどがあります。

具体的に説明するために、様々なプロセスを使用してマルチチャネル・バンキングを実行するアプリケーションを使用していると仮定します。このシナリオでは、各プロセスの実行は、特定のプロセス・インスタンスごとのチャネルに基づいています。

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

54.1 2レイヤーのビジネス・プロセス管理の概要

2レイヤーのBPMを使用すると、レイヤー・アプローチを使用してビジネス・プロセスをモデル化できます。このモデルの第1レベルは、ビジネス・プロセスに関する抽象的な仕様です。第1レベルのプロセスのアクティビティは、第2レベルのプロセスまたはサービスに作業を委任します。図54-1に、この動作を示します。

図54-1では、ビジネス・プロセスのPhase Iアクティビティは、その作業を対応するレイヤーIIのプロセスのタスク1.1、タスク1.2またはタスク1.3のいずれかに委任できます。

2レイヤーのBPM機能を使用すると、重要な要素(つまり、phaseアクティビティ)を宣言的に作成できます。

Oracle Business Rulesのデザインタイムおよびランタイム機能を使用すると、ビジネス・プロセスを再デプロイせずに、さらにチャネルを動的に追加できます。実行時デザインタイムでは、実行時に複数のルール(複数の列)を動的ルーティング・デシジョン表に追加できます。実行中にビジネス・プロセス・インスタンスはそれらの新規ルールを考慮し、最終的にリクエストを別のチャネルにルーティングします。

また、Oracle Business Rulesの実行時デザインタイム機能を使用すると、phaseアクティビティから起動されるサービスのエンドポイント参照を別のサービスを指し示すように変更できます。

注意:

Oracle SOAコンポーザとOracle Business Rules SDKを通じて、Oracle Business Rulesの実行時デザインタイム機能を使用できます。

Oracle SOAコンポーザとOracle Business Rules SDKの使用の詳細は、次を参照してください。

  • Oracle Business Process Managementを使用したビジネス・ルールの設計

  • Oracle Business Rules Java APIリファレンス

54.2 phaseアクティビティの作成

2レイヤーのBPMでは、フェーズはBPELプロセスのレベル1アクティビティです。これは、既存の上位レベルのOracle Business Rulesおよびヒューマン・タスクBPELアクティビティを補完します。

Oracle BPELデザイナで、phaseアクティビティをプロセスに宣言的に追加するには、「コンポーネント」ウィンドウの「Oracle Extensions」セクションからこのアクティビティをプロセス・モデルにドラッグ・アンド・ドロップします。図54-2に詳細を示します。

図54-2 Oracle BPELデザイナでのphaseアクティビティ

図54-2の説明が続きます
「図54-2 Oracle BPELデザイナでのphaseアクティビティ」の説明

注意:

参照WSDL(レイヤー2またはコールした参照)には、自動作成されるフェーズ参照と同じ抽象的なWSDLが必要です。

54.2.1 phaseアクティビティの作成方法

コンポジット・アプリケーションのphaseアクティビティは、必要な変数を作成した後に作成します。

phaseアクティビティを作成する手順は、次のとおりです。

  1. phaseアクティビティをダブルクリックします。
  2. 「名前」フィールドに、値を入力します。
  3. 「入力変数および出力変数」セクションで、入出力変数を追加する「追加」アイコンを選択します。
  4. 「入力変数の追加」を選択します。変数を選択するためのダイアログが表示されます。
  5. 既存の変数を選択するか、「変数」フォルダを選択し、「追加」アイコンをクリックして、新規変数を作成します。
  6. 「OK」をクリックします。変数が移入された状態の「Phase」ダイアログが表示されます。
  7. 「入力変数および出力変数」アイコンから「出力変数の追加」を選択します。変数を選択するためのダイアログが表示されます。既存の変数を選択するか、「変数」フォルダを選択し、「追加」アイコンをクリックして新規変数を作成します。
  8. 「OK」をクリックします。入出力変数名が移入された状態の「Phase」ダイアログが表示されます。「OK」をクリックします。Oracle BPELデザイナにBPELプロセスが表示されます。
  9. 「ファイル」メニューから「すべて保存」を選択します。
  10. BPELプロセスを閉じます。
  11. Oracle BPELデザイナの上の「composite_name」リンク(composite.xmlファイル)をクリックします。SOAコンポジット・エディタが表示されます。

54.2.2 phaseアクティビティ作成時の処理内容

phaseアクティビティを作成すると、表54-1に記載されているアーティファクトが作成されます。

表54-1 phaseアクティビティとともに作成されるアーティファクト

アーティファクト 説明

BPELスコープ

phaseアクティビティをドロップしたBPELプロセス内の場所に、新しいBPELスコープが作成されてBPELプロセスに挿入されます。スコープには、phaseアクティビティの名前が指定されます。スコープ内にはいくつかの標準BPELアクティビティが作成されます。最も重要なアクティビティは、Oracle MediatorへのinvokeアクティビティとOracle Mediatorからのreceiveアクティビティです。

Oracle Mediatorコンポーネント

BPELプロセス・サービス・コンポーネントのSOAコンポジット・アプリケーションとともに、新しいOracle Mediatorサービス・コンポーネントが作成されます。Oracle Mediatorサービス・コンポーネントは、BPELコンポーネントのphaseアクティビティに接続されます。このBPELコンポーネントは、プロセス・モデル内でphaseアクティビティがドロップされたレベル1のBPELプロセスを構成するコンポーネントです。Oracle Mediatorサービス・コンポーネントの入出力は、phaseアクティビティの入出力によって定義されます。

Oracle Mediatorプラン(Oracle Mediatorサービス・コンポーネントの処理命令)は非常に単純です。処理命令の作成はOracle Business Rulesサービス・コンポーネントに委任されます。

Oracle Business Rulesコンポーネント

BPELプロセス・サービス・コンポーネントのSOAコンポジット・アプリケーション内に、新しいOracle Business Rulesサービス・コンポーネントが作成され、BPELプロセス・サービス・コンポーネントのphaseアクティビティに関連付けられているOracle Mediatorコンポーネントに接続されます。Oracle Business Rulesサービス・コンポーネントには、ルール・ディクショナリが含まれています。ルール・ディクショナリには、ファクト・タイプ、ルールセット、ルール、デシジョン表や同様のアーティファクトなど、Oracle Business Rulesエンジン・アーティファクトのメタデータが含まれています。ルール・ディクショナリは、Oracle Business Rulesサービス・コンポーネントの作成過程で、次のデータを使用して事前に初期化されます。

  • ファクト・タイプ・モデル: ルールのモデル化に使用するデータ・モデル。ルール・ディクショナリには、phaseアクティビティの入力に対応するファクト・タイプ・モデルと、Oracle Mediatorサービス・コンポーネントとOracle Business Rulesサービス・コンポーネント間の規定の一部として必要な固定データ・モデルの一部が移入されます。

  • ルールセット: ルールのコンテナであり、ルールのグループ化メカニズムとして使用されます。ルールセットはサービスとして公開できます。1つのルールセットがルール・ディクショナリ内に作成されます。

  • デシジョン表: Oracle Business Rulesから見ると、デシジョン表は、ルールの条件およびアクション部分のファクト・タイプ・モデルの要素が同じルールの集合であるため、それらのルールは表形式で表示できます。新規デシジョン表はルールセット内に作成されます。

  • デシジョン・サービス: ルールセットをOracle Business Rulesサービス・コンポーネントのサービスとして公開するために作成されます。Oracle Mediatorでは、サービス・インタフェースを使用してデシジョン表を評価します。

54.2.3 phaseアクティビティを作成した場合の実行時の処理内容

phaseアクティビティの入力は、実行時に動的ルーティング・デシジョン表を評価するために使用されます。評価は、phaseアクティビティの特定のデシジョン・コンポーネントによって実行されます。この評価の結果が、Oracle Mediatorに対する指示になります。Oracle Mediatorは、デシジョン・コンポーネントからの指示に基づいて、リクエストをサービスにルーティングします。

注意:

現在のリリースでは、非同期のphaseアクティビティがサポートされています。同期または一方向のphaseアクティビティはサポートされていません。

54.2.4 phaseアクティビティの作成に関する必知事項

phaseアクティビティを作成する場合は、次の事項について理解している必要があります。

  • デシジョン・サービスで構成または作成する必要のあるルール。これは、ルールの評価に使用するペイロードのデータに基づきます。

  • デシジョン・サービスで作成した各ルールがtrueと評価されたときに起動する必要のある、対応するエンドポイントURLを認識している必要があります。Oracle Mediatorでは、このエンドポイントURLを使用してレイヤー2のサービスを起動します。

    注意:

    ペイロードに対するトランスフォーメーション、割当てまたは検証は実行できません。

54.3 動的ルーティング・デシジョン表の作成

動的ルーティング・デシジョン表は、Oracle Business Rulesによって評価されるデシジョン表です。phaseアクティビティの入力データに対して条件が評価されます。この評価の結果が、Oracle Mediatorに対するルーティング指示になります。

54.3.1 動的ルーティング・デシジョン表の作成方法

phaseアクティビティを作成すると、ウィザードによってOracle JDeveloperのOracle Business Rulesデザイナが起動され、動的ルーティング・デシジョン表を編集できるようになります。図54-3に、Oracle Business Rulesデザイナ内のデシジョン表のサンプルを示します。

図54-3 デシジョン表のサンプル

図54-3の説明が続きます
「図54-3 デシジョン表のサンプル」の説明

レベル2のプロセス・フェーズのモデリング中には情報を空にしておき、Oracle SOAコンポーザを使用してレベル1のプロセスをデプロイした後で完了できます。

動的ルーティング・デシジョン表を作成および編集すると、図54-4に示すように、新規のレベル1のphaseアクティビティがOracle JDeveloperのBPELプロセスに表示されます。

図54-4 Oracle JDeveloperでの完成したレベル1フェーズ

図54-4の説明が続きます
「図54-4 Oracle JDeveloperでの完成したレベル1フェーズ」の説明

54.3.2 動的ルーティング・デシジョン表作成時の処理内容

動的ルーティング・デシジョン表を作成することで、着信ペイロードに適用される条件を動的に評価し、対応するルーティング・ルールをOracle Mediatorに提供するデシジョン・サービスが構成されます。その後、Oracle Mediatorは、これらのルールをレイヤー2のサービスの起動時に実行します。

動的ルーティング・デシジョン表を作成すると、具体的には、設計時に次の処理が行われます。

  • 新しいデシジョン・コンポーネントがプロジェクトのコンポジットに作成されます。

  • 新しいルール・ディクショナリがコンポジット・プロジェクトのディレクトリに作成されます。

  • ルール・ディクショナリに、フェーズ入力のデータ・モデルを反映するデータ・モデルが移入されます。つまり、フェーズ入力のXMLスキーマがルール・ディクショナリにインポートされます。