3

ColdFusion にはまだ完全な BPM フレームワーク/ソリューションがないため、拡張と保守が容易な ColdFusion アプリにワークフローをどのようにモデル化しますか?

ビジネス ワークフローは、プログラミング言語にうまく対応するフローチャート以上のものです。例えば:

並行して発生する複数のタスク Y0、Y1、Y2 が続くタスク X をどのようにモデル化しますか。ここで、Y0 は人間のプロセス (入力を待機する必要があります) であり、Y1 は問題が発生する可能性があり、自動再試行が必要になる可能性がある Web サービスです。 、Y2 は自動化されたプロセスです。すべての Y が完了したときにのみ実行されるべきタスク Z が続きますか?

私の考え...

  • 状態を保存/管理/追跡し、頻繁にチェックする必要があるようですcfscheuler
  • cfthread一部のタスクには数日かかる場合があるため (たとえば、ユーザーの確認を待つなど)、あまり役に立ちません。
  • フローが複数の UDF、DB、および CFC に分散されることはすでに想像できます。
  • CFに移植できる他の言語のオープンソースワークフローエンジンはありますか?

あなたの脳力に感謝します。:)

4

2 に答える 2

1

JBossに実行エンジンがあるJavaプロセス定義言語仕様を調べてください。このJavaベースのエンジンを使用するのが最も簡単な解決策であり、概説した問題の多くを解決します。

独自に作成する場合は、有向グラフで状態と遷移、頂点、エッジをモデリングすることになります。そして、これはCiaran Archerが書いたように、ステートマシンのコンポーネントです。最良の永続性アプローチIMOは、シリアル化を介してワークフローを介して送信されているデータのバージョンをキャプチャし、現在の状態、および状態間の遷移とそのデータへの変更の履歴をキャプチャすることです。このメカニズムには、おそらく、そのワークフローに対して次のアクションを実行する責任があるのは誰かまたは何であるかを追跡する方法が必要です。

あなたの質問に基づいて、考慮すべきことの1つは、ソリューションで並列タスクを実際に表す必要があるかどうかです。代わりに、一連のメッセージをキューに入れてから、それらすべてが完了するまで待機状態を指定できる場合があります。実際の並列処理を表すことは、いくつかの異なるプロセスを通じて同時にデータを移動していることを意味します。その場合、それらが再び結合するときに、デルタを解決するためのアルゴリズムが必要になります。これは非常に簡単な作業ではありません。

ColdFusionと実行しようとしていることのコンテキストで、作成しているシステムが他のシステムをポーリングする必要がある場合は、スケジュールされたタスクが必要になることがあります。シリアル化フォーマットとしてWDDXを検討してください。JSONは、魅惑的に単純ですが、数字と日付の周りにいくつかのエッジケースがあり、悲しみを引き起こす可能性があることを思い出します。

最後に、いくつかの追加の考えについて、この質問に対する私の答えを参照してください

于 2011-07-14T12:29:22.663 に答える
1

頭のてっぺんから、状態がデータベースに永続化される状態設計パターンについて考えています。Head First Design Patternsの Gumball Machine の例をご覧ください。

通常、これは、何か (クライアント / 注文 / など) の状態が何度も変化する場合に機能します。

現在の状態に応じて、オブジェクトにさまざまなことが起こります。これは、ユーザーが手動でフラグを更新するのをデータベーステーブルに座って待っていることを意味する場合があります。

他の言語に関して言えば、Grails には利用可能なワークフロー モジュールがあることを私は知っています。CF に移植した方が良いのか、それとも Grails に移行した方が良いのか (仕事に適したツールなど) はわかりません。

単なる思いつきです、参考になれば幸いです。

于 2011-07-14T06:56:27.523 に答える