Chapter 1: A Quick Tour of Windows Workflow Foundation
Why Windows Workflow Foundation?
Implementing a Custom Activity
Adding the Switch<T> and Assign Activities
Chapter 2: Foundation Overview
Custom Activity Designers and Validation
Compensation and Exception Handling
System.Activities.DurableInstancing
System.Runtime.DurableInstancing
System.Activities.Presentation
System.ServiceModel.Activities
Definition vs. Runtime Instance
Definition vs. Runtime Variables
VB Primer for Workflow Developers
Implementing an Activity in Code
Declaring an Activity with Xaml
Declaring an Activity with Code
Implementing an Asynchronous Activity
Understanding the WorkflowInvoker Class
Using the WorkflowInvoker Static Methods
Declaring the HostingDemoWorkflow
Simple Hosting of the Workflow
Passing Arguments with Workflow Properties
Using the WorkflowInvoker Instance Methods
Understand the WorkflowApplication Class
Constructing a WorkflowApplication
Assigning Code to Delegate Members
Configuring and Managing Persistence
Manually Controlling a Workflow Instance
Using the WorkflowApplication Class
Hosting the Workflow with WorkflowApplication
Terminating a WorkflowInstance
Understanding the ActivityXamlServices Class
Using the ActivityXamlServices Class
Designing the ASP.NET Application
Managing Multiple Workflow Instances
Implementing a Workflow Manager
Implementing the InstanceInfo Class
Implementing the User Interface Code
Using the WPF SynchronizationContext
Chapter 5: Procedural Flow Control
Understanding the Procedural Modeling Style
Understanding the Switch<T> Activity
Understanding the While and DoWhile Activities
Using the While and DoWhile Activities
Implementing the InventoryLookup Activity
Declaring the GetItemInventory Workflow
Understanding the Parallel Activity
Understanding Parallel Execution
Creating the ParallelDemo Project
Declaring the ParallelDemo Workflow
Creating the GetItemLocation Project
Declaring the GetItemLocation Workflow
Obtaining Asynchronous Execution with the Parallel Activity
Implementing the InventoryLookupAsync Activity
Modifying the GetItemLocation Workflow
Chapter 6: Collection-Related Activities
Understanding the ForEach<T> Activity
Understanding the Collection Activities
Using the ForEach<T> and Collection Activities
Creating the ActivityLibrary Project
Implementing the FindInCollection<T> Activity
Declaring the InventoryUpdate Workflow
Using the ParallelForEach<T> Activity
Implementing the Dictionary-Related Activities
Declaring the InventoryUpdateDictionary Workflow
Understanding the InvokeMethod Activity
Using the InvokeMethod Activity
Revising the ItemInventory Class
Chapter 7: Flowchart Modeling Style
Understanding the Flowchart Modeling Style
Using the Flowchart Modeling Style
Implementing the ParseCalculatorArgs Activity
Defining Arguments and Variables
Implementing the InventoryLookup Activity
Defining Arguments and Variables
Defining Arguments and Variables
Implementing the FindInCollection<T> Activity
Defining Arguments and Variables
The Need for Long-Running Workflows
Implementing the GetString Activity
Implementing the ParseCalculatorArgs Activity
Understanding Workflow Extensions
Declaring the Extension Interface
Implementing the HostEventNotifier Extension
Implementing the NotifyHost Activity
Declaring the BookmarkCalculatorExtension Workflow
Implementing the HostQueueNotifier Extension
Understanding the ActivityAction
Implementing the NotifyHostWithAction Activity
Declaring the BookmarkCalculatorAction Workflow
Using the InvokeAction Activity
Understanding the Pick Activity
Implementing the WaitForBookmark Activity
Declaring the ProblemReporting Workflow
Configuring Endpoints and Bindings
Understanding Workflow Services
Service Contracts and Message Types
Declaration and Hosting Options
Controlling Workflow Service Instances
Tasks for a Request/Response Operation
Implementing the OrderProcessing Workflow Service
Creating the ServiceLibrary Project
Implementing Request and Response Classes
Declaring the Service Operation
Publishing a Workflow Service to IIS
Implementing a Client Application
Testing the Client Application
Implementing a Workflow Client
Implementing Custom Activities
Implementing the InitiateOrderProcessing Workflow
Testing the Client Application
Self-hosting the Workflow Service
Understanding the WorkflowServiceHost
Tasks for Self-hosting a Service
Implementing the ServiceHost Application
Testing the Self-hosted Service
Using the WorkflowClient Application
Chapter 10: Workflow Services Advanced Topics
Using Context-Based Correlation
Guidelines for Context-Based Correlation
Declaring the ShipOrder Workflow Service
Modifying the OrderProcessing Service
Hosting the ShipOrder Workflow Service
Configuring the ServiceHost Application
Testing the Revised OrderProcessing Workflow
Using Content-Based Correlation
Guidelines for Content-Based Correlation
Modifying the ShipOrder Workflow Service
Configuring the ServiceHost Application
Testing the Revised Workflow Service
Implementing a Duplex Message Exchange Pattern
Guidelines for the Duplex Message Exchange Pattern
Declaring the CreditApproval Workflow Service
Modifying the OrderProcessing Service
Hosting the CreditApproval Workflow Service
Configuring the ServiceHost Application
Testing the Revised Workflow Service
Using a Custom Workflow Extension
Implementing the OrderUtilityExtension
Implementing the GetOrderId Activity
Modifying the OrderProcessing Workflow Service
Testing the Revised Workflow Service
Understanding Exceptions and Faults
Flowing Transactions into a Workflow Service
Chapter 11: Workflow Persistence
The Need for Workflow Persistence
Understanding Workflow Persistence
Actions that Trigger Persistence
Persisted Data and Extension Mechanisms
Understanding WorkflowApplication Persistence
Understanding the SqlWorkflowInstanceStore
Using the SqlWorkflowInstanceStore with WorkflowApplication
Creating the ActivityLibrary Project
Implementing the Item-Related Classes
Implementing the Custom Extension
Implementing Activities that use the Extension
Implementing Bookmark-Related Activities
Declaring the OrderEntry Workflow
Hosting and Persisting the Workflow
Understanding WorkflowServiceHost Persistence
Using the SqlWorkflowInstanceStore with WorkflowServiceHost
Declaring the OrderEntryService Workflow
Testing the ServiceHost Project
Configuring the Client Project
Chapter 12: Customizing Workflow Persistence
Understanding the PersistenceParticipant Classes
The PersistenceParticipant Class
The PersistenceIOParticipant Class
Using the PersistenceParticipant Class
Modifying the ItemSupportExtension Class
Modifying the Client Application
Configuring the Client Application
Understanding the Management Endpoint
Modifying the ServiceHost Configuration
Modifying the Client Application
Configuring the Client Application
Implementing a Custom Instance Store
Understanding the InstanceStore Class
Understanding the Instance Persistence Commands
Understanding the InstancePersistenceContext Class
Implementing a File System–Based Instance Store
Implementing the FileSystemInstanceStoreIO Class
Modifying the ServiceHost Project
Testing the Custom Instance Store
Chapter 13: Transactions, Compensation, and Exception Handling
Understanding Default Exception Handling
Implementing the Example Workflow
Enabling LINQ Access to the AventureWorks Database
Implementing the GetOrderDetail Activity
Implementing the UpdateProductInventory Activity
Implementing the InsertTranHistory Activity
Implementing the ExternalUpdate Activity
Implementing the DisplayProductInventory Activity
Declaring the UpdateInventory Workflow
Declaring the DisplayInventory Workflow
Understanding the TryCatch Activity
Declaring the UpdateInventoryTryCatch Workflow
Understanding the TransactionScope Activity
Using the TransactionScope Activity
Declaring the UpdateInventoryTran Workflow
Implementing the ExternalVoid Activity
Declaring the UpdateInventoryComp Workflow
Manually Triggering Compensation
Declaring the UpdateInventoryManualComp Workflow
Understanding the CancellationScope Activity
Understanding Workflow Tracking
Workflow Tracking Architecture
Providing AdventureWorks Access
Enabling ETW Workflow Tracking
Including Selected Workflow Instance States
Including All Workflow Instance States
Adding Selected Activity States
Adding Selected Scheduled Records
Including Custom Tracking Records
Developing a Custom Tracking Participant
Implementing the Tracking Record Serializer
Implementing the Custom Tracking Participant
Testing the Tracking Participant
Developing a Nonpersisting Tracking Participant
Implementing the Tracking Participant
Testing the Tracking Participant
Using Workflow Tracking with a Declarative Service Application
Declaring the InventoryService Workflow
Configuring Tracking in the Web.config
Loading Tracking Profiles from App.config
Implementing a Tracking Profile Loader
Defining the Tracking Profile in the App.config file
Testing the Tracking Profile Loader
Chapter 15: Enhancing the Design Experience
Understanding Activity Designers
Understanding Expression Types
WorkflowItemPresenter and WorkflowItemsPresenter
Metadata Store and Designer Assignment
Supporting Activity Properties
Implementing the CalcShipping Activity
Viewing the Default Design Experience
Associating the Activity with the Designer
Using the MetadataStore to Associate a Designer
Supporting Expanded and Collapsed Modes
Declaring the Collapsible Designer
Changing the Designer Attribute
Testing the Collapsible Designer
Supporting a Single Child Activity
Implementing the MyWhile Activity
Supporting Multiple Child Activities
Implementing the MySequence Activity
Supporting the ActivityAction Activity
Implementing the MyActivityWithAction Activity
Using the RequiredArgument Attribute
Using the OverloadGroup Attribute
Using Constraints for Validation
Implementing a Simple Constraint
Validating Against Other Activities
Implementing the Validation Tests
Executing the Validation Tests
Implementing Activity Templates
Chapter 16: Advanced Custom Activities
Understanding Your Parental Responsibilities
Handling a Cancellation Request
Reacting to Abort and Terminate
Implementing the Custom Activity
Implementing the Activity Designer
Implementing a Test Application
Repeating Execution of a Single Child
Implementing the Custom Activity
Implementing the Activity Designer
Implementing the Custom Activity
Implementing the Activity Designer
Implementing the Custom Activity
Implementing the Custom Activity
Implementing the Activity Designer
Using the DynamicActivity Class
Constructing a DynamicActivity
Implementing the OrderScope Activity
Implementing the OrderAddItems Activity
Chapter 17: Hosting the Workflow Designer
Understanding the Workflow Designer Components
Understanding the WorkflowDesigner Class
Understanding the ToolboxControl
Understanding the EditingContext
The Self-hosting Designer Workflow
Implementing a Simple Workflow Designer
Loading and Saving the Definition
Implementing the ValidationErrorService
Adding Activities to the Toolbox
Referencing the Custom Designer
Tracking the Selected Activity
Chapter 18: WF 3.x Interop and Migration
Reviewing Migration Strategies
Understanding the Interop Activity
Limitations of the Interop Activity
Implementing a WF 3.5 Activity
Implementing a WF 3.5 Custom Activity
Implementing the WF 3.5 Workflow
Using the ExternalDataExchangeService
Implementing the Event Arguments
Implementing the Data Exchange Service
Generating the Communication Activities
Executing Rules Using the Interop Activity
Implementing the SalesItem Class
Declaring the WF 3.5 Workflow and Rules
Executing Rules Using a Custom Activity
Implementing a SalesItemWrapper
Implementing the ApplyRules Activity
Appendix B: Comparing WF 3.x to WF 4
3.145.17.18