Oracle® Fusion Middleware Oracle Real-Time Decisionsデシジョン・センター・ユーザーズ・ガイド 11gリリース1 (11.1.1) B72430-01 |
|
前 |
ルールには、次の3つのタイプがあります。
適格性ルール: 選択肢グループや選択肢が、デシジョンに参加する資格があるかどうかを判断するときに使用されます。
フィルタリング・ルール: デシジョンや他のルールの構成要素として使用され、再利用が可能です。このルールを使用して母集団をセグメント化すると、あるセグメントに別のセグメントよりも大きい重み付けができるようになります。
スコアリング・ルール: 選択肢グループと選択肢のスコアを計算するときに使用されます。スコアは、意思決定で適切な選択肢を判断するために使用します。
この章には次のトピックが含まれます:
選択肢または選択肢グループの一部である適格性ルールは、ある選択肢が、選択肢を選択する意思決定またはロジックに参加できるかどうかの適格性を判断します。選択肢グループと選択肢は、インライン・サービス・ナビゲータの「デシジョン・プロセス」の下に表示されます。
選択肢グループを表すアイコンは次のとおりです。
選択肢を表すアイコンは次のとおりです。
適格性ルールは、選択肢グループとそのサブツリーが決定に対して適格であるかどうかを判断します。選択肢自体が適格であっても、そのすべての親が適格でないと、その選択肢は適格にならないことに注意してください。
選択肢グループの適格性ルールにアクセスするには、選択肢グループを選択してから、「定義」→「グループの適格性」または「選択肢の適格性」を選択します。
選択肢の適格性ルールにアクセスするには、選択肢を選択してから、「定義」→「適格性」を選択します。
この項には次のトピックが含まれます:
適格性ルールを追加するには、「グループの適格性」、「選択肢の適格性」、または選択肢/選択肢グループの「適格性」タブを選択してから、新しいルールを追加します。新規ルールの作成とルールへの文の追加方法の詳細は、第4.5.3項「ルールへの文の追加」を参照してください。
注意: ルールの変更は、インライン・サービスが編集用に開かれている場合のみ行うことができます。 |
選択肢グループと選択肢のルールは、継承されて追加されていきます。つまり、選択肢グループのルール(グループおよび選択肢のルール)と選択肢レベルのルールがある場合、ルールを拡張する論理積が追加されたかのようになります。継承されたルールは、ルールの一番上にある「継承された適格性条件」というセクションを展開すると表示されます。セクションを開いたり閉じたりするには、上矢印と下矢印のボタンを使用します。
例4-1に、選択肢グループのルールと選択肢のルールを評価する方法の例を示します。
例4-1 選択肢グループのルールと選択肢のルールの評価
Group1 has rules GroupRule1 and ChoiceRule1 Group2 is a child of Group1 and has rules GroupRule2 and ChoiceRule2 Group2 has a Choice, Choice1, and it has a rule, Rule1
この例では、Choice1のルールを評価するときに、次に示すルールが有効になります。
GroupRule1 AND GroupRule2 AND ChoiceRule1 AND ChoiceRule2 AND Rule1
選択肢の適格性を判定するときは、初めに親の適格性がテストされます。これは、選択肢に対する不必要な適格性ルール評価処理を回避するためです。
例4-2に、選択肢の適格性を判定する方法の例を示します。
例4-2 選択肢の適格性の判定
Group1 has rule GroupRule1 Group2 is a child of Group1 and has rule GroupRule2 Group2 has a Choice, Choice1, and it has a rule, Rule1
この例では、適格性が次のとおり判定されます。
If Choice1 is eligible with Rule1 test with GroupRule2 if eligible test with GroupRule1
フィルタリング・ルールは、スタンドアロン・ルールとして、母集団のセグメント化に使用したり、他のルールのコンポーネントとして使用できます。スタンドアロン・ルールは、様々な要素で再利用できます。スタンドアロンのフィルタリング・ルールには、「デシジョン・プロセス」→「ルール・ライブラリ」→「フィルタリング・ルール」でアクセスできます。
フィルタリング・ルールは他のどのルールでも使用でき、デシジョン優先度決定のためにも使用できます。後者の場合は、フィルタリング・ルールをデシジョンに割り当てると、1つの母集団の様々なセグメントにパフォーマンス・メトリックを適用することが可能になります。図4-1に、母集団のセグメント化に使用されるフィルタリング・ルールの例を示します。
図4-1のスコアリング・ルールは、年齢が18歳以上で信用限度額が$8000以上の顧客をターゲットとしています。フィルタリング・ルールはデシジョンで使用されます。
フィルタリング・ルールを使用して母集団をセグメント化するには:
新しいルールを追加するには、ナビゲータの上にあるツールバーのフィルタリング・ルール・アイコンをクリックします。フィルタリング・ルール・アイコンは、次のように表示されます。
セグメント化のためのスタンドアロンのフィルタリング・ルールを作成します。
新規ルールの作成とルールへの文の追加方法の詳細は、第4.5.3項「ルールへの文の追加」を参照してください。
母集団をセグメント化するデシジョンを選択します。「定義」→「優先度」を選択します。
エディタの「セグメント」を使用して、母集団のセグメントを定義するフィルタリング・ルールを選択します。
必要に応じて、このセグメントに対するパフォーマンス・メトリックの重み付けを調整できます。
「保存」アイコンをクリックして、変更内容を保存します。
インライン・サービスに加えることができる変更の1つとして、業務目標の優先度の調整があります。意思決定の結果は、組織に定義されたパフォーマンス目標、定義された母集団のセグメント、および母集団の各セグメントにおける目標の優先度に基づいています。優先度の調整は、「定義」→「優先度」サブタブで行うことができます。
注意: ルールの変更は、インライン・サービスが編集用に開かれている場合のみ行うことができます。 |
図4-2に、業務目標の優先度の例を示します。
図4-2に示す例では、母集団のセグメント「維持するセグメント」の業務目標「顧客維持」の重み付けが高く設定されており(71%)、母集団の残りの部分は収益最大化が優先されます(29%)。
特定の状況下または母集団に変更がある場合は、重み付けのバーをスライドしてこの優先度を調整できます。調整後は、インライン・サービスを再デプロイしてから、変更内容を確認するためにデシジョン・センターに再度ログインする必要があります。
ブール値を返す適格性ルールとは対照的に、スコアリング・ルールは数値を返します。この値は、Oracle RTDのデシジョン・ロジックのどの部分でも使用できます。一般的なユース・ケースは、次のとおりです。
特定のパフォーマンス目標に対する選択肢のスコアを設定する
選択肢の属性の値を設定する
図4-3に、スコアリング・ルールの例を示します。
図4-3に示す例では、顧客の与信金額に基づいてスコアが割り当てられます。顧客がどの与信範囲カテゴリにも適合しない場合、デフォルトのスコアである3が設定されます。
ルールは、デシジョン・スタジオとデシジョン・センターの中で様々な目的で使用されますが、たとえば次のようなユース・ケースがあります。
選択肢グループや選択肢がデシジョンに参加できるかどうかの適格性を判定する。
スタンドアロンの再利用可能なルールとして、母集団セグメントのフィルタリングに使用する。
スタンドアロンの再利用可能なルールとして、選択肢のスコア設定に使用する。
ルールの作成に使用するエディタは、ほとんど同じです。以降の各項では、エディタとルール・エディタのツールバーを使用してルールを使用する方法を説明します。
注意: ルールの変更は、インライン・サービスが編集用に開かれている場合のみ行うことができます。 |
この項には次のトピックが含まれます:
ルール・エディタのツールバーからは、ルールを編集するための機能にアクセスできます。このツールバーは、実行中のタスクのコンテキストに依存します。
左から右の順に、このツールバーには次に示す機能が並んでいます。
ルール・プロパティの編集
条件値の追加
ルールの追加
ルール・セットの追加
削除
反転
上へ移動
下へ移動
コピー
切取り
貼付け
Oracle RTDのルールには、次の3つのタイプがあります。
フィルタリング・ルール
スコアリング・ルール
適格性ルール
Oracle RTDのルールは、1つ以上のルール条件および条件の結合を制御する論理演算子から構成されます。これらの条件は、この項で説明するようにルール文の形式で表現されます。
注意: この項では、条件付きルール(常に真になるとはかぎらないルール)について説明します。 |
単純なフィルタリング・ルールの例を次に示します。このルールの名前は選択リスト・ルールで、この項ではこのルールを使用してルール文の説明をします。
Select List Rule is true when All of the following 1. session / customer / Age > 21 2. session / customer / MaritalStatus = "MARRIED"
表4-1に、Oracle RTDのルール構文を正式な形で示します。この表では、Oracle RTDのルール文で使用される項の説明にバッカス正規形(BNF)タイプの表記規則を使用します。
表4-1 Oracle RTDのルールの構文
項 | 項の構成要素 | 注意 |
---|---|---|
|
|
なし |
|
|
ルールの名前を指定します。 ルールが作成された後は、ヘッダー行の編集は不可能です。 |
|
次のすべて | 次のいずれか | 次のいずれでもない | 次の一部 |
論理演算子は、直後の |
|
|
ルール・エントリには必ず番号が付きます。ルール・エントリの内容はブール文または他のルール・エントリです。 |
|
|
2番目の |
|
|
|
|
|
配列処理ルール・セットの場合にのみ使用します。詳細は、「数量詞と配列処理ルール」を参照してください。 |
|
すべて | 次が存在 |
なし |
選択リスト・ルールの例は、次のように分類できます。
選択リスト・ルールは、次の場合にtrueです = <header line>
次のすべて = <logical operator>
このルールの残りの部分は、次の2つの文からなる1つの<rule entry>
で構成されています:
session / customer / Age > 21 = <boolean statement>
session / customer / MaritalStatus = "MARRIED" = <boolean statement>
ルール・セットとブール文
ルール・セット(表4-1では<rule set>
)は、1つ以上の番号付きルール・エントリで構成される複合文です。各ルール・エントリは、ブール文か、別のルール・セットです。
ブール文(表4-1では<boolean statement>
)には、評価結果がtrueまたはfalseになる条件が含まれています。この評価は、ルールが処理されるときに行われます。ブール文は、ルール・セットの最小レベルの要素であり、さらに分解することはできません。
ルール・セットの中で定義される下位のルール・セットに名前を付けることもできます。
注意: 各Oracle RTDのルールには、暗黙的な、名前のない、最上位のルール・セットが1つあります。 |
各ルール・セットは、ルール・セット文の処理を制御する論理演算子によって修飾されます。詳細は、「論理演算子」を参照してください。
次に示す除外ルールの例では、ルール・セットの中に別のルール・セットがあります。
例:
最上位の名前のないルール・セットの中に、論理演算子「次のすべて」と2つのルール・エントリがあります。最初のルール・エントリはブール文で、2番目のルール・エントリはルール・セットです。
最上位ルール・セットの内側のルール・セットの中には、論理演算子「次のいずれでもない」と3つのルール・エントリがあります。これらのルール・エントリはすべてブール文です。
配列内の値に依存するルール・セットの場合は、全体の「数量詞」となる式(「すべて」または「次が存在」)がルール・セットに追加されます。この数量詞は、ルール・セットの論理演算子を修飾します。詳細は、「数量詞と配列処理ルール」を参照してください。
論理演算子
Oracle RTDの論理演算子は次のとおりです。
次のすべて(論理積、and)。ルール・セットでは、ブール文または下位レベルのルール・セットがすべてtrueになる場合にtrueと評価されます。
次のいずれか(論理和、or)。ルール・セットでは、ブール文または下位レベルのルール・セットのいずれか1つがtrueになる場合にtrueと評価されます。
次のいずれでもない(否定論理積、not and)。ルール・セットでは、ブール文または下位レベルのルール・セットがすべてfalseになる場合にtrueと評価されます。
次の一部(否定論理和、not or)。ルール・セットでは、ブール文または下位レベルのルール・セットのいずれか1つがfalseになる場合にtrueと評価されます。
数量詞と配列処理ルール
ルール・セットは、次のように、配列内に出現する値に依存することが可能です:
ルール・セットは配列の要素を評価できます
ルール・セットの中の式は配列の要素を参照できます
このようなタイプのルールを配列処理ルールと呼びます。
これらの場合、「数量詞」式(数量詞とも呼ばれます)がルール・セットの論理演算子を修飾するルール・セットが存在します。ルール・セットの文は、すべての配列要素に対して満たされるか、1つ以上の配列要素に対して満たされるかのどちらかである必要があります。
次の例では、配列属性のsession/agentsに含まれるすべてのエージェントを調べるルールが作成されています。この例では、すべてのエージェントが30歳以上でありステータスがQualifiedである場合に、ルールがtrueと評価されます。
Agent Rule is true when For all people in session/agents, All of the following 1. people / Age >= 30 2. people / Status = "Qualified"
配列処理ルールの構文は、次の項で詳しく説明します。前の例では、people
という項はユーザーが定義する任意項であり、ルール・セット内の個々の配列要素を識別するために使用されます。
配列処理ルールの修飾
配列処理ルールの修飾の一般的な形式は、次のとおりです。
<quantifier> <array_variable> in <array_name>, <logical_operator>
ここで:
quantifier
は、「すべて」、「次が存在」のいずれかです。
すべて:この数量詞は、ルール・セットの論理演算子と連携して、各配列要素の検査が必須であることを示します。また、各配列要素について、被修飾ルール・セット内のブール文と下位ルール・セットがすべて満たされている必要があります。
被修飾ルール・セット内のブール文と下位ルール・セットが1つも満たされない配列要素が見つかると、ルール評価による配列処理は終了します。配列内の残りの要素はスキップされます。
次が存在:この数量詞は、ルール・セットの論理演算子と連携して、少なくとも1つの配列要素に対して、被修飾ルール・セット内のブール文と下位ルール・セットがすべて満たされている必要があることを示します。
被修飾ルール・セット内のブール文および下位ルール・セットがすべて満たされている配列要素が見つかると、ルール評価による配列処理は終了します。配列内の残りの要素はスキップされます。
array_variable
は、被修飾ルール・セットのブール文および下位ルール・セットの中の配列array_name
の個々の配列要素の名前を指定するための任意名です。
注意:
|
array_name
は、検査対象の配列です。
logical_operator
は、「次のすべて」、「次のいずれか」、「次のいずれでもない」、「次の一部」のいずれかです。
たとえば、ある配列処理ルール・セットが2つのエンティティsessionとcustomerで構成されているとします。
sessionエンティティには、次の属性があります。
整数型の属性AgentDept
配列属性CustInfo(customer型)
customerエンティティには、次の属性があります。
整数型の属性CompSize
文字列型の属性Region
次の条件を両方とも満たすためのフィルタリング・ルールが必要です。
AgentDeptの値は42でなければならない。
CustInfo配列内の少なくとも1つの顧客のCompSizeが> 100で、Regionが「West」でなければならない。
このフィルタリング・ルールは、次のように定義できます(配列を修飾する式が強調されています):
Cust Rule is true when
All of the following
1. session / AgentDept = 42
2. There exists some_customer in session / CustInfo, All of the following
1. some_customer / CompSize > 100
2. some_customer / Region = "West"
ルール・セットの追加
ルール・セットを追加するには、次に示す「ルール・セットの追加」アイコンをクリックします。
これがルール内に作成する最初の要素である場合は、次に示す文がルール内に表示されます。
デフォルトの論理演算子「次のすべて」
ルールの最初の行番号を付与されたルール・セット・エントリ。このエントリの中には、デフォルトの論理演算子「次のすべて」があります。
2つのオペランドを持つ空のブール文(新しく定義されたルール・セット内)
それ以外の場合、現在のルール・セットで次のエントリとして、オペランドが2つで空のブール文を含む新規ルール・セット・エントリが追加されます。たとえば、ブール文が1つ含まれている既存ルール・セットにルール・セットを追加すると、追加されたルール・セット・エントリは、次に示すように、行番号2の横に表示されます。
ルール・セットに名前を付けるには、右上隅をクリックします。ルール・セットに名前を付けると、ルール・セットのボックスの右上隅にある山形のアイコンをクリックしてルールを閉じたり開いたりできるようになります。
ルールの追加(ブール文をルールに追加)
ブール文を追加するには、次に示す「ルールの追加」アイコンをクリックします。
これがルール内に作成する最初の要素の場合は、次のように、デフォルトの論理演算子「次のすべて」が表示され、その後に2つのオペランドを持つ空のブール文が表示されます。
それ以外の場合は、次の例に示すように、2つのオペランドを持つ空のブール文が現行ルール・セットに追加されます。この例では、1つのブール文がすでに存在します。
デフォルトでは、ブール文は2つのオペランドを持ち、その間に1つの演算子があります。
ブール文のオペランドが1つか2つかを切り替えるには、次の例に示すように、ブール文の行番号をクリックしてから、ブール文ボックスの右下にある三角形のアイコンをクリックします。
オペランドが1つの場合は、評価結果が必ずブール型になります。
ルールのブール文を編集するには、左辺をクリックしてから省略記号をクリックします。定数、属性または関数コールから選択できます。ページ上部の「配列」を選択すると、配列値を指定できます。
注意: オペランド・ダイアログ内で[Esc]キーを押すと、いつでもダイアログを閉じることができます。 |
「定数」を選択した場合は、その項目の「データ型」と「値」を指定します。「配列」を選択した場合は、必要な数の項目を配列に追加します。次に、各項目の「データ型」を選択して「値」を指定します。
「属性」を選択した場合は、次のいずれかを指定します。
グループ属性: ルール・プロパティで選択された選択肢グループまたはその選択肢の一部である属性。
セッション属性: セッション・エンティティの一部である属性。
アプリケーション属性: アプリケーション要素のメンバーである属性。
配列変数: 数量詞付き論理演算子式の中のルール・セットの個々の配列要素の名前。詳細は、「数量詞と配列処理ルール」を参照してください。
タイプ別に属性をフィルタリングするには、「フィルタ・タイプの適用」を選択してから「データ型」を選択します。「配列」を選択した場合は、必要な数の項目を配列に追加してから、各項目に属性値を割り当てます。
「関数コール」を選択した場合は、次のいずれかを指定します。
フィルタリング・ルール: インライン・サービスに対して定義されたスタンドアロンのフィルタリング・ルール
スコアリング・ルール: インライン・サービスに対して定義されたスタンドアロンのスコアリング・ルール
関数コール: インライン・サービスに対して定義されたスタンドアロンの関数
タイプ別に属性をフィルタリングするには、「フィルタ・タイプの適用」を選択してから「データ型」を選択します。「配列」を選択した場合は、必要な数の項目を配列に追加してから、各項目に関数またはルールを割り当てます。
フィルタリング・ルールとスコアリング・ルールのどちらにも、設定可能なルール・プロパティがあります。ルール・プロパティを編集するには、次に示す「ルール・プロパティ」アイコンをクリックします。
「ルール・プロパティを編集」が表示されます。
ルール・プロパティには、コール・テンプレートとネガティブ・コール・テンプレートがあります。コール・テンプレートは、別のルールからルールをコールするための、ユーザーフレンドリな記述方法を提供します。
コール・テンプレートを定義するには、「パラメータ」の下にある「追加」ボタンをクリックして、ルールのパラメータ数を追加します。{0}、{1}などの引数と、ルールを記述する句を使用して、コールのテンプレートを定義します。ルールの使用時にはこの句が表示されるため、適切な句を使用することが重要です。
たとえば、ユーザーから少なくともx回のコールが過去y日間にあったかどうかをルールによって調べるには、次のように記述します。
There were at least {0} calls in the last {1} days
ネガティブ・コール・テンプレートは、ルールが反転されて反対の意味を表すときに使用されます。例:
There were less than {0} calls in the last {1} days
ルール・プロパティでは、ルールで使用する選択肢グループを割り当てることもできます。「選択肢グループで使用」を選択すると、パラメータで使用する選択肢属性を、どの選択肢グループまたはその選択肢から得るかを指定できます。これらの属性は、オペランドの値を編集する場合に使用できます。
「反転」アイコンは、ルールで複数の要素を逆にします。ブール文の番号を選択することで、ブール文の演算子を逆にできます。たとえば、オペランドが=の場合、<>に反転します。
ルール・セットの論理演算子を反転させることもできます。反転させるには、論理演算子を選択して「反転」をクリックします。たとえば、「次のすべて」は「次の一部」になります。
「反転」の最後の用途は、ブール型のルール(オペランドが1つだけのルール)の反転です。このタイプのルールを反転すると、ルールを定義する関数のネガティブ・コール・テンプレートに変換されます。
ルールの中のルールとルール・セットの順序を変更するには:
ルール・エントリの番号をクリックして選択します。
次の操作をルール・エディタのツールバーから実行し、ルール・エントリを移動します。
削除
選択内容をクリップボードにコピー
クリップボードへの選択内容の切取り
上へ移動
下へ移動
ルール・エディタのツールバーのアイコンの詳細は、第4.5.1項「ルール・エディタのツールバーについて」を参照してください。
「保存」アイコンをクリックして、変更内容を保存します。