質問
たとえば、システムは顧客の注文を処理します check identification
-> validate order context
-> make order
. 。しかし、システム管理者は実行時にフローを変更することができ、管理者は「」をスキップすることができます。validate order context
”.
私の質問は、システムが同時注文要求を処理しているかどうかです。 いつ システムはフロー変更を適用する必要がありますか?
a):次の新しい注文要求まで変更を適用します。
b):リクエストが処理されていても、すぐに変更を適用します。硬すぎるように聞こえます。
c):たとえば、特定の時間まで変更を適用します。たとえば、変更は00:00:00に適用されます。それは良い戦略だとは思わない。
状況のベストプラクティスは何ですか? JBMPフレームワークを使用してワークフローを制御する場合、そのような場合にどのような戦略を使用できますか?ありがとう!
解決
3つのオプションはすべて有効です。正しい選択は、あなたが解決している問題に依存します。ここではいくつかの例を示します。
- 次の新しい注文から変更を適用します。これは、新しいワークフローで段階的に段階的になりたい場合に適したオプションです。これを「現在のワークフローで現在の作業を終了するが、すべての新しい作業は新しいワークフローを使用する」と説明するかもしれません。
- すぐに変更を適用します。これは、すべての作業(現在および新しい両方の両方)に使用されるクレクチワークフロー(それによって、私は新しいワークフローを意味する)をより重要である場合に良いオプションです。この1つの例は、「ワークフローから不必要なステップを削除した」かもしれません。
- CertIn時間から変更を適用します。これは、このように説明できる状況での良いオプションです。「今日は古いワークフローを使用していますが、明日は新しいワークフローを使用し始めます」。
他のヒント
次のワークフロー(つまり、注文)に適用する最初のオプションは、同時性の観点から最も安全です。 これが私がすることです あなたはステートフルなオブジェクトを妨害しておらず、それは観察者にとって何が起こったのか非常に明確であるからです。
2番目のオプションでは、既存のワークフローをロックする必要があります。 validate order context
州。そして、もしあれば、それをその状態から正しく移動することを解決するためのアルゴリズムを書きます。
最後に、最後のオプションは、実際に最初の2つをスケジュールするだけです。そのため、いずれかに組み込まれる可能性があり、ビジネスルール(IE要件)によって駆動される必要があります。