(58)【調査した分野】(Int.Cl.,DB名)
請求項2に記載のルール管理支援装置であって、前記条件部論理和結合式をDisjunctive Normal Form(DNF)に変換した条件部DNF式を生成し、当該条件部DNF式の各節を条件部とし、結果部を前記入力ルールの結果部とした追加ルールを生成することを特徴とするルール管理支援装置。
【発明を実施するための形態】
【0010】
以下、本発明について、その実施形態に則して、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素およびその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0011】
第1の実施形態
本実施形態では、ユーザが定義したルールと前記ルールに基づき生成した決定表の管理を支援する装置の例を説明する。
【0012】
図1は、本実施形態に係るルール管理支援装置100の構成図の例である。本実施例では、1つのチェックロジックや推論ロジックなどのルール機能ロジックを実現する1以上のルールを管理する構成を説明する。システム機能の点では、ある入力に対して、ルール機能ロジックを実行すると、ある結果が返ってくる。このとき、ルールは、入力や出力に対する条件判断や制約などである。以降の説明では、ルール管理支援装置100が管理するルール機能ロジックは1つを前提としているが、複数のルール機能ロジックを管理するように構成してもよい。
【0013】
ルール管理支援装置100は、少なくともCPU(Central Processing Unit)等のプロセッサ160、RAM(Random Access Memory)、ROM(Read Only Memory)等のメモリ170、およびキーボード、表示モニタ等の入出力装置180を備えたコンピュータである。ルール管理支援装置100は、ユーザ定義ルール入力部101(入力ルール受付部)、決定表変換部102、決定表表示部103、決定表編集部104、ルール出力条件指定部105(ルール出力条件受付部)、ルール出力部106、出力ルール表示部107、および出力ルール反映部108などの機能ロジックを備える。これらの機能ロジックはコンピュータプログラムとして実現されており、メモリ170上でプロセッサ160により実行される。また、ルール管理支援装置100は、決定表修正ルール保持部151、決定表保持部152、ユーザ定義ルール保持部153、ルール出力条件保持部154、および出力ルール保持部155などのデータを、図示を省略するハードディスクドライブ等の補助記憶装置に保管している。これらのデータはプロセッサ160が前記機能ロジックを実行する際に補助記憶装置から読みだして使用する。
【0014】
ユーザ定義ルール入力部101は、条件項目、結果項目、各条件、結果項目に対する要素値(以下、条件項目に対する要素値を「条件要素値」、結果項目に対する要素値を「結果要素値」という。)、およびルール(以下、「ユーザ定義ルール」という。)を受け付け、ユーザ定義ルール保持部153に登録する。条件項目は、当該ユーザ定義ルールが組み込まれるルール機能ロジックの入力項目であり、結果項目は、当該ルール機能ロジックの出力項目である。ユーザ定義ルールは、条件項目、結果項目、条件要素値、結果要素値、および論理演算子などの組合せで構成される。
図2を参照して、条件項目、結果項目、条件要素値、結果要素値、およびユーザ定義ルールの例を説明する。
【0015】
図2は、条件項目、結果項目、条件要素値、結果要素値、およびユーザ定義ルールの例である。
図2の例では、条件項目データ210は、条件項目として、「年齢」「免許証の色」および「使用目的」を含み、それぞれ、条件要素値に示す値を取り得る。例えば、条件項目「年齢」は、「35歳未満」と「35歳以上」の2つの条件要素値を持つ。次に、結果項目データ220は、結果項目として、「他者運転特約」と「割引率」を含み、それぞれ、結果要素値に示す値を取り得る。例えば、結果項目「他者運転特約」は、「指定可」と「指定不可」の2つの結果要素値を持つ。次に、ユーザ定義ルールデータ230は、条件部231と結果部232から構成される。例えば、ユーザ定義ルール233は、「免許証の色がブルーであり、かつ、使用目的が通勤であるならば、他者運転特約は指定不可で、割引率は5%である」という意味を表す。
【0016】
次に、
図1に戻ると、決定表変換部102は、ユーザ定義ルール保持部153からユーザ定義ルールを取得し、決定表に変換し、変換した決定表の情報を決定表保持部152に登録する。
【0017】
次に、決定表表示部103は、決定表保持部152と決定表修正ルール保持部151から決定表の情報を取得し、入出力装置180の表示画面に決定表を表示する。
図3に、決定表の表示例を示す。決定表300は、条件部表示エリア301と結果部表示エリア302から構成される。条件部表示エリア301は、各条件項目の条件要素値の組合せを表示するエリアである。結果部表示エリア302は、前記各条件項目の条件要素値の組合せに対する各結果項目の結果要素値を表示するエリアである。結果部表示エリア302中の白丸「○」は決定表保持部152の情報に基づき表示した内容であり、結果部表示エリア302中の黒丸「●」は決定表修正ルール保持部151の情報に基づき表示した内容である。これにより、各条件項目の条件要素値の組合せに対する各結果項目の結果要素値が、ユーザ定義ルールに基づくもの(○印)か、ユーザが決定表上で修正を加えたもの(●印)かを、ユーザが区別できる。
【0018】
次に、決定表編集部104は、決定表300の結果部表示エリア302の修正内容を受け付け、その修正内容をルール形式に変換し(以下、変換したルールを「決定表修正ルール」という。)、決定表修正ルールを決定表修正ルール保持部151に登録する。これにより、ユーザは、表示された決定表300を確認しながら、誤りなどがある場合に、決定表を直接修正できる。
【0019】
次に、ルール出力条件指定部105は、ユーザ定義ルール保持部153に登録されているユーザ定義ルールと決定表修正ルール保持部151に登録されている決定表修正ルールから、ルールを出力するための条件(以下、「ルール出力条件」という。)を受け付け、ルール出力条件をルール出力条件保持部に登録する。これにより、ユーザは、ルール出力の用途に応じて、ルール出力部106により出力されるルールの形式などをコントロールできる。
【0020】
次に、ルール出力部106は、ユーザ定義ルール保持部153に登録されているユーザ定義ルール、決定表修正ルール保持部151に登録されている決定表修正ルール、およびルール出力条件保持部154に登録されているルール出力条件を取得し、ユーザ定義ルールと決定表修正ルールからルール出力条件に基づきルールを出力する(以下、出力したルールを「出力ルール」という。)。ルール出力部106は、出力ルールを出力ルール保持部155に登録する。
【0021】
次に、出力ルール表示部107は、出力ルール保持部155に登録されている出力ルールを入出力装置180の表示モニタ等の画面に表示する。これにより、ユーザは、どのようにユーザ定義ルールを修正すればよいか、意図した通りにユーザ定義ルールが定義されているかなどを確認できる。
【0022】
次に、出力ルール反映部108は、出力ルール保持部155に登録されている出力ルールを、ユーザ定義ルール保持部153に追加、もしくは既存のユーザ定義ルールを変更、あるいは削除する。これにより、ユーザは、効率よく出力ルールをユーザ定義ルールに反映できる。
【0023】
続いて、
図4を参照して、ルール出力条件指定部105におけるルール出力条件の設定画面について説明する。
【0024】
図4は、本実施形態に係るルール管理支援装置100のルール出力条件指定部105におけるルール出力条件の設定画面の例である。ルール出力条件設定画面400は、出力範囲指定領域410、ユーザ定義ルール活用モード指定領域420、出力単位指定領域430、および出力ルール制約指定領域440などの領域を含む。
【0025】
出力範囲指定領域410は、出力対象のルールの範囲を指定する領域であり、すべての範囲411、結果定義済み範囲すべて412、ユーザ選択範囲413、結果未定義範囲414、条件範囲指定415、および結果範囲指定416などの選択子を有する。ユーザ選択範囲413には、範囲選択ボタン417があり、範囲選択ボタン417を押下することで、ユーザ定義ルール、または決定表の範囲、またはそれらの組合せで出力範囲を指定できる。条件範囲指定415には、条件項目の範囲を受け付けるテキストボックス418がある。テキストボックス418には、条件項目、条件値候補、および論理演算子などを組合せて条件項目の範囲を指定できる。結果範囲指定416は、結果項目の範囲を受け付けるテキストボックス419を有する。テキストボックス419には、結果項目、結果値候補、および論理演算子などを組合せて条件項目の範囲を指定できる。
【0026】
次に、出力範囲指定領域410の各選択子が選択された場合のルール出力部106の振る舞いを説明する。すべての範囲411が選択された場合、ルール出力部106は、出力ルールのすべての条件部を論理和結合した集合(以下、「出力ルール条件集合」という。)が、条件項目のすべての組合せ集合と一致するルールを出力する。すべての範囲411を選択することで、例えば、ユーザは、ルール全体について冗長性の排除、結果定義済みの範囲と未定義範囲の把握などが可能となる。ルール全体についての冗長性を排除した結果は、例えば、プログラム記述の際に役に立つ。
【0027】
結果定義済み範囲すべて412が選択された場合、ルール出力部106は、出力ルール条件集合が、結果が定義されている条件集合と一致するルールを出力する。結果定義済み範囲すべて412を選択することで、例えば、ユーザは、結果定義済みの範囲に着目したルールの最適化などが可能となる。
【0028】
ユーザ選択範囲413が選択された場合、ルール出力部106は、出力ルール条件集合が、範囲選択ボタン417の押下によりユーザが指定したユーザ定義ルールと決定表の範囲の条件部の集合と一致するルールを出力する。ユーザ選択範囲413を選択することで、例えば、ユーザは、冗長性を排除したいユーザ定義ルールのみの最適化などが可能となる。
【0029】
結果未定義範囲414が選択された場合、ルール出力部106は、出力ルール条件集合が、結果が未定義の条件の集合と一致するルールを出力する。結果未定義範囲414を選択することで、ユーザは各条件項目の条件要素値の組合せの検討漏れの範囲を把握できる。結果未定義範囲414を選択して、ルールが出力されないことを確認することで、検討漏れがないことを確認できる。
【0030】
条件範囲指定415が選択された場合、ルール出力部106は、出力ルール条件集合が、テキストボックス418で指定された条件集合と一致するルールを出力する。条件範囲指定415を選択することで、ユーザは、指定した条件範囲において、取り得る結果項目の結果要素値を把握でき、また意図した通りの結果要素値となっているかをテストしたりするのに利用できる。
【0031】
結果範囲指定416が選択された場合、ルール出力部106は、出力ルール条件集合が、テキストボックス419で指定された結果となる条件集合と一致するルールを出力する。結果範囲指定416を選択することで、ある特定の結果になる条件を把握でき、ユーザが意図した条件と一致しているか、障害が発生した結果に着目し障害の原因となった条件の確認などに利用できる。
【0032】
次に、ユーザ定義ルール活用モード指定領域420は、ユーザ定義ルールの活用モードを指定する領域であり、修正不可421、修正可422、未活用423、および個別設定424などの選択子がある。修正不可421を選択すると、決定表300の内容を修正することができなくなる。修正可422には、設定ボタン425があり、設定ボタン425を押下することで、修正対象のユーザ定義ルールの選択方法を指定できる。個別設定424には、設定ボタン426があり、設定ボタン426を押下することで、ユーザ定義ルール毎にユーザ定義ルール活用モードを指定できる。
【0033】
図5は、設定ボタン425を押下した際に表示される修正可オプション設定画面の例である。修正可オプション設定画面500は、類似度評価方法指定領域510などを有する。類似度評価方法指定領域510は、ルール出力部106が内部で作成した修正後のユーザ定義ルールと修正前のユーザ定義ルールの類似度の指標を指定する領域であり、有効フラグ511、評価指標512、優先度513、ソート514、下限515、および上限516などの項目がある。評価指標512は、ルール管理支援装置100が備える評価指標の名称であり、各評価指標512に対して、ユーザが有効フラグ511、優先度513、ソート514、下限515、および上限516を指定する。有効フラグ511は、当該評価指標を活用するか否かを示すフラグであり、チェックされている場合、ルール出力部106は、当該評価指標を類似度判定に活用する。優先度513は、ルール出力部106が類似度を判定する際の優先順位であり、数字が小さい評価指標を優先する。ソート514は、当該評価指標により算出した値が大きい、もしくは小さい、のいずれの場合に、類似度が高いとみなすかを指定する。ソート514が昇順の場合は、値が小さい方を類似度が高いとみなし、降順の場合は、値が大きい方を類似度が高いとみなす。下限515と上限516は、当該評価指標512により算出した値の下限と上限を表し、当該範囲に含まれない場合は、ルール出力部106は、修正前のユーザ定義ルールと修正後のユーザ定義ルールは類似していないと判定する。また、下限515と上限516が「−(ハイフン)」の場合、ルール出力部106は、下限と上限がないものとみなす。
【0034】
図5の例では、評価指標512として、追加された要素数、削除された要素数、一致する要素数、および全体の要素数の4つを挙げている。要素数とは、ルールの条件部に含まれる「A=a1」などの条件要素の数である。例えば、
図2のユーザ定義ルール233の場合、要素数は、「年齢=35歳未満」、「免許証の色=ゴールド」、「使用目的=レジャー」の3つである。
【0035】
図6は、設定ボタン426を押下した際に表示されるユーザ定義ルール個別オプション設定画面の例である。ユーザ定義ルール個別オプション設定画面600は、ユーザ定義ルール個別オプション設定領域610、および評価指標設定ボタン620などを有する。ユーザ定義ルール個別オプション設定領域610は、ユーザ定義ルール毎にユーザ定義ルール活用モードを指定する領域であり、各ユーザ定義ルールの識別符号であるID611、ルール名称612、およびユーザ定義ルール活用モード613などの項目がある。ユーザ定義ルール活用モード613は、さらに、修正不可614、修正可615、および未活用616の選択子を備える。評価指標設定ボタン620は、修正対象のユーザ定義ルールの選択方法を指定する際に利用し、評価指標設定ボタン620を押下することで、ルール出力条件設定画面400の設定ボタン425の押下と同様の
図5に示す修正可オプション設定画面500が表示される。
【0036】
図6の例では、例えば、ID611が「1」のユーザ定義ルールについては、ルール名称が「ルール1」であり、ユーザ定義ルール活用モード613が「修正不可」であることを表す。
【0037】
なお、決定表修正ルールに対して、ユーザ定義ルール活用モードを設定できるようにしてもよい。この場合、例えば、ユーザ定義ルール個別オプション設定画面600と同様の画面で、決定表修正ルールを表示すればよい。
【0038】
次に、ユーザ定義ルール活用モード指定領域420の各選択子が選択された場合のルール出力部106の振る舞いを説明する。
【0039】
修正不可421が選択された場合、ルール出力部106は、ユーザ定義ルールの論理構造を崩すことなく、そのままの形式でルールを出力する。これにより、例えば、法令や業務マニュアルとの等価性を容易に判断できるように記述されたユーザ定義ルールを残し、その他のルール(決定表修正ルール)のみをルール出力の対象とでき、法令や業務マニュアルとの等価性確認の容易さを維持できる。
【0040】
修正可422が選択された場合、ルール出力部106は、修正可オプション設定画面500で指定した条件に基づき、ユーザ定義ルールの条件部に修正を加えたユーザ定義ルールを出力する。これにより、例えば、仕様の変更に伴い、既存のどのユーザ定義ルールを変更すれば良いかを特定できる。
【0041】
未活用423が選択された場合、ルール出力部106は、ユーザ定義ルールと決定表修正ルールと等価なルールを出力する。このとき、出力ルールは、ユーザ定義ルールの論理構造を維持している保証はない。これにより、例えば、ルール全体の冗長性の排除が可能である。
【0042】
個別設定424が選択された場合、ルール出力部106は、設定ボタン426の押下により設定されたユーザ定義ルール毎の、修正不可、修正可、および未活用のユーザ定義ルールの活用モードに従い、ルールを出力する。これにより、例えば、指定したユーザ定義ルールのみの冗長性を排除したり、法令に基づくユーザ定義ルールのみを修正不可422とすることで法令との追跡性を維持したルールを出力したりすることができる。
【0043】
図4のルール出力条件設定画面400に戻ると、出力単位指定領域430は、出力ルールを分割する方法を指定する領域であり、結果項目単位431と結果項目組合せ単位432などの選択子がある。
【0044】
出力単位指定領域430の各選択子が選択された場合のルール出力部106の振る舞いを説明する。
【0045】
結果項目単位431が選択された場合、ルール出力部106は、ルールの結果部が、結果項目のいずれか1つのみを含むルールを出力する。これにより、ユーザは、ある結果項目が特定の結果要素値となる場合の条件を確認できる。
【0046】
結果項目組合せ単位432が選択された場合、ルール出力部106は、ルールの結果部が、すべての結果項目を含むルールを出力する。これにより、ユーザは、各結果項目の結果要素値の組合せ毎に条件を確認できる。ただし、ユーザ定義ルール活用モードが修正不可または修正可であるユーザ定義ルールについては、いずれの選択子の場合であっても、元のユーザ定義ルールの結果部は変化しない。
【0047】
なお、出力単位指定領域430の選択子として、結果項目の組合せ数があっても良い。この場合、例えば、3つの結果項目があり、結果項目の組合せ数を2とした場合、3つの結果項目から2つの結果項目を抽出し、当該組合せについて、上記結果項目組合せ単位432と同様の振る舞いを実行する。当該処理をすべての結果項目の組合せについて実行する。
【0048】
次に、出力ルール制約指定領域440は、出力ルールの制約を指定する領域であり、条件値の否定を許可する441、および、ルール間の重複を許可する442などの項目がある。
【0049】
出力ルール制約指定領域440の各項目が選択された場合のルール出力部106の振る舞いを説明する。
【0050】
条件値の否定を許可する441が選択された場合、ルール出力部106は、「A!=a1」のような否定を含むルールを出力する場合がある。一方、条件値の否定を許可する441が選択されなかった場合、ルール出力部106は、否定を含むルールは出力しない。例えば、条件項目Aがa1、a2、a3の3つの条件要素値を持ち、条件部が「A=a2、または、A=a3」である場合を考える。このとき、条件値の否定を許可する441が選択された場合、ルール出力部106は、「A=a2、または、A=a3」を「A!=a1」に変換して出力する。条件値の否定を許可する441が選択されなかった場合は、そのまま「A=a2、または、A=a3」を出力する。否定を許可することにより、上記のように条件値の記述が簡単化されることがある。
【0051】
ルール間の重複を許可する442が選択された場合、ルール出力部106は、出力ルール間の条件部に重複があってもそのまま出力する。一方、ルール間の重複を許可する442が選択されなかった場合、ルール出力部106は、出力ルール間の条件部の重複はなく排他的になるようにルールを出力する。これにより、例えば、ルール間の重複を許可する442を選択することで、出力ルールをシンプルにできる場合がある。また、ルール間の重複を許可する442を選択しないことで、ルール間が排他的になり、テストにおける同値クラスを特定できる。
【0052】
なお、ルール出力条件指定部105は、出力ルールの構造に影響を与える他のオプションを指定する領域を備えてもよい。例えば、出力ルールの構造パターンとして、「IF〜THEN形式」、「IF〜THEN IF ― THEN形式」を選択できるようにする。前者は、通常の条件部と結果部から構成されるルールが出力されるのに対して、後者は、IF文のネスト構造のルールを出力する。
【0053】
続いて、
図7を参照して、本実施形態に係るユーザ定義ルール保持部153のデータ構造の例について説明する。
図7に示すように、ユーザ定義ルール保持部153は、ユーザ定義ルール701、条件項目702、結果項目703、および要素値704といったエンティティを有する。
図7の各エンティティは、2つの四角形から構成されており、上の四角形内に示す名前はエンティティ名を表し、下の四角形内に示す名前は当該エンティティの属性名を表している。また、エンティティ間の関連は、ひし形と実線を結んで表し、ひし形側のエンティティと実線側のエンティティは、1対多の関係にあることを表す。以下、他のデータ構造の図についても同様に記載している。
【0054】
図7において、ユーザ定義ルール701は、個々のユーザ定義ルールに関する情報として、ルールID、ルール名称、条件部論理式、および結果部論理式といった属性を有するエンティティである。ルールIDは、ユーザ定義ルール保持部153においてユニークな識別子である。ルール名称は、ユーザ定義ルールの名称である。条件部論理式は、ユーザ定義ルールの条件部に関するデータであり、条件項目702または結果項目703(いずれか一方のみ)に対応する要素値ID、ルールID、論理演算子(論理積、論理和、否定など)、および、括弧などを組合せて表現する。結果部論理式は、ユーザ定義ルールの結果部に関するデータであり、条件部論理式と同様の形式である。ただし、条件部論理式が条件項目702から定義される場合で、かつ、結果部論理式が結果項目703から定義される場合、結果部論理式は結果項目703と論理積のみで定義することが望ましい。このような場合で、結果部論理式に論理和や否定が含まれる場合、結果が非決定的となるためである。また、ユーザ定義ルールデータ702は、子要素として、さらにユーザ定義ルールデータ702を有することができる。このような構造により、ユーザ定義ルール保持部153は、IF文のネスト構造など多様なルールを保持できる。また、結果部論理式を空欄にし、条件部論理式を記載することで、複数のユーザ定義ルールで共通する条件部を部品として扱うことができる。共通部品である条件部を利用する場合は、条件部論理式にルールIDを含めればよい。また、ユーザ定義ルール701に示す属性の他、法令や業務規則などルールの種別、ルールの根拠情報、下位設計書IDを記載する属性を含めても良い。例えば、ルールの種別があることで、変更が可能なものかの判断の材料とできる。また、根拠情報は、ルールと根拠情報との追跡性確保に利用できる。同様に、下位設計書IDを含めることで、下位の設計書との追跡性を確保できる。
【0055】
次に、条件項目702は、決定表300における条件項目として、条件項目ID、および、条件項目名称といった属性を有するエンティティである。条件項目IDは、結果項目IDを含めてユーザ定義ルール保持部153においてユニークな識別子である。条件項目名称は、条件項目の名称である。
【0056】
次に、結果項目703は、決定表300における結果項目として、結果項目ID、および、結果項目名称といった属性を有するエンティティである。結果項目IDは、条件項目IDを含めてユーザ定義ルール保持部153においてユニークな識別子である。結果項目名称は、結果項目の名称である。
【0057】
次に、要素値704は、決定表300における条件要素値または結果要素値であり、条件/結果項目ID、要素値ID、および、要素値名といった属性を有するエンティティである。条件/結果項目IDは、当該要素値を持つ条件項目702または結果項目703の条件項目IDまたは結果項目IDである。要素値IDは、ユーザ定義ルール保持部153においてユニークな識別子である。要素値名は、要素値の名称であり、条件項目702または結果項目703においてユニークな名称である。
【0058】
なお、条件項目702と結果項目703をエンティティとして区別しているが、当該ユーザ定義ルールに係るルール機能ロジックにおける入力項目と出力項目を区別できればよい。
【0059】
続いて、
図8を参照して、本実施形態に係るルール出力条件保持部154のデータ構造の例について説明する。
図8に示すように、ルール出力条件保持部154は、ルール出力条件801、ユーザ選択ルール802、修正可オプション803、個別設定オプション804、および出力ルール制約805といったエンティティを有する。
【0060】
図8において、ルール出力条件801は、ユーザがルール出力条件設定画面400において設定した情報であり、出力範囲オプション、条件/結果範囲、ユーザ定義ルール活用モード、出力単位、および出力ルール制約といった属性を有するエンティティである。出力範囲オプションは、ルール出力条件設定画面400の出力範囲指定領域410において、ユーザが選択した情報であり、本実施形態では、すべての範囲411、結果定義済み範囲すべて412、ユーザ選択範囲413、結果未定義範囲414、条件範囲指定415、または、結果範囲指定416を識別する情報である。条件/結果範囲は、出力範囲オプションが条件範囲指定415または結果範囲指定416の場合にのみ指定される情報であり、テキストボックス418またはテキストボックス419のいずれかの値である。ユーザ定義ルール活用モードは、ルール出力条件設定画面400のユーザ定義ルール活用モード指定領域420において、ユーザが選択した情報であり、本実施形態では、修正不可421、修正可422、未活用423、または、個別設定424を識別する情報である。出力単位は、ルール出力条件設定画面400の出力単位指定領域430において、ユーザが選択した情報であり、本実施形態では、結果項目単位431または結果項目組合せ単位432を識別する情報である。
【0061】
次に、ユーザ選択ルール802は、ルール出力条件設定画面400の範囲選択ボタン417の押下により表示される画面においてユーザが選択したユーザ定義ルールに関する情報であり、ルールIDといった属性を有するエンティティである。ルールIDは、ユーザが指定したユーザ定義ルールを識別する情報であり、ユーザ定義ルール保持部153に記憶されているユーザ定義ルール701のルールIDのいずれかと一致する。
【0062】
次に、修正可オプション803は、ユーザが修正可オプション設定画面500において設定した情報であり、有効フラグ、評価指標名、評価モジュール名、優先度、ソート、下限、および上限といった属性を有するエンティティである。有効フラグは、ユーザが選択しているか否かを示す情報である。評価指標名は、ユーザが修正可オプション設定画面500の評価指標512の欄に表示される情報である。評価モジュール名は、当該評価指標512に基づき評価処理を実行するモジュールの名称である。このようにすることで新しい評価指標512の導入が容易となる。優先度は、修正可オプション設定画面500の優先度513の欄でユーザが指定する情報である。ソートは、修正可オプション設定画面500のソート514の欄でユーザが指定する情報であり、昇順または降順を識別する情報である。下限は、修正可オプション設定画面500の下限515の欄でユーザが指定する情報である。上限は、修正可オプション設定画面500の上限516の欄でユーザが指定する情報である。
【0063】
次に、個別設定オプション804は、ユーザ定義ルール個別オプション指定画面600において設定した情報であり、ルールID、およびモードといった属性を有するエンティティである。ルールIDは、ユーザ定義ルール個別オプション指定画面600のID611に表示される情報であり、ユーザ定義ルール保持部153に記憶されているユーザ定義ルールデータ702のルールIDのいずれかと一致する。モードは、ユーザ定義ルール個別オプション指定画面600のユーザ定義ルール活用モード613でユーザが選択した情報であり、本実施例では、修正不可614、修正可615、または未活用616を識別する情報である。
【0064】
次に、出力ルール制約805は、ユーザがルール出力条件設定画面400の出力ルール制約指定領域440において設定した情報であり、有効フラグ、オプション名、および制約モジュール名といった属性を有するエンティティである。有効フラグは、出力ルール制約指定領域440において、ユーザが当該出力ルール制約を選択済みであるか否かを示す情報である。オプション名は、出力ルール制約指定領域440に表示される文字列であり、本実施形態では、条件値の否定を許可する441、またはルール間の重複を許可する442である。制約モジュール名は、当該出力ルール制約を実行するモジュールの名称である。このようにすることで、新しい出力ルール制約の導入が容易となる。
【0065】
続いて、
図9を参照して、本実施形態に係る決定表保持部152のデータ構造の例について説明する。
図9に示すように、決定表保持部152は、列ルール901、条件項目設定値902、結果項目設定値903、および関連ルール904といったエンティティを有する。
【0066】
図9において、列ルール901は、決定表300上の1つの列に関する情報であり、列ルールID、および制約フラグといった属性を有するエンティティである。列ルールIDは、決定表300における列を一意に識別する情報であり、決定表保持部152においてユニークである。制約フラグは、ユーザ定義ルールにより組合せとしてあり得ない列ルールであるか否かを示すフラグである。ユーザ定義ルールとして、条件部と結果部の両方を、条件項目を用いて記述することで、あり得る組合せ、あり得ない組合せを表現できる。
【0067】
次に、条件項目設定値902は、決定表300上の1つの列の条件部の情報であり、列ルールID、および要素値IDといった属性を有するエンティティである。列ルールIDは、当該条件項目設定値902を持つ列ルール901の列ルールIDである。要素値IDは、ユーザ定義ルール保持部153の条件項目702に関連する要素値704の属性である要素値IDのいずれかである。条件項目設定値902のエンティティの数は、1つの列ルール901に対して、ユーザ定義ルール保持部153の条件項目702の数と等しい。また、1つの列ルール901に含まれる条件項目設定値902の要素値IDには、ユーザ定義ルール保持部153のすべての条件項目702について、各条件項目702に対応するいずれか1つの要素値IDを含む。
【0068】
次に、結果項目設定値903は、決定表300上の1つの列の結果部の情報であり、列ルールID、および要素値IDといった属性を有するエンティティである。列ルールIDは、当該結果項目設定値903を持つ列ルール901の列ルールIDである。要素値IDは、ユーザ定義ルール保持部153の結果項目703に関連する要素値704の属性である要素値IDのいずれかである。結果項目設定値903のエンティティの数は、1つの列ルール901に対して、ユーザ定義ルール保持部153の結果項目703の数と等しい。また、1つの列ルール901に含まれる結果項目設定値903の要素値IDには、ユーザ定義ルール保持部153のすべての結果項目703について、各結果項目703に対応するいずれか1つの要素値IDを含む。
【0069】
次に、関連ルール904は、列ルール901と関連する情報であり、列ルールID、および、ルールIDといった属性を有するエンティティである。列ルールIDは、当該関連ルール905を持つ列ルール901の列ルールIDである。ルールIDは、列ルールIDで特定される列ルール901の結果項目設定値903の要素値IDの決定に係るユーザ定義ルール701のルールIDである。
【0070】
続いて、
図10を参照して、本実施形態に係る決定表修正ルール保持部151のデータ構造の例について説明する。
図10に示すように、決定表修正ルール保持部151は、決定表修正ルール1001、および条件項目設定値1002といったエンティティを有する。
【0071】
図10において、決定表修正ルール1001は、ユーザが決定表300上で修正した内容に関する情報であり、列ルールID、結果項目ID、および要素値IDといった属性を有するエンティティである。列ルールIDは、ユーザが決定表300上で修正を行った列を識別する情報であり、決定表保持部152の列ルール901の列ルールIDのいずれかである。結果項目IDは、ユーザが決定表300上で修正を行った結果項目を識別する情報である。要素値IDは、ユーザが決定表300上で修正を行った結果項目について修正後の要素値を識別する情報である。決定表修正ルール1001は、決定表300の1つの列における結果項目毎にある。例えば、同一の列であっても、2つの結果項目があり、それぞれの要素値をユーザが修正した場合、決定表修正ルール保持部151は2つの決定表修正ルールを保持する。
【0072】
次に、条件項目設定値1002は、ユーザが決定表300上で修正した1つの列の条件部の情報であり、列ルールID、および要素値IDといった属性を有するエンティティである。列ルールIDは、当該条件項目設定値1002を持つ決定表修正ルール1001の列ルールIDである。要素値IDは、ユーザ定義ルール保持部153の条件項目702に関連する要素値704の属性である要素値IDのいずれかである。条件項目設定値1002のエンティティの数は、1つの列ルール901に対して、ユーザ定義ルール保持部153の条件項目702の数と等しい。また、1つの決定表修正ルール1001に含まれる条件項目設定値1002の要素値IDには、ユーザ定義ルール保持部153のすべての条件項目702について、各条件項目702に対応するいずれか1つの要素値IDを含む。
【0073】
続いて、
図11を参照して、本実施形態に係る出力ルール保持部155のデータ構造の例について説明する。
図11に示すように、出力ルール保持部155は、変更なしルール1101、変更ありルール1102、および追加ルール1103といったエンティティを有する。
【0074】
図11において、変更なしルール1101は、ルール出力部106が変更や削除を加えなかったユーザ定義ルール701に関する情報であり、ルールIDといった属性を有するエンティティである。ルールIDは、ルール出力部106が変更や削除を加えなかったユーザ定義ルール701のルールIDである。
【0075】
次に、変更ありルール1102は、ルール出力部106が変更を加えたユーザ定義ルール701に関する情報であり、ルールID、条件部論理式、および結果部論理式といった属性を有するエンティティである。ルールIDは、ルール出力部106が変更を加えたユーザ定義ルール701のルールIDである。条件部論理式および結果部論理式は、ルール出力部106による変更後のユーザ定義ルール701の条件部論理式および結果部論理式である。
【0076】
次に、追加ルール1103は、ルール出力部106が新規に作成したルールに関する情報であり、追加ルールID、条件部論理式、および結果部論理式といった属性を有するエンティティである。追加ルールIDは、追加ルールを識別する情報であり、出力ルール保持部155においてユニークである。条件部論理式および結果部論理式は、ルール出力部106が作成したルールの条件部および結果部の論理式である。
【0077】
続いて、
図12を参照して、本発明の実施形態に係るルール出力部106の処理について説明する。
図12は、本実施形態に係るルール出力部106の処理例を示すフローチャートである。なお、図中の符号Sはステップを表す(以下本明細書中で同様)。
【0078】
まず、ルール出力部106は、ユーザによる入出力装置180の操作、バッチ処理などにより処理の実行を開始する(S1200)。ルール出力部106は、ユーザ定義ルール保持部153が記憶しているすべてのユーザ定義ルール701を読み込む(S1201)。ルール出力部106は、読み込んだユーザ定義ルール701のうち、条件部論理式が条件項目702に対応する要素値から構成され(結果項目703に対応する要素値を含まない)、かつ、結果部論理式が結果項目703に対応する要素値と論理積から構成される(条件項目703に対応する要素値を含まない)ユーザ定義ルール701(以下、「条件−結果ANDルール」という。)をオリジナルルール集合として記憶する。また、ルール出力部106は、条件部論理式が結果項目703に対応する要素値から構成され(条件項目702に対応する要素値を含まない)、かつ、結果部論理式が結果項目703に対応する要素値と論理積から構成される(条件項目703に対応する要素値を含まない)ユーザ定義ルール(以下、「結果−結果ANDルール」という。)について、当該ユーザ定義ルールの条件部論理式と充足可能なオリジナルルール集合内の結果部論理式を持つルールを検索し、該当するすべてのルールについて、各ルールの条件部論理式と結果−結果ANDルールの結果部論理式から構成されるルールを生成し、修正ルール集合として記憶する。また、ルール出力部106は、読み込んだユーザ定義ルール701のうち、条件部論理式と結果部論理式が共に条件項目702に対応する要素値から構成される(結果項目703に対応する要素値を含まない)ユーザ定義ルール701(以下、「条件−条件ルール」という。)を制約ルール集合として記憶する。ユーザ定義ルールを読み込んだ後、S1202に進む。
【0079】
次に、ルール出力部106は、読み込んだユーザ定義ルール701間の整合性を確認する(S1202)。ユーザ定義ルール701間の整合性の確認方法は、例えば、特許文献1で開示されている。ユーザ定義ルール701間に不整合があると判定した場合、ルール出力部106は、処理を中断する。不整合がないと判定した場合は、S1203に進む。
【0080】
次に、ルール出力部106は、決定表修正ルール保持部151が記憶しているすべての決定表修正ルール1001を読み込む(S1203)。ルール出力部106は、読み込んだ決定表修正ルール1001を修正ルール集合に追加する。決定表修正ルール1001を読み込んだ後、S1204に進む。
【0081】
次に、ルール出力部106は、ユーザ定義ルール701と決定表修正ルール1001の整合性を確認する(S1204)。ユーザ定義ルール701と決定表修正ルール1001の整合性の確認方法は、例えば、決定表修正ルール1001の列ルールIDに対応するユーザ定義ルールが、決定表保持部152の関連ルール904のルールIDに存在するかを確認し、存在すると判定した場合、当該決定表修正ルール1001とユーザ定義ルール701を比較することで整合性を確認する。また、S1202のユーザ定義ルール間の整合性の確認と同様に、特許文献1に開示されている方法により整合性を確認することもできる。ユーザ定義ルール701と決定表修正ルール1001に不整合があると判定した場合、ユーザ定義ルール701と決定表修正ルール1001のどちらを優先するかの確認メッセージを表示する。ユーザ定義ルール701を優先する場合、当該ユーザ定義ルール701と不整合な関係にある決定表修正ルール1001を修正ルール集合から削除する。決定表修正ルール1001を優先する場合、当該決定表修正ルール1001と不整合な関係にあるユーザ定義ルール701の条件部論理式を、当該ユーザ定義ルール701の条件部論理式と当該決定表修正ルール1001の条件部論理式の否定の論理積に置き換える(置き換え後の当該ユーザ定義ルール701の条件部論理式=(置き換え前の当該ユーザ定義ルール701の条件部論理式)∧¬(当該決定表修正ルールの条件部論理式))。ユーザ定義ルール701と決定表修正ルール1001の整合性の確認の後、S1205に進む。
【0082】
次に、ルール出力部106は、ルール出力条件保持部154が記憶しているルール出力条件801を読み込む(S1205)。また、ルール出力部106は、ルール出力条件801に関連するすべてのユーザ選択ルール802、修正可オプション803、個別設定オプション804、および出力ルール制約805を読み込む。
【0083】
次に、ルール出力部106は、ルール出力条件801の出力範囲の条件を満たすルール集合を生成する(S1206)。出力範囲の条件は、ルール出力条件801の出力範囲オプションおよび条件/結果範囲、ユーザ選択ルール802である。どの出力範囲オプションが選択されているかで処理が異なる。以下、各出力範囲オプションのルール出力部106の処理内容を説明する。
【0084】
出力範囲オプションがすべての範囲411の場合、ルール出力部106は、結果が未定義のルールを生成し、修正ルール集合に追加する。結果が未定義のルールの生成方法は、例えば、条件部論理式に結果項目の要素値を含まず、かつ、結果部論理式が結果項目の要素値と論理積演算子のみからなるルールの条件部論理式をオリジナルルール集合と修正ルール集合から抽出し、抽出したルールの条件部論理式の否定を論理積結合した論理式を、条件部論理式とした結果部論理式のないルールとして表現できる。また、決定表保持部152の結果項目設定値が設定されていない列ルールを結果が未定義のルールとして抽出することができる。
【0085】
出力範囲オプションが結果定義済み範囲すべて412の場合、ルール出力部106は、追加の処理を行わない。
【0086】
出力範囲オプションがユーザ選択範囲413の場合、ルール出力部106は、ユーザが選択したユーザ定義ルールおよび決定表300の範囲のルールのみを残し、その他は、オリジナルルール集合と修正ルール集合から削除する。オリジナルルール集合のルールの一部が、ユーザが選択した決定表300の範囲に含まれる(当該ルールの条件部論理式が表す列ルール集合と決定表300の範囲を表す列ルール集合が部分的に一致する)場合、ルール出力部106は、当該ルールをオリジナルルール集合から削除し、決定表300の範囲を表す列ルールから条件部論理式を生成し、当該ルールの条件部論理式を、当該条件部論理式の否定と当該ルールの条件部論理式を論理積で結合した条件部論理式に置き換えたルールを修正ルール集合に追加する。
【0087】
出力範囲オプションが結果未定義範囲414の場合、ルール出力部106は、上述の結果が未定義のルールの生成方法により、結果未定義範囲のルールを生成し、修正ルール集合に追加する。また、ルール出力部106は、オリジナルルール集合に含まれる全ルールと修正ルール集合に含まれる結果未定義範囲のルールとして追加したルールを除き、全ルールを削除する。
【0088】
出力範囲オプションが条件範囲指定415の場合、ルール出力部106は、条件範囲指定415で指定された条件範囲に含まれるオリジナルルール集合と修正ルール集合のルールのみを残し、その他は削除する。オリジナルルール集合のルールの一部が、条件範囲に含まれる(当該ルールの条件部論理式が表す列ルール集合と条件範囲を表す列ルール集合が部分的に一致する)場合、ルール出力部106は、当該ルールをオリジナルルール集合から削除し、条件範囲から条件部論理式を生成し、当該ルールの条件部論理式を、当該条件部論理式の否定と当該ルールの条件部論理式を論理積で結合した条件部論理式に置き換えたルールを修正ルール集合に追加する。
【0089】
出力範囲オプションが結果範囲指定416の場合、ルール出力部106は、結果範囲指定416で指定された結果範囲に含まれるオリジナルルール集合と修正ルール集合のルールのみを残し、その他は削除する。
【0090】
次に、ルール出力部106は、ルール出力条件801のユーザ定義ルール活用モードに基づきルールを仕分ける(S1207)。ユーザ定義ルール活用モードが修正不可421の場合、ルール出力部106は、S1204において修正が加えられたオリジナルルール集合のルールを、オリジナルルール集合から削除し、修正ルール集合に追加する。また、ルール出力部106は、オリジナルルール集合に残っているすべてのルールを削除し、出力ルール保持部155の変更なしルール1101に登録する。ユーザ定義ルール活用モードが修正可422の場合、ルール出力部106は、オリジナルルール集合の全ルールを削除し、修正を許可されたルールを格納する集合である修正可ルール集合に追加する。ユーザ定義ルール活用モードが未活用423の場合、ルール出力部106は、オリジナルルール集合に含まれるすべてのルールを修正ルール集合に追加する。ユーザ定義ルール活用モードが個別設定424の場合、ルール出力部106は、オリジナルルール集合の各ルールに対応する個別設定の情報を確認し、ユーザ定義ルール活用モードが修正不可614であるルールのうちS1204において修正が加えられたルールをオリジナルルール集合から削除し、修正可ルール集合に追加する。また、ユーザ定義ルール活用モードが修正可615であるルールをオリジナルルール集合から削除し、修正可ルール集合に追加する。ユーザ定義ルール活用モードが未活用616であるルールをオリジナルルール集合から削除し、修正ルール集合に追加する。このようにルールを仕分けた後、ルール出力部106は、S1208に進む。
【0091】
次に、ルール出力部106は、ルール出力条件801の出力単位を読み込み、結果項目単位431の場合、S1209に進み、結果項目組合せ単位432の場合、S1210に進む(S1208)。
【0092】
S1209では、ルール出力部106は、結果項目単位のルールを生成する(S1209)。
図13を参照して、ルール出力部106の結果項目単位のルール生成の処理を説明する。
【0093】
図13は、ルール出力部106の結果項目単位のルール生成(S1209)の処理を示すフローチャートである。
【0094】
ルール出力部106は、処理開始後、結果項目について未処理の要素値r_ijを選択する(S1300,S1301)。ここで、r_ijは、結果項目Riのj番目の要素値を表す。未処理の要素値r_ijを選択後、S1302に進む。
【0095】
次に、ルール出力部106は、修正ルール集合から結果部論理式にr_ijを含むルールの条件部論理式を論理和で結合した論理式(以下、「条件部論理和結合式」という。)を生成する(S1302)。条件部論理和結合式は、結果がr_ijとなる条件を表す。条件部論理和結合式を生成後、S1303に進む。
【0096】
次に、ルール出力部106は、条件部論理和結合式をDNF(Disjunctive Normal Form)と呼ばれる標準形に変換した論理式(以下、「条件部DNF式」という。)を生成する(S1303)。条件部DNF式は、条件項目の要素値と論理積からなる部品(以下、「条件部DNF節」という。)を論理和で結合した式である。条件部論理和結合式から条件部DNF式への変換は、例えば、命題論理におけるド・モルガンの法則、分配律などを適用することで実行することができる。また、ルール出力部106は、条件部DNF式の長さが最小となるように変換する。これは、回路設計の分野で利用されている多段論理の最小化のアルゴリズムを活用することで実現できる。条件部DNF式を生成後、S1304に進む。
【0097】
次に、ルール出力部106は、各条件部DNF節を条件部論理式に、r_ijを結果部論理式としたルールを生成し、出力ルール保持部155の追加ルール1103に登録する(S1304)。登録後に、S1305に進む。
【0098】
次に、ルール出力部106は、結果項目Riの未処理の要素値があるか否かを確認する(S1305)。未処理の要素値がある場合(S1305,Yes)、S1301に進み、未処理の要素値がない場合(S1305,No)、結果項目単位のルール生成処理は終了する(S1306)。
【0099】
図12のS1210では、ルール出力部106は、結果項目組合せ単位のルールを生成する(S1210)。
図14を参照して、ルール出力部106の結果項目組合せ単位のルール生成の処理を説明する。
【0100】
図14は、ルール出力部106の結果項目組合せ単位のルール生成の処理を示すフローチャートである。
【0101】
ルール出力部106は、処理を開始後、結果項目に関する未処理の要素値r_ijを選択する(S1400,S1401)。選択後、S1402に進む。
【0102】
次に、ルール出力部106は、修正ルール集合から結果部論理式にr_ijを含むルールの条件部論理式を論理和で結合した論理式(条件部論理和結合式)を生成する(S1402)。条件部論理和結合式を生成後、S1403に進む。
【0103】
次に、ルール出力部106は、結果項目に関する未処理の要素値があるか否かを確認する(S1403)。未処理の要素値がある場合(S1403,Yes)、ステップS1401に進み、未処理の要素値がない場合(S1403,No)、S1404に進む。
【0104】
次に、ルール出力部106は、結果項目の要素値の未処理の組合せ(∧r_ix)を選択する(S1404)。∧r_ixは、各結果項目の要素値を論理積で結合した論理式を表す。この組合せには、要素値が未定義の結果項目を含む。例えば、結果項目R1とR2があり、それぞれ要素値として{r11,r12}{r21,r22}を取り得る場合、結果項目の要素値の組合せとしては、概念的には「未定義」という要素値を含むと考えられるため、それぞれ要素値を3個ずつ持つことになり、組合せは3×3=9通り生じる。結果項目の要素値の未処理の組合せを選択後、S1405に進む。
【0105】
次に、ルール出力部106は、当該組合せの各要素値に対応する条件部論理和結合式を論理積で結合した論理式(以下、「組合せ条件部論理式」という。)を生成する(S1405)。組合せ条件部論理式を生成後、S1406に進む。
【0106】
次に、ルール出力部106は、組合せ条件部論理式の充足可能性を判定する(S1406)。充足可能と判定した場合(S1406,Yes)、S1407に進み、充足不能と判定した場合(S1406,No)、S1404に進む。
【0107】
次に、ルール出力部106は、組合せ条件部論理式をDNFに変換した論理式(条件部DNF式)を生成する(S1407)。条件部DNF式の生成方法は、
図13のS1303と同様である。条件部DNF式の生成後に、S1408に進む。
【0108】
次に、ルール出力部106は、各条件部DNF節を条件部論理式に、∧r_ixを結果部論理式としたルールを生成し、出力ルール保持部155の追加ルールに登録する(S1408)。登録後に、S1409に進む。
【0109】
次に、ルール出力部106は、結果項目の要素値の未処理の組合せがあるか否かを確認する(S1409)。未処理の組合せがあると判定した場合(S1409,Yes)、S1404に進み、未処理の組合せがないと判定した場合(S1409,No)、結果項目組合せ単位のルール生成処理は終了する(S1410)。
【0110】
続いて、
図12の処理フローに戻ると、ルール出力部106は、出力ルール保持部155の変更ありルール1102を生成する(S1211)。
図15を参照して、変更ありルール1102の生成処理を説明する。
【0111】
図15は、本発明の実施形態における出力ルール保持部155の変更ありルール1102の生成の処理を示すフローチャートである。
【0112】
ルール出力部106は、処理開始後、修正可ルール集合から修正が加えられている未処理のルール(以下、この修正可ルール集合の中で修正が加えられているルールを「修正済ルール」という。)を選択する(S1500,S1501)。修正済ルールを選択後、S1502に進む。修正済ルールは、「
図12のS1204においてユーザ定義ルールと決定表修正ルールとの間に不整合があり、かつ、ユーザが決定表修正ルールを優先することを選択した場合に、修正可とされているユーザ定義ルールに修正が加えられたルール」と定義される。
【0113】
次に、ルール出力部106は、修正済ルールの条件部論理式を論理式展開する(S1502)。論理式展開後に、S1503に進む。
【0114】
次に、ルール出力部106は、修正可オプション803の条件を満たすか否かを判定する。修正可オプション803の条件を満たすと判定した場合、ルール出力部106は、当該修正済ルールを修正可ルール集合から削除し、当該修正済ルールの条件部論理式を、論理式展開後の論理式に置き換えたルールを出力ルール保持部155の変更ありルール1102に登録する(S1503)。修正可オプション803の条件を満たさないと判定した場合、ルール出力部106は、当該修正済ルールを修正可ルール集合から削除し、当該修正済ルールの条件部論理式を、論理式展開後の論理式に置き換えたルールを出力ルール保持部155の追加ルール1103に登録する。修正済ルールを変更ありルール1102または追加ルール1103に登録後、S1504に進む。
【0115】
次に、ルール出力部106は、未処理の修正済ルールがあるか否かを確認する(S1504)。未処理の修正済ルールがあると判定した場合(S1504,Yes)、ルール出力部106はS1501に進み、未処理の修正済ルールがないと判定した場合(S1504,No)、S1505に進む。S1501〜S1504の修正済ルールに関する処理では、修正済ルールを論理式展開し、
図5の評価指標に基づいて評価を実施し、修正の度合いが評価指標の許容範囲内であると判定されればそのルールを出力ルール保持部155に登録する。ユーザ定義ルールと決定表修正ルールとの間に不整合がある場合、そのまま修正可ルールを残して登録することはできない。しかし、両者間の不整合の部分を適切に排除することにより、前記集成果ルールを微修正して残すことができることがある。このような微修正で済むかどうかを、
図5の評価指標に照らして判定している。
【0116】
次に、ルール出力部106は、出力ルール保持部155から未処理の追加ルール1103を選択し(S1505)、S1506に進む。
【0117】
次に、ルール出力部106は、当該追加ルール1103と、結果部論理式が一致する修正可ルール集合の各ルールについて、当該追加ルール1103の条件部論理式と修正可ルール集合の当該ルールの条件部論理式の論理和を計算する(計算結果の論理式を「修正後論理式」という。)(S1506)。当該追加ルール1103と、結果部論理式が一致する修正可ルール集合の各ルールについて、修正後論理式を生成した後、S1507に進む。
【0118】
次に、ルール出力部106は、修正可オプション803の条件を満たす修正後論理式がある場合、当該追加ルール1103を削除し、修正可オプション803の条件を満たす修正後論理式の中から、修正可オプション803の優先度に従い、最も優先度の高い修正後論理式を条件部論理式としたルールを出力ルール保持部15の変更ありルール1102に追加する(S1507)。また、ルール出力部106は、追加したルールに対応する修正可ルール集合のルールを修正可ルール集合から削除する。変更ありルール1102に追加後、S1508に進む。また、修正可オプション803の条件を満たす修正後論理式がない場合もS1508に進む。
【0119】
次に、ルール出力部106は、未処理の追加ルール1103があるか否かを確認する(S1508)。未処理の追加ルール1103があると判定した場合(S1508,Yes)、S1505に進み、未処理の追加ルール1103がないと判定した場合(S1508,No)、S1509に進む。
【0120】
次に、ルール出力部106は、修正可ルール集合に残っているルールを出力ルール保持部155の変更なしルール1102に登録し(S1508)、変更ありのルール生成処理を終了する(S1509)。
【0121】
この後、ルール出力部106は、
図12において、ルール出力条件の出力ルール制約805に基づき、出力ルール保持部155の追加ルール1103を更新する(S1212)。例えば、出力ルール制約805として、条件値の否定を許可する441が有効な場合について説明する。この場合、出力ルール保持部155は、追加ルール1103の条件部論理式について、条件項目の取り得る要素値の1つ(r_i1とする)を除いた要素値が論理和で結合されている(r_i2∨r_i3とする)要素を検索し、見つかった場合には当該論理和を¬r_i1に置き換える。ルール出力部106は、出力ルールを更新後、処理を終了する(S1213)。
【0122】
続いて、
図16を参照して、本実施形態に係る出力ルール表示部107における出力ルール表示画面について説明する。
【0123】
図16は、出力ルール表示部107における出力ルールの表示画面の例である。出力ルール表示画面1600は、ID1601、種類1602、条件部1603、結果部1604などの表示項目を備える。ID1601は、当該出力ルールを識別する情報であり、ユーザ定義ルールと一致もしくはユーザ定義ルールに修正が加わったルールは、当該ユーザ定義ルールのルールIDと一致する。種類1602は、当該出力ルールの種類を表し、オリジナルのユーザ定義ルールから修正が加えられているか否か、新規に追加されたものかなどを識別する情報である。条件部1603は、当該出力ルールの条件部であり、オリジナルのユーザ定義ルールと差分がある場合は、その差分を識別する情報を含む。差分を識別する情報は、例えば、差分の箇所に下線を引いたり、他と異なる色にするなど、視覚的に識別できるようにする。また、ユーザの操作により、視覚的に他と異なるようにするか否かを選択可能としてもよい。結果部1604は、当該出力ルールの結果部を表す。差分の特定は、ルールIDが一致するユーザ定義ルール保持部153のユーザ定義ルール701と出力ルール保持部15の変更ありルール1102を比較することで特定できる。このような情報を画面に出力することで、ユーザはどのユーザ定義ルールが修正されたのか、新たに追加されたルールは何か、修正が加わったルールはどの部分に変更が加わったのか、といったことを容易に理解できる。
【0124】
続いて、
図17を参照して、本発明の実施形態に係るルール出力部106の処理の実行例を説明する。
【0125】
図17は、本実施例におけるルール出力部106の処理のインプットとなる情報であり、ユーザ定義ルール1710、決定表修正ルール1720、および決定表1730を含む。ユーザ定義ルール1710は、
図2のユーザ定義ルールデータ230を説明の簡略化のため内部表現の記号で表現している。決定表修正ルール1720は、決定表1730の黒丸「●」部分のルールを内部表現の記号で表現している。決定表1730は、決定表300の条件項目、結果項目、条件要素値、結果要素値を内部表現の記号で表現している。
【0126】
図17に示す例では、ルール出力条件801は、出力範囲オプションが結果定義済み範囲すべて412、ユーザ定義ルール活用モードが修正可422、出力単位が結果項目組合せ単位432、出力ルール制約はなし、と設定されている。また、修正可オプション803の設定は、
図5に示す通りである。
【0127】
上記前提の場合、
図12のS1207の終了時点で、ルール出力部106は、ユーザ定義ルール1710のすべてを修正可ルール集合に追加し、決定表修正ルール1720のすべてを修正ルール集合に追加している。
【0128】
次に、ルール出力部106は、ルール出力条件801の出力単位の確認の結果、S1210の処理を実行する。S1210の処理は、
図14で示す通りである。ルール出力部106は、S1401からS1403の実行により、結果要素値R11とR22に係る以下の2つの条件部論理和結合式を生成する。
【0129】
結果要素値R11に係る条件部論理和結合式:
(C11∧C23∧C32)∨(C12∧C21∧C31)
結果要素値R22に係る条件部論理和結合式:
C11∧C23∧C32
【0130】
次に、ルール出力部106は、S1404からS1406の実行により、以下の組合せ条件部論理式を生成する。
((C11∧C23∧C32)∨(C12∧C21∧C31))∧(C11∧C23∧C32)
【0131】
次に、ルール出力部106は、S1407の実行により、前記組合せ条件部論理式から以下の条件部DNF式を生成する。
C11∧C23∧C32
【0132】
次に、ルール出力部106は、S1408の実行により、以下の条件部論理式と結果部論理式を持つルールを追加ルールに登録する。
条件部論理式:C11∧C23∧C32
結果部論理式:R11∧R22
【0133】
次に、ルール出力部106は、S1409を実行した後、S1211を実行する。S1211の処理は、
図15に示す通りである。
図17に示す例では、修正済ルールが存在しないため、ルール出力部106は、S1501からS1504の処理をスキップする。
【0134】
次に、ルール出力部106は、S1505からS1506の実行により、修正可ルール集合の中から上記追加ルールと結果部論理式が一致するルールを取得する。
図17に示す例では、ユーザ定義ルール1711が該当する。さらに、ルール出力部106は、上記追加ルールの条件部論理式とユーザ定義ルール1711の条件部論理式の論理和を計算し、以下の修正後論理式を生成する。
C11∧(C21∨C23∨C31)
【0135】
次に、ルール出力部106は、S1507において、修正可オプション803に基づき修正後論理式を評価する。
図17に示す例では、修正後論理式は1つであるため、当該修正後論理式が修正可オプション803の条件を満たすかを判定する。各評価指標の評価値を計算すると、追加された要素数は、「C23」が追加されているのみなので「1」であり、下限と上限の条件を満たす。また、削除された要素数は「0」であり、下限と上限の条件を満たす。全体の要素数については下限と上限がないため条件を満たす。よって、修正可オプション803の各評価指標の条件を満たすため、ルール出力部106は、上記修正後論理式を条件部論理式、結果部論理式をR11∧R22とするルールを変更ありルール1102に追加する。
【0136】
次に、ルール出力部106は、残りの処理を実行し、処理を終了する。ルール出力部106の処理終了後に出力ルール表示部107を実行した結果は、
図16に示す通りである。IDが1のルールに修正が加えられ、IDがA1のルールが追加されていることがひと目でわかる。
【0137】
第2の実施形態
次に、本発明の第2の実施形態について説明する。本実施形態では、ユーザが定義したルールの管理を支援する装置の例を説明する。
【0138】
図18は、本発明の第2実施形態に係るルール管理支援装置1800の構成図の例である。本実施形態では、ルール管理支援装置100のうち、決定表300を使用する処理部が省略されており、ユーザ定義ルール入力部101、ルール出力条件指定部105、ルール出力部106、出力ルール表示部107、および出力ルール反映部108などの機能ロジックと、ユーザ定義ルール保持部153、ルール出力条件保持部154、および出力ルール保持部155のデータをメモリ170に保管している。
【0139】
各機能ロジックとデータは、第1実施形態と同様であるため、各機能ロジックとデータの説明は省略する。本実施形態の特徴は、ユーザ定義ルールのみを扱う点である。このような構成により、IF−THEN形式のユーザ定義ルール主体で、ルールを管理できる。実施例1における決定表の修正操作は、ユーザ定義ルールの追加で代替できる。また、ユーザ定義ルール活用モードをユーザ定義ルール毎に個別設定することで、例えば、レビュー後に追加したユーザ定義ルールのみを対象として出力ルールを生成することが可能である。
【0140】
以上説明した本発明の実施形態によれば、根拠情報との追跡性確保、ルール数の最小化を実現しつつ、仕様変更に伴う修正を容易に実行できるようにするルール管理支援装置等を提供することができる。
【0141】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば,上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部を他の構成に置き換えることが可能であり、また、ある実施形態の構成に他の構成を加えることも可能である。