BookMark我们在平时的工作流使用中,并不是直接这样一气呵成将整个工作流直接走完的,通常一个流程到了某一个节点,该流程节点的操作人,可能并不会马上去处理该流程,而只有当处理人处理了该流程,流程才会继续往下走。对于不同流程节点的处理人,他所能处理的是不同的流程节点。就好像我们看 ...
BookMark
我们在平时的工作流使用中,并不是直接这样一气呵成将整个工作流直接走完的,通常一个流程到了某一个节点,该流程节点的操作人,可能并不会马上去处理该流程,而只有当处理人处理了该流程,流程才会继续往下走。对于不同流程节点的处理人,他所能处理的是不同的流程节点。
就好像我们看书,我们需要书签来标识,我现在已经看到哪个地方了,工作流也是一样的,我需要通过书签,来确定不同角色的人能处理的是哪一个流程。
1、在项目WindowsWorkFlowApp中,新建“代码活动” BookMarkCodeActivity
修改继承类为NativeActivity,Execute方法的参数类型变为NativeActivityContext类型了。代码如下:
public sealed class BookMarkCodeActivity : NativeActivity { // 定义一个字符串类型的活动输入参数 public InArgument<get='_blank'>string> BookMarkName { get; set; } //定义一个输出参数,用来做流程判断,相当于模拟用户处理流程节点的操作 public OutArgument<int> Num { get; set; } // 创建一个BookMark,让流程停下来 protected override void Execute(NativeActivityContext context) { // 1.获取BookMark名称 string strBookMarkName = context.GetValue(BookMarkName); // 2.创建BookMark context.CreateBookmark(strBookMarkName,new BookmarkCallback(PreExecuteWorkFlow)); } /// <summary> /// 注意,一定要记得注意重写此属性,并返回true,否则后面运行会报错 /// </summary> protected override bool CanInduceIdle { get { return true;// base.CanInduceIdle; } } /// <summary> /// 继续执行下一个状态前,必须先执行该方法。 /// </summary> /// <param name="context"></param> /// <param name="bookmark">书签</param> /// <param name="value">传递过来的值</param> public void PreExecuteWorkFlow(NativeActivityContext context, Bookmark bookmark, object value) { context.SetValue(Num, Convert.ToInt32(value)); }}
原标题:Workflow笔记3——BookMark和持久化
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。