标签:Nid span tns 书签 click 必须 ica protect public
设计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("书签继续执行"); } }
标签:Nid span tns 书签 click 必须 ica protect public
原文地址:https://www.cnblogs.com/crazyrude/p/9692266.html