私は、州の基準に基づいてさまざまな種類の補償範囲を使用して保険の見積もりを生成するプログラムを開発しました。ここで、「ルール」を指定する機能を追加したいと考えています。たとえば、3 種類のカバレッジ (UM、BI、PD と呼びます) があるとします。一部の州では PD を BI よりも大きくすることを許可しておらず、他の州では BI なしで UM の存在を許可していません。そのため、ユーザーがこれらのルールを作成できる機能を追加して、見積もりが生成されたときにルールが守られるようにし、プログラムが見積もりを生成するときに州の規制に違反しないようにしました。
問題
ユーザーが競合するルールを選択できるようにしたくありません。ユーザーは、VB の数学演算子 (>、<、>=、<=、=、<>) のいずれかを選択して、いずれかの側にカバレッジを設定できます。これを複数回行うことができるため (ただし、一度に 1 回のみ)、次のようなルールのリストになる可能性があります。
- A > B
- B > C
- C > A
ご覧のとおり、最後のルールは以前に設定されたルールと競合しています。これに対する私の解決策は、ユーザーが「ルールをリストに追加」をクリックするたびにリストを検証することでした。
3 番目のリスト アイテムはまだリストに含まれていないが、ユーザーが [ルールの追加] をクリックしてリストに追加したとします。検証プロセスでは、最初に両方の入力変数が同じ行で既に使用されているかどうかを確認します。そうでない場合は、作成済みのリストで左側の入力変数 (この場合は「C」) を検索します。見つかった場合は、tmp1 を一致の向かい側の変数 (tmp1 = 'B') に等しく設定します。次に、右側の入力変数 (この場合は「A」) に対して同じことを行います。次に、tmp2 が A の向かい側の変数と等しくなるように設定されます (tmp2 = 'B')。tmp1 と tmp2 が等しい場合、着信規則は競合しているか、使用されている演算子に関係なく無関係です。3 つの変数を考えると、これは確固たる論理であると確信しています。でも、追加の変数を追加すると、検証を簡単にバイパスできることがわかりました。任意の状態で 10 を超えるカバレッジ タイプが存在する可能性があるため、3 つ以上を検証できることが重要です。
任意の数の変数を指定して健全な検証を行う統一された方法はありますか? どんなアイデアや考えでも大歓迎です。私の説明が理にかなっていることを願っています。ありがとう