Skip to content
Dave Parker edited this page Sep 28, 2016 · 26 revisions

TheHat

TheHat is a Ruby based workflow task coordination system. You can use it to coordinate things like release cycles, deployment procedures, and pretty much anything where you have to make a bunch of things happen in a particular order.

TheHat aims at a very precise niche in the "workflow" world - precise enough that "workflow" applies only in the most generic sense of the word: Its goal is primarily to drive a predefined directed graph of tasks through to completion by tracking and prompting work by teams of people and/or automated systems in near real time.

You can use TheHat to drive teams and processes through things like:

  • Complex Methods of Procedure (MOPs) including
  • Software upgrades
  • Network reconfigurations
  • Configuration changes
  • etc
  • Long running "procedures" like
  • Software development cycles
  • Billing cycles
  • Technical sales procedures

Procedures codified as TheHat workflows become active entities - running programs. In a sense your procedures manage themselves. It can alleviate quite a lot of procedural drudgery and potential for mishaps that drudgery can lead to.

Take a look at a sample session to get a sense of what it does.

TheHat consists of

  • a workflow engine library
  • frontends for various scenarios
  • TTY
  • IRC
  • XMPP/Jabber MUCs
  • workflow status renderers
  • Directed graphs via graphviz
  • Text dumps
  • iCal
  • some helper scripts
  • A cgi script for viewing workflow progress
  • A script to convert Gnome Planner files to TheHat workflows

TheHat drives a conversation between workflow participants and itself, prompting workflow activities.

TheHat workflows are conceptually simple. They consist of a collection of steps, most of which are "gated" by one or more other steps. Gates are steps that must be successfully performed before they can be said to have been completed. In-progress workflow status can be viewed on the web as a directed graph like this:

Example of workflow in progress

The above example shows a series of workflow steps that lead to the making of a piece of toast. In order for the final outcome (the toast) to come about, a number of steps must occur in a certain order. The steps are workflow steps, and any step that require that one or more things have occurred before it before it can itself proceed are gated by those previous steps. In the example above you can see that the slice of toast is being inserted into the toaster now, but that the amount of toasting must first be adjusted before the toasting itself can begin.

TheHat is easily configured to allow you to watch your workflow progress, via a graph such as the one above, from a web page that TheHat automatically generates. The generated graphs can have associated tool-tips and hyperlinks to e.g. documentation via a automatically generated client side image map.

TheHat workflows are defined in a YAML style file such as:

- step: adjusttoasting
  description: Adjust toaster to desired toasting level
  owner: 
  startCommand: 
  notifyAtStart: []
  finishCommand: 
  notifyAtFinish: []
  url: 
  note: 
  group:
  - hardware
  gates:
  - gettoaster

You can create these by hand in your favorite editor. Tools are in the works to allow you to generate workflow files from other programs such as Gnome Planner.

TheHat has a modular source control interface modules that enable you to store your workflows in your source control system.

Clone this wiki locally