zoukankan      html  css  js  c++  java
  • SharePoint工作流解决方案QuickFlow系列(4)—Step Rounter(步骤路由)

    本文将讲解以下几个活动:Step,Decision,Ronter+Rule

    Step:步骤。

    Step可以作为其他活动的容器,除了QuickFlow提供的几个活动(Task,GroupTask,Step等),其他活动是不能直接拖到设计器上的,如果要用到其他活动怎么办呢?比如要用CodeActivity来写一下Server Code?这时就可以用Step活动,将Step活动拖到设计器上,就可以在其中添加任意其他活动了。

    示意图:

    image

    Decision:两路判断。

    Decison相当于IfElse,可以按照一个判断条件指定下一步要执行的活动。Decision有两个端点,分别显示F(false),T(True),这两个端点可以划线连接到其他活动,分别为Conditon为True或False时下一步要执行的活动。

    Decision有个Condition属性,用来指定判断条件,可以用声明性条件或代码条件,一般在上一步任务结束后需要按照审批结果判断下一步的步骤。这时候就要用到Task活动的TaskOutome属性或GroupTask的TaskOutcomes属性。

    image

    如果是按照GroupTask或MultiTask做判断,则需要用类似this.GroupTask1.TaskOutcomes.Filter(“Approve”)>=1来做判断。

    如果采用代码条件,代码如下:

    private void condition2(object sender, ConditionalEventArgs e)
           {
               e.Result = this.task1.TaskOutcome == "Approve";
           }

    Decision只能实现两个下级活动的路由,如果下级活动是多个那么就需要用多个Decision串联。

    示意图:

    image

    Rounter+Rule:多路判断

    这是两个活动,Rounter是一个容器活动,可以在其中添加多个Rule,每个Rule都有一个Condition条件和Target属性,Target指向一个活动,当Contition为True是即执行Target指向的活动。如果下一级审批可能有两种以上的可能性,用这两个活动是非常适合的(当然,也可以用多个Decision连接,但是那样流程图看起来不那么“优美”),Rule的Conditon属性的使用跟Decision的Conditon属性用法完全一样。

    但是要注意,Rounter+Rule不能作为一级活动使用,它们必须放置在Step活动内部,一般在用Rounter+Rule时,先拖放一个Step活动,然后在Step活动中添加一个Tas或GroupTask活动,然后添加Rounter活动,Rounter默认会带有两个Rule,实现两路分支判断,可以利用Rounter右键菜单中的Add Branch菜单添加一个Rule。

    image

    需要注意的是,就像在这篇文章中提到的:http://www.cnblogs.com/jianyi0115/archive/2009/08/28/1555917.html,有时候,活动的属性值是不能直接取到的,同样,在Rule的Conditon属性中,如果要用到同一个Step中的Task或GroupTask的TaskOutcome或TaskOutcomes属性,在运行时,值也可能取不到的,为了避免这个问题,可以总是把TaskOutcome或TaskOutcomes属性绑定到工作流的一个字段。

    代码示例下载:

    https://files.cnblogs.com/jianyi0115/QuickFlowExample_StepRounter.rar

    注意,请将示例代码中DLL目录中的QuickFlow.dll部署到GAC,或者到codeplex下载最新版本(修复了一个bug)。

    image

    后记:Rounter活动路由已经变成一种过期的方式,Quickflow不会再增强这个功能,建议采用其他方式来实现路由,如Decision,RuleDriven,LineRule等。

  • 相关阅读:
    .NET基础示例系列之十二:DLLImport
    .NET基础示例系列之二:Socket
    Qt之msvcversion.conf loaded but QMAKE_MSC_VER isn‘t set
    Ubuntu安装sshd
    Quick工程设置exe图标
    git修改文件之后上传
    VS里打开Qt的pro工程
    QtQWebEngineView显示百度网页
    在gitte建立新仓库并上传本地工程
    Qt的qDebug打印加颜色
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/1561072.html
Copyright © 2011-2022 走看看