/ellington

A different take on flow based programming.

Primary LanguageRubyMIT LicenseMIT

Lines of Code Code Status Dependency Status Build Status Coverage Status Downloads

Ellington

Important

The wiki docs are out of date!

You'll have to review the examples & code itself for now. I'll be working to bring the wiki docs current soon.


Named after Duke Ellington whose signature tune was "Take the 'A' Train". The song was written about New York City's A train.

Subway Tunnel

Ellington is an architecture for modeling complex business processes.

Ellington brings discipline, organization, and modularity to a project.

The nomenclature is taken from New York's subway system. We've found that using consistent and cohesive physical metaphors helps people reason more clearly about the complexities of software. The subway analogy isn't perfect but gets pretty close.

Goals

  • Provide a consistent nomenclature thats simple enough to be shared by engineering and the business team.
  • Establish constraints which ensure complex projects are easy to manage, develop, and maintain.

Start Here

Lexicon

  • Conductor - A supervisor responsible for putting passengers on a route.
  • Passenger - The stateful context that will be riding the virtual subway.
  • Route - A collection of lines and their connections.
  • Line - A linear track that moves the passenger from point A to point B.
  • Station - A discreet chunk of business logic.
  • State - A status or disposition assigned to the passenger.

Ellington Diagram

Note: We recommend Ellington for projects where a good understanding of the problem domain has been established. You might want to spike a solution to learn your project's requirements before using Ellington.

Run the demo

git clone git://github.com/hopsoft/ellington.git
cd ellington
bundle
bundle exec ruby examples/social_media/demo.rb

Review the demo project here.