《WF高级程序设计》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)BRUCEBUKOVICS著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115212412
  • 页数:687 页
图书介绍:本书讲述了WF的方方面面,不仅教你如何使用每种单独的WF功能,而且还会让你知道WF的设计时和运行时功能,主要内容包括WF的标准活动,如何托管工作流运行时,本地服务,顺序工作流,状态机工作流,Web服务,托管工作流设计器等。

第1章 WF快速入门 1

1.1 为什么需要工作流 1

1.1.1 工作流各不相同 1

1.1.2 为什么选择WF 2

1.2 开发环境 3

1.3 Hello Workflow 3

1.3.1 创建工作流项目 4

1.3.2 工作流设计器 6

1.3.3 使用工作流活动 6

1.3.4 输入代码 7

1.3.5 承载工作流运行时 8

1.3.6 运行应用程序 10

1.4 传递参数 10

1.4.1 声明属性 11

1.4.2 在运行时中传递值 11

1.5 作出决策 13

1.5.1 创建工作流库 13

1.5.2 添加工作流属性 13

1.5.3 添加IfElse活动 14

1.5.4 添加计算逻辑 17

1.5.5 创建计算器客户端 19

1.5.6 测试和调试计算器 23

1.6 小结 25

第2章 基础结构概述 26

2.1 工作流类型 26

2.1.1 顺序工作流 26

2.1.2 状态机工作流 26

2.1.3 选择工作流类型 27

2.2 基础结构交付项 28

2.2.1 类库和基础结构 28

2.2.2 运行时引擎 29

2.2.3 运行时服务 30

2.2.4 设计时工具 30

2.2.5 .NET 2.0运行时 30

2.3 运行时环境 30

2.3.1 应用程序宿主进程 31

2.3.2 运行时引擎 32

2.3.3 已注册的核心服务 33

2.3.4 已注册的本地服务 36

2.3.5 工作流实例 37

2.4 设计时环境 39

2.4.1 工作流创作模式 39

2.4.2 项目模板 40

2.4.3 工作流设计器 41

2.4.4 活动设计器 45

2.4.5 规则条件编辑器 46

2.4.6 Ruleset编辑器 48

2.4.7 工作流调试器 51

2.4.8 命令行工作流编译器 51

2.4.9 命令行通信活动生成器 52

2.5 小结 52

第3章 活动 53

3.1 理解活动 53

3.1.1 活动的两个访问者 53

3.1.2 类层次结构 54

3.2 探讨标准活动 55

3.2.1 自定义工作流逻辑 55

3.2.2 流控制 55

3.2.3 状态管理 57

3.2.4 事件处理 58

3.2.5 本地服务通信 59

3.2.6 规则 59

3.2.7 Web服务 59

3.2.8 工作流服务 60

3.2.9 事务、补偿和同步 61

3.2.10 异常和错误处理 62

3.3 标准活动摘要 62

3.4 添加工作流逻辑 64

3.5 使用CodeActivity 64

3.5.1 创建项目 65

3.5.2 定义工作流参数 65

3.5.3 验证账户 69

3.5.4 验证产品 70

3.5.5 录入订单 70

3.5.6 运行工作流 74

3.5.7 总结此方法 77

3.6 开发自定义活动 77

3.6.1 为什么使用自定义活动 77

3.6.2 两种访问者的设计 78

3.6.3 创建项目 78

3.6.4 实现账户验证活动 78

3.6.5 实现产品验证活动 82

3.6.6 实现订单录入活动 84

3.6.7 定义工作流参数 87

3.6.8 定义工作流 88

3.6.9 运行工作流 92

3.6.10 总结此方法 95

3.7 增强设计体验 96

3.7.1 验证活动 96

3.7.2 自定义工具箱行为 100

3.7.3 自定义设计器 104

3.8 小结 108

第4章 承载工作流运行时 109

4.1 承载概述 109

4.2 简单的工作流承载 110

4.2.1 实现测试工作流 110

4.2.2 实现简单宿主应用程序 112

4.3 改进的工作流承载 117

4.3.1 实现工作流实例包装 117

4.3.2 实现工作流管理器类 119

4.3.3 承载工作流管理器 127

4.3.4 通过App.config配置运行时 133

4.4 控制工作流实例 136

4.5 同步的工作流执行 139

4.6 小结 142

第5章 流控制 143

5.1 条件类型 143

5.2 使用IfElseActivity 144

5.2.1 使用代码条件的IfElseActivity 144

5.2.2 使用规则条件的IfElseActivity 150

5.3 使用WhileActivity 153

5.3.1 实现工作流 153

5.3.2 测试工作流 156

5.4 使用ParallelActivity 158

5.4.1 实现工作流 159

5.4.2 测试工作流 162

5.4.3 添加DelayActivity 164

5.5 使用ReplicatorActivity 165

5.5.1 实现顺序工作流 166

5.5.2 测试顺序工作流 169

5.5.3 实现并行工作流 170

5.5.4 测试并行工作流 174

5.5.5 使用ReplicatorActivity事件 176

5.5.6 中断执行 176

5.6 使用ConditionedActivityGroup 176

5.6.1 实现工作流 177

5.6.2 测试工作流 180

5.7 使用InvokeWorkflowActivity 182

5.8 使用TerminateActivity 183

5.9 使用SuspendActivity 183

5.10 小结 183

第6章 本地服务 184

6.1 了解本地服务 184

6.1.1 实现本地服务 185

6.1.2 使用本地服务 185

6.2 实现并使用本地服务 186

6.2.1 实现账户类 186

6.2.2 声明服务约定 186

6.2.3 实现本地服务类 187

6.2.4 实现工作流 188

6.2.5 测试工作流 191

6.3 从App.config加载 193

6.4 使用自定义活动 195

6.4.1 实现自定义活动 195

6.4.2 修改工作流 198

6.4.3 测试工作流 199

6.5 使用CallExternalMethodActivity 199

6.5.1 实现工作流 199

6.5.2 测试工作流 201

6.6 小结 201

第7章 事件驱动活动 202

7.1 使用事件驱动活动 202

7.2 使用HandleExternalEventActivity 203

7.2.1 创建项目 204

7.2.2 实现事件参数类 204

7.2.3 定义服务接口 205

7.2.4 实现本地服务 206

7.2.5 实现工作流 209

7.2.6 实现宿主应用程序 213

7.2.7 测试工作流 217

7.3 生成通信活动 218

7.3.1 生成活动 218

7.3.2 修改工作流 219

7.4 手动控制关联 220

7.4.1 实现事件参数类 221

7.4.2 定义服务接口 221

7.4.3 实现本地服务 222

7.4.4 实现工作流 223

7.4.5 测试工作流 225

7.5 使用EventHandlingScopeActivity 227

7.5.1 定义服务接口 228

7.5.2 实现本地服务 228

7.5.3 实现工作流 230

7.5.4 测试工作流 234

7.6 开发自定义事件驱动活动 236

7.6.1 了解工作流队列 237

7.6.2 事件驱动活动的需求 238

7.6.3 实现ProcessGuessActivity 239

7.6.4 实现SendHintActivity 246

7.6.5 修改工作流 248

7.6.6 修改宿主应用程序 249

7.6.7 测试工作流 252

7.7 小结 253

第8章 工作流持久性 254

8.1 了解持久性 254

8.1.1 持久化工作流的原因 254

8.1.2 持久性概述 255

8.2 使用SqlWorkflowPersistenceService 256

8.2.1 为持久性准备数据库 257

8.2.2 实现本地服务 257

8.2.3 实现工作流 259

8.2.4 实现宿主应用程序 261

8.2.5 测试应用程序 271

8.3 实现自定义持久性服务 273

8.3.1 了解抽象方法 274

8.3.2 实现服务 276

8.3.3 测试自定义服务 282

8.4 小结 284

第9章 状态机工作流 285

9.1 了解状态机 285

9.1.1 为什么需要状态机工作流 285

9.1.2 状态机概述 286

9.2 实现状态机工作流 290

9.2.1 设计CarStateMachine 290

9.2.2 定义本地服务接口 291

9.2.3 实现本地服务 292

9.2.4 实现工作流 295

9.2.5 实现宿主应用程序 302

9.2.6 测试应用程序 308

9.3 消除重复的事件处理程序 309

9.3.1 重构CarWorkflow 309

9.3.2 测试修改后的工作流 310

9.4 标识现有事件 311

9.4.1 询问工作流队列 311

9.4.2 修改CarStateMachine 311

9.4.3 测试应用程序 313

9.5 访问工作流运行时信息 314

9.5.1 修改CarStateMachine 314

9.5.2 测试应用程序 316

9.6 小结 316

第10章 事务和补偿 317

10.1 事务 317

10.1.1 事务的方式 317

10.1.2 WF对事务的支持 318

10.2 使用TransactionScopeActivity 319

10.2.1 实现AccountAdjustment-Activity 322

10.2.2 实现AccountTransfer-Workflow 326

10.2.3 测试工作流 329

10.3 了解补偿 334

10.4 使用可补偿活动 335

10.4.1 实现InventoryUpdate-Activity 335

10.4.2 实现OrderDetailActivity 339

10.4.3 实现OrderEntryWorkflow 344

10.4.4 测试工作流 350

10.5 参与工作批次 353

10.6 使用IPendingWork接口 353

10.6.1 实现本地服务 354

10.6.2 实现BatchedWorkWorkflow 356

10.6.3 测试工作流 357

10.7 小结 359

第11章 工作流规则 361

11.1 了解工作流规则 361

11.1.1 规则的组成 362

11.1.2 使用规则的原因 362

11.2 在WF中使用规则 363

11.2.1 定义规则 363

11.2.2 定义规则集 366

11.2.3 使用特性来标识依赖项 368

11.3 使用PolicyActivity来定义规则 369

11.3.1 实现SalesItem类 369

11.3.2 声明规则 370

11.3.3 测试工作流 375

11.4 跟踪规则 379

11.5 调整规则顺序 381

11.5.1 设置规则优先级 381

11.5.2 测试工作流 381

11.6 在规则中使用方法 383

11.6.1 添加操作方法 383

11.6.2 在规则集中使用方法 384

11.6.3 标识间接关系 385

11.7 在代码中执行规则集 386

11.7.1 实现SellItemSerialized-Workflow 386

11.7.2 测试工作流 389

11.8 在代码中构造规则集 389

11.8.1 实现SellItemInCode-Workflow 389

11.8.2 测试工作流 392

11.9 小结 393

第12章 异常和错误处理 394

12.1 理解工作流异常处理 394

12.2 探讨默认行为 396

12.2.1 实现ExceptionWorkflow 396

12.2.2 测试工作流 398

12.3 使用FaultHandlerActivity 400

12.3.1 处理ArithmeticException 400

12.3.2 处理DivideBvZeroException 403

12.4 抑制异常 405

12.5 重新抛出异常 407

12.6 补偿和异常 408

12.6.1 实现CompensateWorkflow 408

12.6.2 测试工作流 410

12.7 使用CancellationHandlerActivity 412

12.7.1 实现CancelHandler-Workflow 412

12.7.2 测试工作流 414

12.8 小结 414

第13章 高级自定义活动 415

13.1 开发专用的复合活动 415

13.1.1 开发自定义活动 416

13.1.2 开发工作流 417

13.1.3 测试活动 418

13.2 开发通用的复合活动 420

13.2.1 了解活动执行计划 420

13.2.2 复合活动的执行模式 421

13.2.3 实现顺序活动 422

13.2.4 实现测试工作流 426

13.2.5 测试顺序活动 428

13.3 开发优先级顺序活动 429

13.3.1 实现优先级顺序活动 429

13.3.2 实现扩展提供程序 432

13.3.3 实现自定义设计器 434

13.3.4 实现测试工作流 435

13.3.5 测试优先级顺序活动 436

13.4 开发长时间运行的活动 436

13.4.1 实现本地服务 437

13.4.2 实现自定义活动 440

13.4.3 实现测试工作流 443

13.4.4 测试长时间运行的活动流 443

13.5 小结 445

第14章 动态工作流更新 446

14.1 了解动态更新 446

14.1.1 使用动态更新的原因 447

14.1.2 应用动态更新 447

14.1.3 防止动态更新 448

14.2 从宿主应用程序中应用更新 449

14.2.1 实现DynamicWorkflow 449

14.2.2 实现自定义活动 450

14.2.3 实现宿主应用程序 452

14.2.4 测试工作流 456

14.3 限制动态更新 456

14.4 从工作流中应用更新 458

14.4.1 实现SelfUpdatingWorkflow 458

14.4.2 实现宿主应用程序 461

14.4.3 测试工作流 462

14.5 更新规则条件 463

14.5.1 实现DynamicCondition-Workflow 463

14.5.2 实现宿主应用程序 464

14.5.3 测试工作流 468

14.6 替换规则条件 468

14.6.1 修改RuleDefinitions 468

14.6.2 修改宿主应用程序 470

14.6.3 测试修改后的应用程序 472

14.7 小结 472

第15章 工作流跟踪 473

15.1 了解工作流跟踪 473

15.1.1 跟踪服务 473

15.1.2 跟踪事件类型 474

15.1.3 自定义跟踪配置 475

15.1.4 使用跟踪数据 475

15.1.5 受益于工作流跟踪 476

15.2 使用SqlTrackingService 476

15.2.1 准备跟踪SQL数据库 477

15.2.2 开发测试工作流 477

15.2.3 开发宿主应用程序 479

15.2.4 执行宿主应用程序 481

15.2.5 获取跟踪数据 482

15.3 创建用户跟踪点 489

15.3.1 增强TrackingExample-Workflow 490

15.3.2 测试修改后的工作流 490

15.4 跟踪规则计算 491

15.4.1 实现TrackingRules-Workflow 491

15.4.2 测试工作流 492

15.5 使用自定义跟踪配置提取数据 493

15.5.1 使用跟踪配置 494

15.5.2 实现TrackingProfile-Helper 495

15.5.3 创建跟踪配置 499

15.5.4 测试跟踪配置 501

15.6 维护SQL跟踪数据库 502

15.6.1 分区 502

15.6.2 设置分区间隔时间 502

15.6.3 自动或手动分区 502

15.6.4 访问分区数据 503

15.6.5 分离或删除分区 503

15.7 开发跟踪服务 503

15.7.1 实现跟踪通道 504

15.7.2 实现跟踪服务 506

15.7.3 测试自定义跟踪服务 510

15.8 小结 512

第16章 Web服务和ASP.NET 513

16.1 将工作流发布为Web服务 513

16.1.1 了解Web服务活动 513

16.1.2 发布和配置 514

16.2 开发Web服务工作流 515

16.2.1 定义Web服务接口 515

16.2.2 定义MathServiceWorkflow 516

16.2.3 发布工作流 518

16.2.4 测试工作流 519

16.3 返回Web服务错误 521

16.3.1 修改MathServiceWorkflow 522

16.3.2 测试修改后的Web服务 523

16.4 开发状态化的Web服务 523

16.4.1 定义Web服务接口 524

16.4.2 实现MathServiceState-fulWorkflow 525

16.4.3 发布新工作流 528

16.4.4 测试Web服务 528

16.5 在工作流中调用Web服务 528

16.5.1 实现InvokeWebService-Workflow 529

16.5.2 测试工作流 532

16.6 在ASP.NET中使用工作流 533

16.6.1 实现DivideNumberWorkflow 534

16.6.2 实现UseWorkflowWebsite 534

16.6.3 测试工作流 538

16.7 小结 539

第17章 工作流服务和WCF集成 540

17.1 了解WCF 540

17.1.1 定义服务约定 541

17.1.2 配置终结点和绑定 542

17.1.3 承载和配置 543

17.2 了解工作流服务 543

17.2.1 使用ReceiveActivity 543

17.2.2 使用SendActivity 544

17.2.3 承载和配置 545

17.2.4 实例化和上下文管理 547

17.3 开发无状态的工作流服务 548

17.3.1 定义服务约定 548

17.3.2 实现工作流 549

17.3.3 配置工作流服务 550

17.3.4 测试工作流服务 551

17.4 IIS承载和客户端开发 552

17.4.1 创建IIS虚拟目录 553

17.4.2 创建.svc文件 553

17.4.3 配置Web.config文件 553

17.4.4 部署服务 554

17.4.5 开发客户端应用程序 555

17.5 自承载的工作流服务 557

17.5.1 开发服务宿主 558

17.5.2 配置服务宿主 559

17.5.3 更改客户端应用程序 560

17.5.4 测试服务宿主 561

17.6 定义工作流优先的服务 561

17.7 开发状态化的工作流服务 562

17.7.1 定义服务约定 563

17.7.2 实现工作流 564

17.7.3 在IIS中承载工作流服务 566

17.7.4 开发客户端应用程序 567

17.7.5 测试工作流服务 569

17.8 使用SendActivity 570

17.8.1 实现工作流 570

17.8.2 开发客户端应用程序 573

17.8.3 测试工作流 575

17.9 上下文和对话 575

17.9.1 定义服务约定 577

17.9.2 实现库存工作流 579

17.9.3 实现库存宿主 583

17.9.4 实现客户端工作流 586

17.9.5 实现客户端宿主 592

17.9.6 测试应用程序 595

17.10 小结 596

第18章 工作流序列化和标记 598

18.1 了解工作流创作模式 598

18.1.1 仅限代码创作模式 598

18.1.2 代码分离创作模式 599

18.1.3 无代码创作模式 601

18.2 开发仅限代码工作流 602

18.2.1 实现工作流 603

18.2.2 测试工作流 604

18.2.3 查看生成的代码 605

18.3 开发代码分离工作流 607

18.3.1 实现工作流 607

18.3.2 测试工作流 608

18.3.3 查看标记 608

18.4 开发无代码工作流 609

18.4.1 实现工作流基类 609

18.4.2 实现自定义活动 610

18.4.3 定义工作流标记 611

18.4.4 增强WorkflowRuntime-Manager 612

18.4.5 测试工作流 614

18.5 在无代码工作流中使用规则 615

18.5.1 定义规则条件 616

18.5.2 修改工作流标记 617

18.5.3 测试工作流 618

18.6 序列化到标记 618

18.7 编译工作流 622

18.8 编译包含规则的工作流 625

18.9 在命令行中编译 628

18.10 反序列化标记 628

18.11 小结 632

第19章 承载工作流设计器 633

19.1 工作流设计器 633

19.1.1 设计器命名空间 634

19.1.2 设计器类 634

19.1.3 设计器服务 635

19.2 构建设计器应用程序 635

19.2.1 创建设计器项目 636

19.2.2 实现WorkflowLoader 637

19.2.3 实现WorkflowMenuService 645

19.2.4 实现WorkflowEvent-Bindi ngService 649

19.2.5 实现EventProperty-Descriptor 653

19.2.6 实现WorkflowProperty-ValueService 657

19.2.7 实现WorkflowToolbox-Service 659

19.2.8 实现WorkflowDesigner 668

19.2.9 实现MainForm 674

19.2.10 实现AssemblyReference-Form 679

19.2.11 实现NewWorkflowForm 681

19.3 使用设计器 683

19.4 小结 687