2012-02-26 5 views
0

2つの受信アクション(開始と終了)を持つワークフロー(添付画像)があります。 両方のアクションは、WorkflowIdパラメータに関連付けられます。私はまた、FinishWorkflow(ブール)パラメータを持っています。2つの異なるアクションからワークフローサービスを開始/終了します

開始アクションを使用してワークフローを開始してから、(FinishWorkflowアクションを使用して)FinishWorkflowパラメータがtrueに変更されるまで待っていました。

FinishWorkflowアクションが完了すると、ワークフロー全体が終了するので、StartWorkflowアクションはFinishWorkflowパラメータを確認してチェックしません。 FinishWorkflowアクションを変更してワークフロー全体を終了させないように知っていますか?

TIA

enter image description here

+0

あなたの質問は、あなたが解決したいことを知らずに理解するのは難しいです。プラットフォームのアップデート1にはステートマシンがあることは知っていますか?私はそれが大好きです。トリガー、トランジション、ステートなど。 – rfcdejong

答えて

3

はい、あなたのシナリオを理解するのは少し難しいです。あなたのスタートワークフローはなぜピック内にあるのですか?ワークフローの開始操作をキャンセルする予定ですか?

もちろん、ワークフローの開始 - >いくつかの作業 - >ワークフローの終了という順序を持つこともできますが、これはあなたのシナリオが単純すぎるためです。

はおそらくあなたがあなた自身に尋ねるべきであることである

私の終了操作を呼ん人/コードは、プロセスが終了したり、通話が終了することを(あなたはそれを実装する方法に応じて)することができることを通知しますどのよう

後でやり直す必要がありますか?

片方向メッセージングを使用しているため、上記のいずれにも当てはまらない場合は、「FinishWorkflow = false」に設定された条件でFinishWorkflowをwhileループ内に保つことです。 FinishWorkflow変数の後の最後の呼び出しはtrueに設定されます。次に、インナーピック、ブランチ2、ディレイなどを取り除くことができます。必要なピックは、開始とブランチの後にあります。中には終了が含まれ、ブランチ2には、完了したら、終了ワークフロー変数をtrueに設定します。

Receiveアクティビティは現在のブランチをブロックしてメッセージを待つことを覚えておいてください。実際には遅れて値をチェックするのに遅延は必要ありません。あなたのアクティビティは不必要に目を覚まして入力を探します何もなかったとき。非常に高価でスケーラビリティがありません。

+0

ループ全体をループ内に置くことでこれを解決しました。 – Jarek

関連する問題