workflow如何设置书签
Posted crazyrude
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了workflow如何设置书签相关的知识,希望对你有一定的参考价值。
设计workflow时候,如果通过代码向向工作流传入数据,则使用代码流CodeActivity类型的活动,如果有想要加入书签,则需要使用NaviteActivity类型的活动。创建工作流的同时给工作流数据。
public partial class Form1 : Form
{
private WorkflowApplication WorkflowApp;
public Form1()
{
InitializeComponent();
}
private void btnStartWF_Click(object sender, EventArgs e)
{
//WorkflowInvoker.Invoke(new DemoActivity1());
//创建工作流可以同时传参数
WorkflowApp = new WorkflowApplication(new DemoActivity1(), new Dictionary<string, object>()
{
{"BookMarkName",this.txtMarkName.Text }
});
//给工作流实例绑定进入空闲状态时想要执行的事件
WorkflowApp.Idle += AfterWorkflowIdle;
#region 其他的
WorkflowApp.OnUnhandledException += OnWfAppException;
WorkflowApp.Unloaded = a => { Console.WriteLine("工作流卸载了..."); };
WorkflowApp.Aborted = a => { Console.WriteLine("工作流中止了.."); };
#endregion
WorkflowApp.Run();
}
//出现异常时调用的方法
private UnhandledExceptionAction OnWfAppException(WorkflowApplicationUnhandledExceptionEventArgs arg)
{
Console.WriteLine("出现未处理的异常"+arg.UnhandledException.ToString());
return UnhandledExceptionAction.Terminate;
}
//工作流进入空闲时执行的方法
private void AfterWorkflowIdle(WorkflowApplicationIdleEventArgs obj)
{
Console.WriteLine("工作流停止了");
}
private void continueMark_Click(object sender, EventArgs e)
{
WorkflowApp.ResumeBookmark(txtMarkName.Text, int.Parse(txtMoney.Text));
}
}
创建继承NaviteActivity类型的子类,并且定义一个输入参数InArgument<string>,来接受工作流的参数传入的值
来创建书签,同时给书签一个恢复书签所要执行的方法。
定义一个输出参数OutArgument<int>,向工作流的变量传出值,使书签能够继续进行。同时若想书签能够
使用,则必须重定义CanInduceIdle,并且赋值为true
public sealed class InputMoneyActivity1 : NativeActivity { // 定义一个字符串类型的活动输入参数 public InArgument<string> InBookMarkName { get; set; } protected override bool CanInduceIdle { get { return true; } } public OutArgument<int> OutMoney { get; set; } // 如果活动返回值,则从 CodeActivity<TResult> // 并从 Execute 方法返回该值。 protected override void Execute(NativeActivityContext context) { // 获取 Text 输入参数的运行时值 //string text = context.GetValue(this.Text); //int money = int.Parse(Console.ReadLine()); //context.SetValue(OutMoney, money); //拿到书签名 string bookMark = context.GetValue(InBookMarkName); Console.WriteLine("创建书签"); //给活动创建书签 context.CreateBookmark(bookMark, new BookmarkCallback(CallBackFun)); } //恢复书签时调用的方法 private void CallBackFun(NativeActivityContext context, Bookmark bookmark, object value) { context.SetValue(OutMoney, (int)value); Console.WriteLine("书签继续执行"); } }
以上是关于workflow如何设置书签的主要内容,如果未能解决你的问题,请参考以下文章
论文阅读 SV-RCNet: Workflow Recognition From Surgical Videos Using Recurrent Convolutional Network