Has*_*dad 3 .net c# .net-4.0 workflow-foundation workflow-foundation-4
我在Windows Workflow Foundation Service中托管了一个代码Activity,我希望根据我从数据库中检查的一些值来终止工作流.我不想使用Throw Exception方法,我需要从"Code Activity"代码中进行,而不是从设计器中进行.我仍然是WWF的初学者,我尝试了以下方法,即创建工作流应用程序,并在代码活动的当前实例上初始化它,但它不起作用.我需要首先捕获当前活动实例的父工作流应用程序,然后调用Terminate方法.
WorkflowApplication wfApp = new WorkflowApplication(this);
wfApp.Terminate("The following workflow is terminating");
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
要正常终止,只需使用TerminateWorkflow作为子活动.这将调用WorkflowApplication.Completed操作.
public class CanceledActivity : NativeActivity
{
private readonly TerminateWorkflow terminateWorkflow = new TerminateWorkflow
{
Reason = "Reason why I'm terminating!"
};
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddImplementationChild(terminateWorkflow);
}
protected override void Execute(NativeActivityContext context)
{
context.ScheduleActivity(terminateWorkflow);
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以抛出异常,但这将调用WorkflowApplication.OnUnhandledException.
public class CanceledActivity : NativeActivity
{
protected override void Execute(NativeActivityContext context)
{
throw new Exception("this will not gracefully terminate the workflow")
}
}
Run Code Online (Sandbox Code Playgroud)
还有很多其他的方法,这取决于你想做什么以及什么时候你想做.请记住,由于其异步性,工作流只会在可能的情况下终止.
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |