私たちの状況では、競合他社のファイルからパラメトリック形状をインポートする必要があります。画面とデータ フィールドのレイアウトは似ていますが、変換プロセスが存在するほど十分に異なっています。さらに、6 社以上の競合他社があり、コードのみでメンテナンスを行うとなると、悪夢のような作業になります。それらのほとんどは、テーブルを使用して形状のパラメーターを格納するため、X を Y に変換するためのオブジェクトの汎用コレクションを作成しました。
私の CAD/CAM アプリケーションでは、ファイルのインポートはコマンドです。ただし、変換マジックは、次の手順を介してルールセットによって行われます。
- データをテーブルにインポートします。形式によっては、フィールド名も取り込まれます。
- テーブルを RuleSet に渡します。ルールセットの構造については後ほど説明します。
- ルールセットは、データを取得した新しいオブジェクト (またはテーブル) のセットに変換します。
- 結果を残りのソフトウェアに渡します。
RuleSet は一連のルールで構成されます。ルールには別のルールを含めることができます。ルールには、テストする CONDITION と MAP TABLE があります。
MAP TABLE は、入力フィールドを結果のフィールド (またはプロパティ) にマップします。1 つのマッピングまたは複数のマッピングが存在する可能性があります。マッピングは、入力値を出力フィールドに突っ込むだけである必要はありません。計算と文字列連結の構文もあります。
この構文は条件でも使用され、([INFIELD1] & "-" & [INFIELD2])="AB" または [DIM1] + [DIM2] > 10 のような複数のファイルを組み込むことができます。入力フィールド。
ルールには他のルールを含めることができます。これが機能する方法は、サブ ルール マッピングがその条件とその親 (または親) の条件の両方を適用するために真でなければならないということです。subRule に親のマッピングと競合するマッピングがある場合、subRule Mapping が適用されます。
同じレベルの 2 つのルールに true の条件があり、マッピングが競合している場合、より高いインデックス (ツリー ビューを表示している場合はリストの下位) のルールにマッピングが適用されます。
ネストされたルールは AND に相当し、同じレベルのルールは OR に相当します。
結果は、必要な出力に変換するために入力データに適用されるマッピング テーブルです。
UIに表示されるのは友好的です。つまり、ルール階層を示すツリービューと、ルールのマッピング テーブルと条件を示すサイド パネルです。同様に重要なのは、一般的なルール構造を自動化するウィザードを作成できることです。