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);
私は立ち往生しています:(
以下
インタフェースとデータ交換イベント引数で助けてください
ありがとうございます。
私は永続サービスを宣言的に追加しました。正しく動作するかどうかはどうすればよいでしょうか。私は、ワークフローがメモリ内にあり、完了していないことを確信しています。 – ksa
ワークフローを永続化するデータベースを開き、InstanceStateテーブルを確認します。既知のワークフローごとにレコードが必要です。 GetLoadedWorkflows()関数を使用して、ワークフローがメモリ上にあるかどうかを確認できます。存在しない場合は、間違ったワークフローInstanceIdを使用しているか、複数のワークフローランタイムを持ち、ワークフローを開始した場所とは異なるものを使用している可能性があります。 – Maurice
My InstanceStateテーブルが空です。これは、ワークフローが永続化されていないことを意味します。永続化サービスによってインスタンスがデータベースに保存されるときを確認する方法を教えてください。 – ksa