Putting a friendly face on statelessness, the Stateless Designer Visual Studio Extension


It's Monday and it's time for another Visual Studio Extension! Are you excited? (Come on... you know you are... okay, be nice now... lol...) Today we're highlighting an extension that's just a little different and something you might think you don't need, but maybe after you take a closer look you'll be rethinking that...

Morten Frederiksen and, by extension, Nicholas Blumhardt are bringing us today's extension...

Stateless Designer (a designer for the stateless library [yeah, I know, funny that...])

Visual Studio extension to support visual design of stateless state machines. Support for Visual Studio 2012 and Visual Studio 2013.




About stateless

stateless is a lightweight C# hierarchical state machine framework made by Nicholas Blumhardt. The stateless project is hosted here: http://code.google.com/p/stateless/. If you don't know stateless, here is a comparison between stateless and Windows Workflow Foundation: Comparison between Stateless (on google code) and Windows Workflow. stateless also comes as a NuGet package: http://nuget.org/packages/Stateless. stateless is a great alternative to WWF.

About Stateless Designer

The goal for this projects is to allow software developers to design a state machines visually. Why a statemachine can improve your design. The true power of using a state machine is to have a graph showing the states with transitions. Stateless Designer can help you achieve this.

Stateless Developer use case:
- install Stateless Designer
- start Visual Studio
- create or open a C# project
- Add new Item to the C# project
- select Stateless State Machine
- design your state machine
- a C# class is created with your state machine

Currently supported features
- Triggers without arguments
- OnEntry and OnExit delegates
- Reentrant transitions
- OnUnhandledTrigger delegate - new in Stateless Designer 1.4
- Guard Clauses: PermitIf and PermitReentryIf functionality - new in Stateless Designer 1.4
Technology used

- Visual Studio Extensibility
- stateless

Got any improvement ideas?

Please add ideas to the discussions.
Create an issue if you find a defect.
Vote on this if you would like Stateless Designer to support Visual Studio 2010.


Getting started with this designer is easy, but still you should walk through the provided guide.

Getting started using Stateless Designer step-by-step.

Using Stateless Designer by example

This examples shows how to use Stateless Designer in a WPF application to crate a state machine that controls the UI flow.

Install Stateless Designer



And the great part is that the source for both the Designer by Morten Frederiksen and stateless library by Nicholas Blumhardt is available...

Stateless Designer source


What is stateless? Funny you should ask...

stateless (A C# Hierarchical State Machine)

Create state machines and lightweight state machine-based workflows directly in .NET code:


This project, as well as the example above, was inspired by Simple State Machine.


Most standard state machine constructs are supported:

  • Generic support for states and triggers of any .NET type (numbers, strings, enums, etc.)
  • Hierarchical states
  • Entry/exit events for states
  • Guard clauses to support conditional transitions
  • Introspection

Some useful extensions are also provided:

  • Ability to store state externally (for example, in a property tracked by Linq to SQL)
  • Parameterised triggers
  • Reentrant states
Hierarchical States
Entry/Exit Events
External State Storage
Guard Clauses
Parameterised Triggers
Ignored Transitions and Reentrant States

Project Goals

Stateless is a base for exploration of generic and functional programming to drive workflow in .NET.

This page is an almost-complete description of Stateless, and its explicit aim is to remain minimal.

Please use the issue tracker or the if you'd like to report problems or discuss features. Suggestions can also be made at the Stateless UserVoice forum.

You're now ready to get started designing your stateless state...

The Discussion

Conversation locked

This conversation has been locked by the site admins. No new comments can be made.