はじめに:ルールエンジン、ルールの作成、ルールのモデリング、ルールのデータ構造の実装などの経験はありません。したがって、私は自分が何をしているのか、または以下で試みたことがベースから大きく外れているかどうかはわかりません。
次の架空のシナリオを保存して処理する方法を理解しようとしています。私の問題を単純化するために、ユーザーがオブジェクトを購入するタイプのゲームがあり、1000の可能なオブジェクトが存在する可能性があり、オブジェクトは指定された順序で特定のグループでのみ購入する必要があるとします。たとえば、私がユーザーであり、オブジェクトFを購入したいとします。オブジェクトFを購入する前に、以前にオブジェクトA OR(B AND C)を購入している必要があります。FとAを同時に購入することも、FとB、Cを購入することもできません。それらは、ルールで指定された順序である必要があります。最初に、次にFを後で。または、最初にB、C、次にFを実行します。私は今のところ、購入間の期間やユーザーの他の特性については気にかけていません。ただ、それらが今のところ正しい順序であるということだけです。
購入するオブジェクトのルールを読み取って、ユーザーの以前の購入履歴と照合できる、潜在的に数千のオブジェクトについてこの情報を保存するための最良の方法は何ですか?
私はこれを試みましたが、A OR(B AND C)などのグループ化を実装しようとして立ち往生しています。これらのテーブルがあるデータベースにルールを保存したいと思います。
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
しかし、明らかに、グループ化せずに結果を処理すると、間違った答えが得られます。可能であれば、過度の文字列解析は避けたいと思います:)。1つのオブジェクトには、以前に必要な購入の数が不明である可能性があります。ルールを処理するためのSQLまたは擬似コードスニペットをいただければ幸いです。:)