RulesEngineは、ビジネスロジックやルール、ポリシーをシステムから抽象化するためのライブラリ/NuGetパッケージです。 これは、ルールをシステムのコアロジック外にストレージに置くことで、ルールの変更がコアシステムに影響を与えないようにすることで非常にシンプルに機能します。
適用可能なシナリオ:
- 入力型と出力型の数は比較的固定されていますが、実行ロジックは頻繁に変わります。
- スイッチ条件は頻繁に変化し、複雑なスイッチ文は置き換えられます。
- 複数の条件やルールが変化するビジネスロジック;
- 規則の自由度が特に高い自由度を必要としないシナリオ。 (この場合、スクリプトエンジンの使用が推奨されます)
RulesEngineのルールはJSONに保存され、ルール(Rules)はラムダ式で表現されます。
GitHubアドレス:ハイパーリンクのログインが見えます。
書類住所:ハイパーリンクのログインが見えます。(個人的にはドキュメントが少し曖昧で、使い方があまり明確に説明されていないと感じます)
まず、新しい.NET Core 3.1コンソールプロジェクトを作成し、nugetコマンドを使ってパッケージをインストールします。以下のように。
新しいルールファイルを作成し:Rules.json出力ディレクトリにコピーします。
構成は以下の通りです:
プログラムを実行してみると、出力は以下の通りです:
customTestのワークフローはC#関数を呼び出してルールを検証します。RulesEngineオブジェクトをインスタンス化する際には通常C#メソッドを実行するためにReSetを追加する必要があることに注意してください。
その中で検証集合は理解しやすい抽象的ですはlocalParamsを使い、ローカル変数のキーワードはlocalParamsで、var name = expressionと簡単に理解できます
完全なコードは以下の通りです。
ソースコードダウンロード:
観光客の皆さん、この投稿の隠された内容を見たい方は、どうぞ 答える
|