Tuesday, September 2, 2008

Tech Ed 2008 Day Two - SOA305 Getting workflows running and talking in your applications

  • (Speaker: Mark Rees)
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