Windows Workflow Foundation(以下简称WWF)提供了一个编程框架和工具以开发和执行各种不同的基于工作流的应用程序,比如文档管理、线型的商业应用、贸易单据流程、IT管理、B2B应用以及消费者应用。
有状态的、持久化的、不间断运行的应用程序
WWF简化了创造有状态的,不间断运行的异步工作流应用程序的过程。WWF运行时引擎管理工作流的运行,为工作流的长期运行提供保障,并能抵抗机器的重启。WWF运行时服务提供了一系列的附加功能,例如WWF服务为能温和且正确的处理错误提供了事务和持久化。
工作流模型
WWF为开发人员提供了一个工作流模型,来描述应用程序所需要的处理过程。通过使用工作流模型所提供的流程控件、状态管理、事务和同步器,开发人员可以分离应用程序逻辑和业务逻辑,构造一个高层次的抽象,达到提高开发者效率的目的。
组件的重用
WWF为开发者提供了一系列的活动——活动是一种包含了工作单元的可配置逻辑结构。这种结构封装了开发者可能经常性用到的一些部件,这样就节省了开发者的时间。
如果遇到一些特殊的需求或场景,WWF同样为开发自定义的活动提供了简单的方法。
通过将工作流引擎载入进程,WWF可以使任何应用程序和服务容器运行工作流。
运行时服务组件被设计成可插件形式的,这个可使应用程序以最合适的方式来提供它们的服务。WWF还提供了一组运行时服务的默认实现,这些服务能满足大部分类型的应用程序。
另外,WWF还提供了对ASP.NET的out-of-the-box(啥意思?)支持,让构造和运行能在IIS和ASP.NET环境的工作流变得简单。
顺序工作流(sequential workflow)是为执行一种由一系列预定义的步骤组成的任务而设计的。这种体系结构是模拟基于过程的应用程序的。这一节将用几个步骤来编写一个简单的开支报告程序,这个小程序使用WinFrom做界面,用顺序工作流做业务逻辑。
这个小程序有一个TextBox来输入开支报告的总数,一个Button点击提交报告。工作流将评估开支,如果开支小于1000则提请领班审批,如果大于等于1000则提请经理审批。之后,工作流会发送一个审批意见,此时,出现一个Label显示审批意见,两个Button分别表示通过和拒绝审批。当某一个按钮被点击的时候,应用程序会通知回应工作流,工作流继续处理发生的事件。
开始构造顺序工作流
创建工作流类
WWF SDK中定义了一个SequentialWorkFlow类,我们定义一个ExpenseRoportWorkflow类,并继承自SequentialWorkflow,这样就创建一个顺序工作流。如:
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
7
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
10
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
12
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
16
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
声明工作流参数
在一个工作流运行时,它可以从宿主应用程序中接收参数。参数是ParameterDeclaration类型的对象,一旦工作流初始化完成,参数的值就能通过工作流的Parameters集合来访问。
这里的开始报告程序用了两个参数。第一个参数是开支的总数;第二个是一个传出参数,用来放置审批意见。
定义一个新的方法InitializeComponent,并在构造ExpenseRoportWorkflow类的构造函数中调用它。一下的例子示范了怎样定义两个参数并把它们加到Parameters集合中。
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
4
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
14
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
46
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
使用IfElse活动
IfElse活动用条件表达式来控制工作流中流程的运行。工作流将根据条件表达式的结果来决定执行条件分支(IfElseBranch)中的哪一个活动。
例子中将使用IfElse活动。通过判断从宿主应用程序中传入的Amount参数的值是否小于1000,来决定是否将审报发送到领班,否则发送到经理。
创建IfElse活动
1.定义4个私有变量
类型 | 名称 |
IfElse | evaluateExpenseReportAmount |
IfElseBranch | ifNeedsLeadApproval |
IfElseBranch | elseNeedsManagerApproval |
CodeCondition | ifElseLogicStatement |
2.在InitializeComponent中用默认构造函数实例以上4个对象。
以下的代码示例了怎样创建IfElse活动,并用IfElseBranch活动联系两个逻辑分支。你需要把以下代码放到InitializeComponent方法底部。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
WWF在IfElse活动中,有两种评估条件表达式的方式。一种是RoleCondition,这个对象通过使用一组规则来判断条件表达式的结果;另一种就是使用CodeCondition活动。CodeCondition使用一个回调方法,这个回调方法返回一个代表评估结果的布尔值。上面的例子就是使用CodeCondition来决定条件表达式的值。如果Amount参数小于1000,回调方法返回true,否则返回false。以下的代码就是这个回调函数的定义,你可以把它加到工作流类的定义中。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
4
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
构造IfElse分支(IfElseBranch)活动
创建完IfElse活动之后,我们来构造IfElseBranch活动
在这个例子中,每一IfElse活动的分支都使用InvokeMethodActivity活动来通知宿主程序——工作流需要领班或经理的审批才能继续执行。InvokeMethodActivity被设计成调用一个在WWF运行时中的服务接口。我们在同一份代码文件中定义了这个接口。当我们在之后构造宿主程序时,宿主类将实现这个接口,以便能建立工作流和宿主程序的通信(这一段文档上写的很模糊,我reflect后看了源码才明白过来,在最后将补充描述一下)。
构建IfElseBranch活动
1. 在类中定义两个私有字段
类型 | 名称 |
InvokeMethodActivity | invokeGetLeadApproval |
InvokeMethodActivity | invokeGetManagerApproval |
2. 在InitializeComponent中用默认构造函数实例化这两个对象
以下的代码示例了怎样在父活动(IfElse)中创建IfElseBranch活动,并把两个的InvokeMethodActivity联系到对应的IfElseBranch活动上,每个InvokeMethodActivity将调用定义在IExpenseReportService接口中的方法,接口会在稍微实现。你需要把以下代码放到InitializeComponent方法底部。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
以下代码定义了IExpenseReportService接口
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
12
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
18
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
30
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
监听宿主事件
在这个阶段,工作流已经从宿主程序接受了两个参数(译者注:其中一个为out参数,此时设为null),评估了Amount参数,作出了到底该提请谁确认审批的决定,并通知了宿主程序在继续接下来的处理之前,确认审批。这里,Listen活动和EventSinkActivity活动往往配合使用,来监听宿主程序触发指定的事件。接着,一个approval或rejection事件被引发,工作流继续执行,返回审批结果Result,并终止流程。
Listen活动的每个分支是一个EventDriven活动。EventDriven活动只能使用实现了IEventActivity接口的活动。Listen活动的每个分支中的EventDriven各有一个EventSinkActivity,它们是用来监听宿主程序触发的ExpenseReportApproved或者ExpenseReportRejected事件的。这种工作流和宿主的通信方法其实类似于之前的InvokeMethodActivity的过程,只不过前者是工作流监听宿主事件,而后者是宿主事件工作流中注册的接口。
我们已经在前面的步骤中,把接口和两个事件的定义都完成了。在这里,我们将创建一个Listen活动并和两个EventDriven分支建立连接。每个分支包含一个EventSinkActivity活动,每个EventSink监听一种对应的事件。此外,我们还将创建一些事件处理程序,来处理AfterInvoke事件(译者注:这里的AfterInvoke事件应为Invoked事件)。这些事件处理程序将会把Result参数的值设为approval或者rejected。
构造监听活动
1.在工作流类中定义5个私有字段
类型 | 名称 |
Listen | listenApproveReject |
EventDriven | approveEventDriven |
EventDriven | rejectEventDriven |
EventSinkActivity | approveEvent |
EventSinkActivity | rejectEvent |
2. 在InitializeComponent中实例化。
以下的代码示例了怎样在创建Listen活动和EventSinkActivity活动,来监听宿主程序发出的事件。你需要把以下代码放到InitializeComponent方法底部。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
22
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
23
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
24
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
25
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
26
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
27
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
28
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
29
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
30
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
31
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
32
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
33
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
34
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
35
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
36
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
37
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
38
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
39
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
40
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
41
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
42
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
43
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
44
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
45
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
46
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
47
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
48
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
49
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
50
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
51
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
52
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
53
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
54
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
55
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
56
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
57
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
58
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
59
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
60
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
61
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
62
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
63
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
64
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
65
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
使用EventSinkActivity时,为了在工作流中加入一些附加逻辑,你可以为Invoked事件创建一个事件处理程序。一下是事件处理程序的代码
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
4
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
5
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
14
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
18
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
完成顺序工作流
这个工作流包括两个主要的步骤:第一,监听宿主程序的递交审批事件,并把传入的值作为工作流参数;第二,监听通过或拒绝审批消息。一下的代码示例了怎样通过把之前创建好的活动加到工作流活动集中,来完成工作流的构造。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
创建宿主程序
WWF需要一个宿主程序来运行工作流。当程序开始运行,WWF运行时引擎也随之启动。而之前构造好的工作流,则到用户点击了Submit按钮后才真正启动。
建立一个新的源文件,取名Program。以下的代码包含了完整的WinForm应用程序。IExpenseReportService接口GetLeadApproval和GetmanagerApproval方法已经定义在另一个文件中。宿主程序实现了这个接口。在approval和rejected按钮的click事件中,将引发ExpenseReprotApproval或ExpenseReprotRejected事件。
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
21
![ExpandedBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
22
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
26
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
32
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
36
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
58
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
62
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
72
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
74
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
78
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
80
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
88
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
90
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
92
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
94
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
96
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
100
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
108
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
112
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
114
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
116
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
118
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
120
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
121
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
123
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
127
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
129
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
131
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
133
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
135
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
139
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
147
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
148
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
149
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
153
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
155
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
159
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
173
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
177
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
181
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
185
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
187
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
189
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
191
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
193
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
195
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
197
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
199
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
201
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
203
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
205
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
207
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
209
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
211
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
212
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
213
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
214
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
215
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
216
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
217
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
218
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
219
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
220
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
221
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
222
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
223
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
225
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
227
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
228
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
229
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
231
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
233
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
235
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
237
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
239
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
241
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
243
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
245
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
247
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
248
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
249
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
250
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
251
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
252
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
254
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
256
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
258
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
260
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
262
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
264
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
266
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
268
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
270
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
272
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
274
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
276
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
278
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
280
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
282
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
284
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
286
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
288
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
290
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
292
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
294
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
296
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
298
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
300
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
302
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
304
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
306
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
307
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
308
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
309
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
310
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
311
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
312
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
313
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
315
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
316
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
317
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
318
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
320
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
321
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
322
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
323
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
324
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
325
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
326
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
327
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
328
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
329
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
330
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
331
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
332
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
333
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
334
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
335
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
336
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
337
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
338
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
339
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
340
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
341
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
342
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
343
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
344
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
345
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
346
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
347
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
348
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
349
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
350
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
351
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
352
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
353
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
354
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
355
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
356
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
357
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
358
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
359
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
360
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
361
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
362
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
363
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
364
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
365
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
366
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
367
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
368
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
370
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
372
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
374
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
376
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
378
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
381
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
382
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
383
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
384
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
385
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
386
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
388
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
390
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
393
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
394
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
395
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
396
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
397
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
398
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
400
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
401
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
402
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
404
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
406
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
408
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
410
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
412
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
414
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
415
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
416
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
418
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
419
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
422
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
423
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
424
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
425
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
426
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
427
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
428
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
429
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
430
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
431
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
432
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
433
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
434
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
435
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
436
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
437
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
438
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
439
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
440
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
441
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
442
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
443
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
444
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
445
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
446
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
447
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
448
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
449
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
450
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
451
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
452
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
453
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
454
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
455
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
456
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
457
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
458
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
459
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
460
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
461
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
462
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
463
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
464
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
465
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
466
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
467
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
468
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
469
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
470
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
471
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
472
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
473
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
474
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
475
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
476
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
477
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
478
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
479
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
480
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
481
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
482
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
483
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
484
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
485
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
486
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
487
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
488
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
489
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
490
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
491
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
492
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
493
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
494
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
495
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
496
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
497
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
498
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
499
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
500
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
501
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
502
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
503
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
504
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
505
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
506
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
507
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
508
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
509
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
510
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
511
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
512
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
513
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
514
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
515
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
516
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
517
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
518
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
519
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
520
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
521
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
522
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
523
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
524
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
525
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
526
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
527
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
528
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
529
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
530
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
531
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
532
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
533
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
534
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
535
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
536
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
537
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
538
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
539
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
540
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
541
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
542
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
543
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
544
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
545
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
546
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
547
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
548
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
549
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
550
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
551
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
552
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
553
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
554
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
555
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
556
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
557
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
558
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
559
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
560
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
561
![ExpandedSubBlockStart.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
562
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
563
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
564
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
565
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
566
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
567
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
568
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
569
![ExpandedSubBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
570
![InBlock.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
571
![ExpandedBlockEnd.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
572
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
573
![None.gif](https://windwolfreal.cnblogs.com/Images/OutliningIndicators/None.gif)
Ps:上面还有个问题没有解释清楚,我reflect了一下,看了源码才知道个大概。
那就是IfElseBranch中的InvokeMethodActivity。
InvokeMethodActivity中有一个Type类型的InterfaceType属性,使用时,需要设置这个属性,并把MethodName设为这个接口中的一个方法的名称。运行时,工作流引擎(也就是WorkflowRuntime)将通过反射调用这个接口。
但引擎怎么知道调用接口的哪个实现呢?你看
workflowRuntime = new WorkflowRuntime();
workflowRuntime.AddService(this);
workflowRuntime.StartRuntime();
原来,初始化引擎时,我们已经把实现了这个interface的类型的实例(this)注册到工作流中了。运行时,引擎就遍历所有已经注册的服务,如果实现了这个接口,这调用它。
另外,注册服务不一定要用AddService,也可以用WorkflowRuntime.StartWorkflow(Type)。
本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/12/18/299437.html,如需转载请自行联系原作者