Oracle Business Rules関数を作成して、Rules Designerでルールおよびデシジョン表をテストできます。 SOAアプリケーション、またはデシジョン関数を持つOracle Business RulesにWebサービスを使用してアクセスするアプリケーションでは、Oracle Enterprise Manager Fusion Middleware Controlコンソールでテスト関数を使用することによって、実行時にルールをテストできます。
この章の内容は次のとおりです。
テスト関数を定義すると、アプリケーションをデプロイすることなく実行できます。 これにより、実行時にデシジョン関数をコールして、データ・モデル要素およびルールセットをテストできます。
Rules Designer内でOracle Business Rules関数を使用してルールをテストできます。 「テスト関数」アイコンは、パラメータを使用せずにboolean
を戻す関数に対してのみアクティブです。 関数本体で、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数が戻したファクトが予期したとおりであるかどうかを検証するために出力をチェックします。
ロギングを有効化するには、RL.watch.all()
をコールします。 関数を実行するには、「関数」表で、「テスト関数」アイコンをクリックします。
関数の詳細は、第2.5項「Oracle Business Rules関数の使用」を参照してください。
テスト関数を使用してルールをテストする手順は、次のとおりです。
ディクショナリが有効であることを確認します。
ディクショナリ検証の詳細は、第4.4.4項「ディクショナリの検証方法」を参照してください。
Rules Designerで、「関数」ナビゲーション・タブを選択します。
「関数」領域で「作成」をクリックします。
「名前」フィールドに関数名を入力するか、デフォルト名を使用します。
「戻り型」のドロップダウン・リストから戻り型を選択します。
テスト関数の場合は、「boolean
」を選択します。
「引数」表で、引数がないことを確認します。テスト関数の場合、引数は指定できません。
「本体」領域に、テスト関数本体を入力します。
関数本体では、assign new
を使用してデシジョン関数をコールし、そのデシジョン関数をコールして戻り値を取得できます。 したがって、デシジョン関数をテストするには、入力データを作成してデシジョン関数をコールします。
例8-1に、print
をコールする単純なテスト関数を示します。 図8-1に、テスト関数の定義を示します。 デシジョン関数をコールするテスト関数の追加の詳細は、第8.1.3項「Oracle Business Rules関数によるデシジョン関数のテスト方法」を参照してください。
「関数」表で、関数を選択し、「テスト関数」アイコンをクリックします。
図8-2に示すように、出力が「関数テスト結果」ダイアログに表示されます。
「OK」をクリックして「テスト結果」ダイアログを閉じます。
「テスト関数」アイコンは、ディクショナリが有効な場合(ビジネス・ルール検証ログが空の場合)にのみアクティブです。 関数に関連付けられているディクショナリに検証警告が含まれている場合は、「テスト関数」アイコンがグレー表示されます。
デシジョン関数を作成し、そのデシジョン関数をOracle Business Rules関数を使用してRules Designerからコールすることで、ルールセットをテストできます。 Oracle Business Rules関数本体で、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します。 詳細は、第6.1項「デシジョン関数の概要」および第2.5項「Oracle Business Rules関数の使用」を参照してください。
Oracle Business Rules関数を使用してデシジョン関数をテストする手順は、次のとおりです。
ディクショナリが有効であることを確認します。
ディクショナリ検証の詳細は、第4.4.4項「ディクショナリの検証方法」を参照してください。
Rules Designerで、「関数」ナビゲーション・タブを選択します。
「関数」領域で「作成」アイコンをクリックします。
「名前」フィールドに関数名を入力するか、デフォルト名を使用します。
「戻り型」のドロップダウン・リストから戻り型を選択します。
テスト関数の場合は、「boolean
」を選択します。
「引数」表で、引数がないことを確認します。テスト関数の場合、引数は指定できません。
「本体」領域に、テスト関数本体を入力します。
テスト関数本体で、assign new
を使用してデシジョン関数をコールし、そのデシジョン関数をコールして戻り値を取得できます(テスト関数本体では、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します)。
デシジョン関数のコールによって、List
が戻されます。 つまり、テスト関数でデシジョン関数をテストする手順は、次のとおりです。
必要に応じて、デシジョン関数の入力引数用の入力データを作成します。
テスト関数で作成した引数を使用してデシジョン関数をコールします。
結果をList
形式にします。たとえば、次のようになります。
assign new List resultsList = DecisionFunction_1(testScore)
図8-3に、デシジョン関数をコールするテスト関数を示します。
関数を選択し、「テスト関数」アイコンをクリックします。
関数が実行されます。 図8-4に示すように、出力が「関数テスト結果」ダイアログに表示されます。
「OK」をクリックして「テスト結果」ダイアログを閉じます。
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に示すように「テストに失敗しました。」を戻します。