2011-03-25 4 views
1

MVC 3アプリケーションで永続化可能なワークフローを実行していますが、うまくいきますが、ワークフローが完了するとWorkflowApplicationCompletedExceptionがスローされます。ワークフローは正常に完了し、最後に実行されたアクションとインスタンスがデータベースから削除されます。MVCで持続可能なワークフロー - 実行時に例外が発生しました

私は今まで答えを探していなかったので、例外の原因となっているアイデアは高く評価されます。私の現在の回避策は例外をキャッチして、OnCompleted-Eventのためにそこに自分のものを置くことです。

私は単純にWorkflowApplicationを作成し、読み込んでブックマークを再開します。

ヒントやご意見をいただければ幸いです。 おかげ

application.Load(new Guid(basket.StandardFields.Settings)); 
application.ResumeBookmark(application.GetBookmarks().First().BookmarkName, WorkflowInputs); 


application.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e) 
{ 
    if (e.Bookmarks != null && e.Bookmarks.Count > 0) 
    { 
     _viewName = e.Bookmarks[0].BookmarkName; 
    } 

    syncContext.OperationCompleted(); 
    return PersistableIdleAction.Unload; 
}; 

application.Completed = delegate (WorkflowApplicationCompletedEventArgs e) 
{ 
    CompleteWorkflow(syncContext); 
}; 

application.SynchronizationContext.OperationStarted(); 

try 
{ 
    application.Run(); 
} 
catch(WorkflowApplicationCompletedException) 
{ 
    CompleteWorkflow(syncContext); 
} 

編集

application.ResumeBookmark(ブックマーク、WorkflowInputs)はワークフローを開始し、活動を完了し、私は実行を呼び出すときに、それはそれはすでに完了しています不平を言うようです。しかし、ワークフローが再開されたときに実行を呼び出さなければ、ブラウザは決して情報を取得せず、リフレッシュさえも待機状態から外すことができないため、無限に待っていると思います。

答えて

1

ResumeBookmarkを使用すると、Runを後で呼び出す必要はありません。私は前に間違った場所でやっていたと思うので、ワークフローが乱れましたが、今はうまくいっているようです。

0

MSDN

は インスタンスが完了したので、ワークフロー インスタンス上の操作が有効でないとき がスローされる例外を表します。

表示されたコードは有効です。ただし、完了した状態に入ったワークフローを再開しようとしています。再開しようとしているワークフローのCompletedプロパティを確認する必要があります。 InvalidOperationExceptionをスローすると、これが起こっている場所がわかります。

問題の場所がわからない場合は、ワークフローが正しくブックマークされていない可能性があります。そのコードはブックマークを作成しているアクティビティにあるので、正しく実行されているかどうかはわかりません...

+0

ありがとう、私は仕事中に戻ってきたときにそれを試してみます。私はそれがブックマークを再開し、ワークフローの次のアクションを完了するが、とにかく例外をスローすると奇妙だと思う。 – Nischo

+0

@nischo hmmm、私はあなたのエラーが他の場所にあると思う...あなたはデバッグして見つける必要があるそれが起こったときに何が起こっているのかを調べてみましょう。 – Will

+0

今、私は混乱しています...それはresumebookmarkがワークフローを開始するようですが、何とか実行する必要があるか、バック? – Nischo

関連する問題