如果我理解你的问题,那么你有以下要求。
您可以使用以下步骤。
如果有任何问题和定制需要讨论相同。:)因为我已经开发了类似你的工作流程。
这是我的意思:
PersistOnCloseAttribute
解决方案是使用 Persist 每个定制活动中的活动(必须扩展 NativeActivity 可以安排儿童活动):
Persist
NativeActivity
//class field Activity childActivity = new Persist();
为了使其工作,必须将其作为ImplmentationChild添加到元数据中:
protected override void CacheMetadata(NativeActivityMetadata metadata) { base.CacheMetadata(metadata); metadata.AddImplementationChild(this.childActivity); }
最后一件事是从Execute方法安排子活动(无论何处,只有在调用活动完成后才会发生持久性*)。
protected override void Execute(NativeActivityContext context) { //... context.ScheduleActivity((Activity)this.childActivity); }
为了在未处理的异常之后保持工作流程保持不变,必须将这段代码添加到WorkflowApplication:
application.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e) { return UnhandledExceptionAction.Abort; };
*从...返回 Execute 方法并不一定意味着活动是“完成的” - 即活动内部存在阻止书签(参见下面的缺点)。
Execute
这个解决方案有一些缺点: