16

よくわかりません。私は自分の会社のためにgrailsベースの内部ツールを開発しています。このツールの1つのコンポーネントは、単純な課題追跡システム(ヘルプデスク機能)です。Problem、Question、NewFeatureなどのドメインオブジェクトがあります。これらのドメインクラスにはそれぞれ異なるワークフローがあります。

私の最初のアイデアは、ドメインオブジェクト内で独自のステートマシン機能をロールすることでした。次に、ステートマシンエンジンとワークフローエンジンをグーグルで検索しました。そして今、私は迷子になっています。

他の開発者がこの問題をどのように解決したかについてコメントをお願いします。Drools、Jbpm、Activitiを使用していますか?または、より単純なステートマシンエンジンですか?

Drools、Jbpmのドキュメントを読んでいます。彼らはとても素敵に見えます。しかし、これらのライブラリが提供する機能のごく一部しか必要ないようです。

これにはGrailsを使用していますが、もちろんJavaライブラリも簡単に使用できます。

4

3 に答える 3

17

ワークフロー エンジンの主な価値は、何らかのワークフロー定義 DSL を介してフローをカスタマイズできることです。ユーザーが独自の任意のワークフローを定義することを許可する必要がない場合は、独自のワークフローを作成する方がよいでしょう。

また、ワークフロー エンジンは通常、非常に長時間実行されるビジネス トランザクションとルールを定義する機能を提供します。たとえば、購入注文を承認するためのワークフローを作成できます。最初のステップは、購入する必要があるものに関する情報を入力することです。次に、購入が 100 ドル未満の場合は、すぐに大丈夫です。 100 ドルから 2000 ドルの間であれば、ライン マネージャーは大丈夫です。それ以上の場合は、承認のために他の人に送信します...など。この種のビジネス ルールは、金額が増加したり、会社のビジネス ポリシーが変更されたりするにつれて、何年にもわたって変化する傾向があります。変化する。したがって、これらのシナリオでワークフロー エンジンを使用することは理にかなっています。ワークフロー エンジンの恩恵を受けることができる複雑なビジネス トランザクションの他の良い例は、保険金請求、ローンや住宅ローンの承認、

ルール エンジンは、複雑ではあるが変化するルールをアプリケーションから抽出するのに適しています。米国、カナダ、英国、ドイツ、およびフランスの顧客に出荷するオンライン小売業者であるとします。オンライン ショップで販売する商品に税金を請求する必要がありますが、税金の計算ルールは国によって、また国内の州によって異なります。また、ある州では税金が免除されていても、他の州では免除されていないものもあります。ルール エンジンは、政府が税制を変更するたびに変更される可能性がある、この種の複雑なビジネス ルールに最適です。ルールエンジンは正しい方法で答えを出すことができます。ルールエンジンに行って、ルール #10 を実行したいと言うだけです。これがルール #10 の x、y、z の入力であり、答えが返されます。

ルール エンジンとワークフロー エンジンの主な違いは、ルール エンジンはトランザクションの状態を追跡せず、提供された入力に対してのみステートレスで動作する必要があることです。ワークフロー エンジンはステートフルです。ワークフローの現在の状態を認識し、その状態をデータベースに保存する必要があります。ワークフロー エンジンは、人やシステムなどの外部ソースからの入力も待機します。

アプリについて説明していることから、チケットの次の状態を計算し、クラスが十分に文書化され、数年で簡単に更新できるようにするために、いくつかのグルーヴィーなクラスを作成するだけです。ルール エンジンとワークフロー エンジンは、あなたの状況ではやり過ぎだと思います。それらをセットアップして使用するのにかかる時間は、コードを groovy で記述するのにかかる時間よりもはるかに長くなります。時間の経過とともにルール エンジンとワークフロー エンジンの複雑さが必要であることがわかった場合は、今ではなくそのときに代価を支払うことになります。シンプルに保つことが常に最良の選択です。

于 2012-08-17T07:45:31.413 に答える