質問

プロセス管理アプリであるWebアプリケーションを構築しています。いくつかの異なる従業員タイプに実行するタスクのリストが表示され、それぞれがタスクを完了すると、次の従業員に移動して作業します。

タスク階層はバッチです>ロード>アセンブリ>パーツ>仕事。現在、従業員タイプごとにどのタスクを最初に処理するかを決定するための8つのルールがあります。これらのルールは、パーツのサイズに適用されます。また、パーツの完了が階層にどのように影響するかを示します。たとえば、パーツAが完了すると、バッチ全体が完了します。

とにかく、それはシステムがどのように機能するかのエレベーターピッチです。私が理解しようとしているのは、ルールが変更される可能性があり、より多くのルールが追加される可能性があることを念頭に置いて、これを行う効率的で高速で保守可能な方法です

最初は、DB(sql 2005)にすべての面倒な作業を任せるつもりでしたが、より複雑なルールをDBで実装するのが難しいのではないかと心配しています。そのため、別の方法として、タスクのリストを中間層に引き出してオブジェクトのコレクションを作成し、各ルールをコレクションに適用します。各ルールを単独でT-SQLに変換できることは間違いありませんが、タスクの種類に応じて最大8つの基準で並べ替えるのは面倒です。

中間層のアプローチで得られる利点の1つは、タスクフローを変更できる、より緩やかに制限されたシステムを作成できることです。これは、DBでは考えにくいことです。

では、あなたは何をお勧めしますか?考えもしなかった3番目の選択肢はありますか?

EDIT [1]これをもう少し修飾するために、DBは最初に開発したものから変更されることはありません。

役に立ちましたか?

解決

質問の詳細から判断することは困難です。ただし、ロジックをビジネスロジック(中間)レイヤーに配置すると、バックエンドデータベースに関係なく、ビジネスルールで同じコードを使用し続けることができます。現時点ではT-SQLを指定していますが、将来、非SQL Server環境に移行する可能性はありますか?

他のヒント

どのプラットフォームですか? .NET 3.5では、これを論点とするLinqToSQLを導入しています。戦略パターンを使用して、タスクタイプに基づいて適切なクエリを選択/構築し、LINQにSQLへの変換を実行させることができます。そうすれば、クエリをコードで作成できますが、実際にデータベースで実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top