으로 고정 된 우리는 워크 플로 기반을위한 자체 워크 플로 지속 계층에서 작업합니다.더 복잡한 프로젝트의 일환으로 워크 플로 지속성 (자체 공급자)
로드가되어 실행이 중단되었지만 사용할 수없는 워크 플로 만 다시 가져 오는 문제가 있습니다. 나는 어딘가에 갇혀 있고 어디를 보지 못한다.
내가로드 워크 플로우 I는 다음과 같이로드 : 이것은 좋은 모습
WorkflowApplication wf2App = new WorkflowApplication(new WorkflowInstanceStoreTestsSimplePersistence());
wf2App.InstanceStore = store;
wf2App.Load(wfApp.Id);
- 내가 다시 워크 플로를 얻을. 나는 핸들러를 연결하고 Run()을 할 때 ... ...
... 중단.
이유는 :
현재 작업 항목을 처리하는 중에 오류가 흐름이 중단 발생했다. 자세한 내용은 내부 예외를 참조하십시오.
내부 예외이다 : {스키마 - 마이크로 소프트의 COM : System.Activities.Persistence/명령 URN} SaveWorkflow InstanceStore의
지속성 공급자 이행 명령 명명을 지원하지 않는다. 다른 제공 업체를 선택하거나이 지속성 명령이 시도되지 않았습니다 ( ).
실제 문제는 제 구현에서이를 볼 수 없다는 것입니다. 나는 단순히 오류를 반환하지 않으며 오류없이 명령 핸들러에 대한 모든 호출이 반환됩니다.
스택 추적 중 helpfull되지 않습니다
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.Runtime.DurableInstancing.InstancePersistenceContext.ExecuteAsyncResult.End(IAsyncResult result)
at System.Runtime.DurableInstancing.InstancePersistenceContext.EndOuterExecute(IAsyncResult result)
at System.Runtime.DurableInstancing.InstanceStore.EndExecute(IAsyncResult result)
at System.Activities.WorkflowApplication.PersistenceManager.EndSave(IAsyncResult result)
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.OnPersisted(IAsyncResult result)
at System.Runtime.AsyncResult.SyncContinue(IAsyncResult result)
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.Persist()
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.CollectAndMap()
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.Track()
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.EnsureProviderReadyness()
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult.InitializeProvider()
at System.Activities.WorkflowApplication.UnloadOrPersistAsyncResult..ctor(WorkflowApplication instance, TimeSpan timeout, PersistenceOperation operation, Boolean isWorkflowThread, Boolean isInternalPersist, AsyncCallback callback, Object state)
at System.Activities.WorkflowApplication.BeginInternalPersist(PersistenceOperation operation, TimeSpan timeout, Boolean isInternalPersist, AsyncCallback callback, Object state)
at System.Activities.WorkflowApplication.OnBeginPersist(AsyncCallback callback, Object state)
at System.Activities.Runtime.ActivityExecutor.PersistenceWaiter.PersistWorkItem.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
내 모든 명령 작업은 TryCommand에 대한 InstanceStore 재정에 있고 그것은 단지 오류없이 작동합니다.
무효 프로
cessSaveWorkflow (InstancePersistenceContext context, SaveWorkflowCommand command)
{
if (command.CompleteInstance)
{
DataStore.DeleteInstance(context.InstanceView.InstanceId);
DataStore.DeleteInstanceAssociation(context.InstanceView.InstanceId);
return;
}
if (command.InstanceData.Count > 0 || command.InstanceKeyMetadataChanges.Count > 0)
{
if (!DataStore.SaveAllInstanceData(context.InstanceView.InstanceId, command))
{
DataStore.SaveAllInstanceMetaData(context.InstanceView.InstanceId, command);
}
if (command.InstanceKeysToAssociate.Count > 0)
{
foreach (var entry in command.InstanceKeysToAssociate)
{
DataStore.SaveInstanceAssociation(context.InstanceView.InstanceId, entry.Key, false);
}
}
return;
}
}
과 문제 (내가 여기에 게시하지 않습니다 jsut 데이터 저장소 호출)없이 작동 :
SaveWorkflowCommand의 핸들러입니다.
나는 hinking을 시작합니다. ok 상태를 설정하는 것을 잊어 버릴 수도 있지만, Pro WF (4.0) (책)의 예제를 따르고 작동하지 않습니다.
누구나 아이디어가 있으십니까? 이,
저는 InstanceStore 구현에 그다지 중요하지 않습니다.이미이 [샘플] (http://www.microsoft.com/download/en/details.aspx?id=21459)를 보았습니까? – Joao
구체적으로 * WF \ Application \ PurchaseProcess \ CodedWorkflow \ CS \ WfDefinition *에있는 * XmlWorkflowInstanceStore *. 어딘가에서 어떤 전화가 누락 된 것 같습니다. – Joao