Workflow systems

Preview:

DESCRIPTION

devLink 2010 presentation on Workflow and Workflow Systems, using Ruby, MassTransit and WF 4.0 as examples.

Citation preview

Myths, Truths and Wishful Thinking

*Workflow Systems

Brandon SatromdevLink 2010

http://speakerrate.com/talks/4108

*About Me

*Technology Evangelist @ Microsoft

*Software and Enterprise Architect

*Based in Austin, TX

*Husband and Father

*Why are you here?

*What is "workflow"?

*What makes a “Workflow System” different?

*What kind of problem is workflow designed to solve?

*Can workflow problems only be solved by tools?

*Are workflows always visual?

*How do I design a “workflow system”?

*You Want The Truth?

*Word Association

What comes to mind when you hear “workflow”?

*Visual

*Tools

*Process Automation

*Modifiable

* Can be maintained by someone other than the

original developer

*Six-Figure Cost

*Others?

*Here’s the truth…

* Our perception of workflow is wrong…

*Maybe “Workflow” can be simple…

*State Machine Demo

*Workflow: The Cure for Insomnia Definition

A workflow is a depiction of a sequence of operations, declared as work of a person, a group of persons, an organization of staff, or one or more simple or complex mechanisms. Workflow may be seen as any abstraction of real work, segregated in workshare, work split or other types of ordering. For control purposes, workflow may be a view on real work under a chosen aspect, thus serving as a virtual representation of actual work. The flow being described often refers to a document that is being transferred from one step to another. – from http://en.wikipedia.org/wiki/Workflow

*Workflow: simplistic

definitions

“abstraction of real work”

“coordination of work in a system”

*Isn’t that CODE?

*The Difference is…

*HUMANS are the process…

*…TIME Passes...

*…And The only constant is

CHANGE.

* Qualities of Workflow systems…

*Declarative

Activity A

Activity B

Activity A

Activity B

Activity C (Idle)

Activity D

(Active)

*Persistent

Persistence Store

External Stimulus

*Dynamic

Activity A

Activity B

Activity C

Activity D

Activity E

Activity F

Business Change

Divert to new activity

*Configurable

Activity A

Activity B

Activity C

Rules Store

Activity D

Activity E

*Centrally

Defined

*… though not necessarily

visual.

static SessionSaga(){ Define(() => { Initially( When(NewSession) .Then((saga, message) => saga.NewSessionStarted(message)) .TransitionTo(SessionActive) );

During(SessionActive, When(FeedbackCheckRequested) .Then((saga, message) => saga.CheckForFeedback(message)) When(new Timer() .StartOn(session.Start)

.RunAtInterval(session.CheckInterval) .Until(session.End))

.Then((saga, message) => saga.CheckForFeedback(message)) When(SessionComplete) .Then((saga, message) => saga.SessionEnded(message)) .Complete() ); });}

*Not just for workflow…

*State machine

*Saga

*Service Buses

*Workflow

*Saga Demo (MassTransit)

*Visual?

*Workflow Demo (WF 4.0)

* When Adopting Workflow, Consider…

*Complexity of the problem

*Skill level of development staff

*Who keeps it running?

*Value of a visual representation

* Any GOOD system will encourage good design…

*Declaratively define the FLOW

*Define discrete, separate ACTIVITIES

*Keep the RULES out of code

*Did We Answer These?

*What is "workflow"?

*What makes a “Workflow System” different?

*What kind of problem is workflow designed to solve?

*Can workflow problems only be solved by tools?

*Are workflows always visual?

*How do I design a “workflow system”?

*Resources

*Ruby Statemachine :: http://bit.ly/rstatemachine

*MassTransit :: http://masstransit-project.com/

*WF4 :: http://bit.ly/wf4-msdn

*WebMatrix :: http://bit.ly/devlink-wm

*Demo Source :: http://github.com/bsatrom/WorkflowSystems2010

*Questions?

* Email: brsatrom@microsoft.com

* Twitter: @TheSatch

* Blog: www.userinexperience.com

* Rate this talk: http://speakerrate.com/talks/4108

Recommended