Use for:
Long Running
Episodic - Start/Stop
State Machine or sequential
Will it increase your productivity
One workflow runtime per app domain.
Typically create the workflow runtime using the singleton pattern.
Each workflow will have an instanceID GUID that is used to reference instance beyond the lifetime of the application.
SqlWorkflowPersistenceService
Threading - 1 thread per worklow at any time. Give thread safety and Data syncronisation. However, there is no assurance that it will always be on the same thread.
Thread affinity.
Default scheduler from the thread pool. Async to the caller thread (returns instantly)
Manual Scheduler - caller thread will wait for the workflow to return. Important for controlling the number of threads. High load environments.
Has different behaviour for handling delays. Will need to manually resume. True will create a new thread to resume after the delay.
Persistence
In memory by default. Can't handle restarts.
SqlWorkflowPersistenceService - Scheme and Logic (stored proc) install scripts
DB polling time defaults to 60 seconds
select * from InstanceState
Tracking
Capture events and data during the execution of a workflow.
Performance measurement
Profiles to filter what to track - points and locations
Tracking_schema.sql Tracking_Logic.sql
Useful to let processes outside of workflow know the state.
Communication
Input/output params
.NET 3.0 External Data Exchange Model
Recommend Microsoft .NET 3.5 Send Receive Activity
Full WCF for WWF.
Send - Call a WCF Service
Receive - A WCF Service will call the workflow
WorkflowServicehost - WCF WWF Hybrid
ContextBinding for WWF like wsHTTPBinding with instanceId in header