第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 實現accountadjustmentactivity 322
         10.2.2 實現accounttransferworkflow 326
         10.2.3 測試工作流 329
         10.3 瞭解補償 334
         10.4 使用可補償活動 335
         10.4.1 實現inventoryupdateactivity 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 實現sellitemserializedworkflow 386
         11.7.2 測試工作流 389
         11.8 在代碼中構造規則集 389
         11.8.1 實現sellitemincodeworkflow 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 處理dividebyzeroexception 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 實現cancelhandlerworkflow 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 實現dynamicconditionworkflow 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 增強trackingexampleworkflow 490
         15.3.2 測試修改後的工作流 490
         15.4 跟蹤規則計算 491
         15.4.1 實現trackingrulesworkflow 491
         15.4.2 測試工作流 492
         15.5 使用自定義跟蹤配置提取數據 493
         15.5.1 使用跟蹤配置 494
         15.5.2 實現trackingprofilehelper 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 實現mathservicestatefulworkflow 525
         16.4.3 發布新工作流 528
         16.4.4 測試web服務 528
         16.5 在工作流中調用web服務 528
         16.5.1 實現invokewebserviceworkflow 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 增強workflowruntimemanager 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 實現workfloweventbindingservice 649
         19.2.5 實現eventpropertydescriptor 653
         19.2.6 實現workflowpropertyvalueservice 657
         19.2.7 實現workflowtoolboxservice 659
         19.2.8 實現workflowdesigner 668
         19.2.9 實現mainform 674
         19.2.10 實現assemblyreferenceform 679
         19.2.11 實現newworkflowform 681
         19.3 使用設計器 683
         19.4 小結 687
      · · · · · ·     (
收起)