私は、「A Disallows B」または「X Requires Y」という形式のルールを使用して、複雑なアイテムを構成できるアプリケーションを作成するソフトウェアを開発しています。
より完全に説明するために、いくつかのサブフォルダーを持つレベルのフォルダーがあり、それらのサブフォルダーのそれぞれにいくつかのアイテムがあると想像してください。その意図は、ユーザーが有効な選択のコレクションを作成するのに役立つ方法でアイテム間の関係を表現することです。
したがって、実際のルールは「All(A, B, C) Disallows Any(X, Y, Z)」に似ており、ユーザーが A、B、および C を選択した場合、X のいずれも選択できないことを示しています。 Y、または Z。基本的には単なるブール論理です。
A を選択した場合は B も選択する必要があるなど、追加のタイプがありますが、そのすべての詳細に入る価値はありません。
これはビジネス ロジックではなく (少なくとも通常の意味では)、ルールはいつでも変更される可能性があるため (変更される可能性があります)、文字列から読み取って解釈するか、複雑なデータベース構造を介して接続する必要があります (から離れることを好む)。
本当のポイントは、この種の実行時の動作を扱う何らかのシステムまたはフレームワークが存在するかどうかです。Oracle には、私が話していることを正確に実行する「Oracle Configurator」と呼ばれるものがあることは知っていますが、法外に高価だと思います。
プロジェクトはほぼ終了し、「動作する」システムを構築しましたが、事後分析を行って、より良く/より速く/より安く行うことができたかどうかを確認しようとしています.