ヘッダーをスキップ
Oracle Fusion Middleware Oracle Business Rulesユーザーズ・ガイド
11g リリース1(11.1.1)
B55917-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

8 ビジネス・ルールのテスト

Oracle Business Rules関数を作成して、Rules Designerでルールおよびデシジョン表をテストできます。 SOAアプリケーション、またはデシジョン関数を持つOracle Business RulesにWebサービスを使用してアクセスするアプリケーションでは、Oracle Enterprise Manager Fusion Middleware Controlコンソールでテスト関数を使用することによって、実行時にルールをテストできます。

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

8.1 デザインタイムでのOracle Business Rulesのテスト

テスト関数を定義すると、アプリケーションをデプロイすることなく実行できます。 これにより、実行時にデシジョン関数をコールして、データ・モデル要素およびルールセットをテストできます。

8.1.1 Rules Designerでテスト関数を使用してルールをテストする方法

Rules Designer内でOracle Business Rules関数を使用してルールをテストできます。 「テスト関数」アイコンは、パラメータを使用せずにbooleanを戻す関数に対してのみアクティブです。 関数本体で、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数が戻したファクトが予期したとおりであるかどうかを検証するために出力をチェックします。

ロギングを有効化するには、RL.watch.all()をコールします。 関数を実行するには、「関数」表で、「テスト関数」アイコンをクリックします。

関数の詳細は、第2.5項「Oracle Business Rules関数の使用」を参照してください。

テスト関数を使用してルールをテストする手順は、次のとおりです。

  1. ディクショナリが有効であることを確認します。

    ディクショナリ検証の詳細は、第4.4.4項「ディクショナリの検証方法」を参照してください。

  2. Rules Designerで、「関数」ナビゲーション・タブを選択します。

  3. 「関数」領域で「作成」をクリックします。

  4. 「名前」フィールドに関数名を入力するか、デフォルト名を使用します。

  5. 「戻り型」のドロップダウン・リストから戻り型を選択します。

    テスト関数の場合は、「boolean」を選択します。

  6. 「引数」表で、引数がないことを確認します。テスト関数の場合、引数は指定できません。

  7. 「本体」領域に、テスト関数本体を入力します。

    関数本体では、assign newを使用してデシジョン関数をコールし、そのデシジョン関数をコールして戻り値を取得できます。 したがって、デシジョン関数をテストするには、入力データを作成してデシジョン関数をコールします。

    例8-1に、printをコールする単純なテスト関数を示します。 図8-1に、テスト関数の定義を示します。 デシジョン関数をコールするテスト関数の追加の詳細は、第8.1.3項「Oracle Business Rules関数によるデシジョン関数のテスト方法」を参照してください。

    例8-1 テスト関数本体

    call print("Hello World")
    return true
    

    図8-1 テスト関数の追加

    図8-1の説明が続きます
    「図8-1 テスト関数の追加」の説明

  8. 「関数」表で、関数を選択し、「テスト関数」アイコンをクリックします。

    図8-2に示すように、出力が「関数テスト結果」ダイアログに表示されます。

    図8-2 「関数テスト結果」ダイアログ

    図8-2の説明が続きます
    「図8-2 「関数テスト結果」ダイアログ」の説明

  9. 「OK」をクリックして「テスト結果」ダイアログを閉じます。

8.1.2 Oracle Business Rules関数によるテストに関する必須情報

「テスト関数」アイコンは、ディクショナリが有効な場合(ビジネス・ルール検証ログが空の場合)にのみアクティブです。 関数に関連付けられているディクショナリに検証警告が含まれている場合は、「テスト関数」アイコンがグレー表示されます。

8.1.3 Oracle Business Rules関数によるデシジョン関数のテスト方法

デシジョン関数を作成し、そのデシジョン関数をOracle Business Rules関数を使用してRules Designerからコールすることで、ルールセットをテストできます。 Oracle Business Rules関数本体で、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します。 詳細は、第6.1項「デシジョン関数の概要」および第2.5項「Oracle Business Rules関数の使用」を参照してください。

Oracle Business Rules関数を使用してデシジョン関数をテストする手順は、次のとおりです。

  1. ディクショナリが有効であることを確認します。

    ディクショナリ検証の詳細は、第4.4.4項「ディクショナリの検証方法」を参照してください。

  2. Rules Designerで、「関数」ナビゲーション・タブを選択します。

  3. 「関数」領域で「作成」アイコンをクリックします。

  4. 「名前」フィールドに関数名を入力するか、デフォルト名を使用します。

  5. 「戻り型」のドロップダウン・リストから戻り型を選択します。

    テスト関数の場合は、「boolean」を選択します。

  6. 「引数」表で、引数がないことを確認します。テスト関数の場合、引数は指定できません。

  7. 「本体」領域に、テスト関数本体を入力します。

    テスト関数本体で、assign newを使用してデシジョン関数をコールし、そのデシジョン関数をコールして戻り値を取得できます(テスト関数本体では、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します)。

    デシジョン関数のコールによって、Listが戻されます。 つまり、テスト関数でデシジョン関数をテストする手順は、次のとおりです。

    • 必要に応じて、デシジョン関数の入力引数用の入力データを作成します。

    • テスト関数で作成した引数を使用してデシジョン関数をコールします。

    • 結果をList形式にします。たとえば、次のようになります。

      assign new List resultsList = DecisionFunction_1(testScore)
      

    図8-3に、デシジョン関数をコールするテスト関数を示します。

    図8-3 Listを戻すデシジョン関数をコールするテスト関数

    図8-3の説明が続きます
    「図8-3 Listを戻すデシジョン関数をコールするテスト関数」の説明

  8. 関数を選択し、「テスト関数」アイコンをクリックします。

    関数が実行されます。 図8-4に示すように、出力が「関数テスト結果」ダイアログに表示されます。

    図8-4 等級テストに関する「関数テスト結果」

    図8-4の説明が続きます
    「図8-4等級テストに関する「関数テスト結果」」の説明

  9. 「OK」をクリックして「テスト結果」ダイアログを閉じます。

8.1.4 デシジョン関数のテストに関する必須情報

Rules Designer内でOracle Business Rules関数を使用してデシジョン関数をテストできます。テスト関数を使用する際の注意事項は、次のとおりです。

  • テストOracle Business Rules関数に関連付けられているディクショナリに検証警告が含まれている場合は、「テスト関数」アイコンがグレー表示されます。 「テスト関数」アイコンが表示されるのは、ディクショナリが警告なしに検証された場合のみです。

  • ロギングを有効化するために、RL.watch.all()をコールできます。 RL Language関数の詳細は、『Oracle Fusion Middleware Oracle Business Rulesランゲージ・リファレンス・ガイド』を参照してください。 このマニュアルでは、RL.watch.all()はRL Language関数watchAll()の別名です。

  • 図8-3に示した例の代替策として、例8-2に示す関数本体を入力できます。 この関数を実行すると、RL.watch.all()の出力が表示されます。 図8-5に示すように、等級が範囲Bの対象の場合は、ダイアログに「テストに合格しました。」と表示されます。 図8-6に示すように、アサートされた等級が範囲Bの対象外の場合は、ダイアログに「テストに失敗しました。」と表示されます。

    例8-2 trueまたはfalseの戻り値を使用する関数本体

    call RL.watch.all()
    assign new TestScore testScore = new TestScore()
    modify (testScore, name: "Bill Reynolds", testName: "Math Test", testScore: 81)
    assign new TestGrade testGrade = (TestGrade)DecisionFunction_1(testScore).get(0)
    return testGrade.grade == Grade.B
    

    testScoreの値が81の場合、この関数は図8-5に示すように「テストに合格しました。」を戻します。 testScoreの値が91の場合、この関数は図8-6に示すように「テストに失敗しました。」を戻します。

    図8-5 テストに合格したテスト関数の出力

    図8-5の説明が続きます
    「図8-5 テストに合格したテスト関数の出力」の説明

    図8-6 テストに失敗したテスト関数の出力

    図8-6の説明が続きます
    「図8-6 テストに失敗したテスト関数の出力」の説明

8.2 実行時のOracle Business Rulesのテスト

デシジョン・サービスが組み込まれたOracle Business Rulesを使用するSOAアプリケーションでは、Oracle Enterprise Manager Fusion Middleware Controlコンソールのテスト関数を使用して実行時にルールをテストできます。

テスト関数の使用の詳細は、『Oracle Fusion Middleware Oracle SOA Suite管理者ガイド』を参照してください。