2009-07-24 11 views
2

ExternalDataExchangeServiceを使用してイベントを呼び出そうとするとエラーをスローするワークフローアプリケーションがあります。ID「xxxxx」のワークフローが状態永続ストアに見つかりません

ID「866568ab-ca1b-4404-a2f1-2c8704539ef4」のワークフローは、状態永続ストアに見つかりません。

インスタンスID「866568ab-ca1b-4404-a2f1-2c8704539ef4」のイベントタイプ「RecipeChangeService.IRecipeChangeService」のイベント「QAEngOrTLReject」は配信できません。ここで

はそれのための私の実装コードである -


public class RecipeChangeService : IRecipeChangeService{ 
     #region IRecipeChangeService Members 

     public event EventHandler QAEngOrTLApprove; 

     public event EventHandler QAEngOrTLReject; 

public bool QAEngOrTLApproved(Guid instanceId, ResponseDataObject rdo) { 
      if (QAEngOrTLApprove != null) { 
       QAEngOrTLApprove(this, new XMESWFRecipeResponseDataEventArgs(rdo, instanceId)); 
       return true; 
      }return false; 

     } 

     public bool QAEngOrTLRejected(Guid instanceId, ResponseDataObject rdo) { 
      if (QAEngOrTLReject != null) { 
       QAEngOrTLReject(this, new XMESWFRecipeResponseDataEventArgs(rdo,instanceId)); 
       return true; 
      } return false; 
     } 
} 

[Serializable] 
    public class XMESWFRecipeResponseDataEventArgs : ExternalDataEventArgs { 
     public readonly ResponseDataObject rdo = null; 
     public XMESWFRecipeResponseDataEventArgs(ResponseDataObject rdo, Guid instanceId) 
      : base(instanceId) 
     { 
      this.rdo = rdo; 
     } 
    } 

イベントを使用して発生します - -



IRecipeChangeService s = 
        ExceptionServices.GetExceptionService(WorkflowExceptionType.RecipeChange) 
        as IRecipeChangeService; 
    s.QAEngOrTLApproved(new Guid(instanceId), rdo); 

私は立ち往生しています:(

以下

インタフェースとデータ交換イベント引数で助けてください

ありがとうございます。

答えて

3

私たちは喜んでコードを読んでくださいル。

ワークフローが見つからないさまざまな理由が考えられます。まず、パーシスタンスサービスがなく、ワークフローがメモリにない場合にも、このエラーが表示されます。チェックするもう一つのことは、ワークフローがまだ完了していないかどうかです。これは、他の何らかのイベントの結果として、または未処理のエラーが原因である可能性があります。

+0

私は永続サービスを宣言的に追加しました。正しく動作するかどうかはどうすればよいでしょうか。私は、ワークフローがメモリ内にあり、完了していないことを確信しています。 – ksa

+0

ワークフローを永続化するデータベースを開き、InstanceStateテーブルを確認します。既知のワークフローごとにレコードが必要です。 GetLoadedWorkflows()関数を使用して、ワークフローがメモリ上にあるかどうかを確認できます。存在しない場合は、間違ったワークフローInstanceIdを使用しているか、複数のワークフローランタイムを持ち、ワークフローを開始した場所とは異なるものを使用している可能性があります。 – Maurice

+0

My InstanceStateテーブルが空です。これは、ワークフローが永続化されていないことを意味します。永続化サービスによってインスタンスがデータベースに保存されるときを確認する方法を教えてください。 – ksa

関連する問題