私は偏見があり、ruoteの作者の一人です。
バリアント1)リソース(ドキュメント、注文、請求書、本、家具)に接続されたステートマシン。
バリアント2)タスクという名前の仮想リソースに接続されたステートマシン
バリアント3)ワークフロー定義を解釈するワークフローエンジン
これで、質問に「BPM」というタグが付けられ、「ビジネスプロセス管理」に拡張できます。そのような管理は、各バリアントでどのように行われますか?
バリアント1では、ビジネスプロセス(またはワークフロー)がアプリケーションに分散しています。リソースに接続されたステートマシンは、ワークフローのいくつかの側面を実施しますが、リソースに関連する側面のみを実施します。同じビジネスプロセスに従って、独自のステートマシンを持つ他のリソースが存在する場合があります。
バリアント2では、ワークフローをタスクリソースに集中させ、そのリソースの周りのステートマシンで表すことができます。
バリアント3では、ワークフローは、ワークフロー定義(またはビジネスプロセス定義)と呼ばれるリソースを解釈することによって実行されます。
ビジネスプロセスが変わるとどうなりますか?ビジネスプロセスが管理可能なリソースであるワークフローエンジンを持つことは価値がありますか?
ほとんどのステートマシンライブラリには、1つのセット状態+遷移があります。ワークフローエンジンは、ほとんどがワークフロー定義インタープリターであり、複数の異なるワークフローを一緒に実行できます。
ワークフローを変更するコストはいくらですか?
バリアントは相互に排他的ではありません。ワークフローエンジンが複数のリソースの状態を変更する多くの例を見てきましたが、そのうちのいくつかはステートマシンによって保護されています。
また、ヒューマンタスクにはバリアント3 + 2を頻繁に使用します。ワークフローエンジンは、プロセスインスタンスを実行するときのある時点で、タスク(ワークアイテム)を人間の参加者に渡します(リソースタスクが作成され、状態「準備完了」になります)。 。
バリアント2(タスクマネージャーバリアント)だけで大いに役立つことができます。
ステートマシンやワークフローエンジンがなく、ビジネスプロセスがアプリケーションに分散しているか、ハードコーディングされているバリアント0)についても言及できます。
多くの質問をすることができますが、答えを読むのに時間がかからず、試して実験するのに時間がかからない場合は、それほど遠くまで行かず、いつ使用するかについての才能を獲得することはありません。これまたはあのツール。