2

ドキュメントのライフサイクルを管理するためのビジネス ロジックがあります。
これは、Workflow Foundation 4 と WF Persistence を使用して実装されます。ワークフローの実行中に、特定のブックマークがワークフローに作成され、スケジュールされたタスクが定期的にすべての特定のブックマークを見つけて、ワークフローを再開します (実行中のアクティビティは、ワークフローを後で再開できるように、いくつかの処理を実行し、ワークフローを再度ブックマークします。 )

ワークフローの実行中のインスタンスの一部で、次のエラーが表示されます。

System.Runtime.DurableInstancing.InstanceNotReadyException が処理されませんでした
  Message=インスタンス '99ce9413-5b17-4de0-a453-46891509e032' がまだインスタンス ストアに永続化されていないため、InstancePersistenceCommand の実行が中断されました。
  Source=System.Runtime.DurableInstancing
  スタックトレース:
       System.Runtime.AsyncResult.End[TAsyncResult] (IAsyncResult の結果) で
       System.Runtime.DurableInstancing.InstancePersistenceContext.OuterExecute (InstanceHandle initialInstanceHandle、InstancePersistenceCommand コマンド、トランザクション トランザクション、TimeSpan タイムアウト) で
       System.Runtime.DurableInstancing.InstanceStore.Execute (InstanceHandle ハンドル、InstancePersistenceCommand コマンド、TimeSpan タイムアウト) で
       System.Activities.WorkflowApplication.PersistenceManager.Load (TimeSpan タイムアウト) で
       System.Activities.WorkflowApplication.LoadCore (TimeSpan タイムアウト、ブール値の loadAny) で
       System.Activities.WorkflowApplication.Load (Guid instanceId、TimeSpan タイムアウト) で
       System.Activities.WorkflowApplication.Load (Guid instanceId) で

以前は、同じインスタンスが正常にロードされていました。

この例外に関連する質問がいくつかあります。

  • この例外はいつ取得できますか?
  • この例外が発生した場合、後で同じインスタンスを再開できるように適切に処理する方法はありますか?
  • また、この例外のために再開できなかった既存のワークフロー インスタンスを修正する方法はありますか?
4

1 に答える 1

1

これは、ワークフローに一貫して変更を加えている開発マシン上ですか? 以前にこのエラーを受け取ったことがあり、永続化データベースを消去する必要がありました。これを行うスクリプトを次に示します。

use [AppFabricPersistenceStore]

set nocount on

declare @InstanceId uniqueidentifier
declare @SurrogateInstanceId bigint

declare csr cursor fast_forward for
    select InstanceId from [System.Activities.DurableInstancing].Instances

open csr
fetch next from csr into @InstanceId

while @@fetch_status = 0
begin
    (
        select @SurrogateInstanceId = SurrogateInstanceId
        from [System.Activities.DurableInstancing].InstancesTable i
        where i.Id = @InstanceId
    )

    execute [System.Activities.DurableInstancing].DeleteInstance @SurrogateInstanceId

    fetch next from csr into @InstanceId
end

close csr
deallocate csr

これがうまくいくかどうか教えてください!

于 2012-02-15T19:02:04.713 に答える