Saturday, January 12, 2008

Pier process engine is alpha...and an assortment of prophetic remarks

I am excited to announce that the Pier process engine for Ruby on Rails is alpha. I am defining alpha as a "functionally whole" system, in OS jargon: we have a kernel. Now that the process engine is alpha, we can begin end-to-end testing using the process patterns outlined here, and start building feature enhancements. In its primordial alpha state the rails process engine can (and you may want to sit down for this):
  • Read and instantiate a serialized process definition.
  • Create and load a token with contextual application data.
  • Launch the token into a process flow
  • Execute the flow: creating forks and merges, executing embedded logic
Wow, pretty amazing stuff, no? Well it is! The great part about reaching this stage is despite any the future headaches, strange bugs, and the inevitable its-just-too-slow refactoring, we have a foundation to work off of and a number of proven concepts that are past the point of no return. It's alive.

Great, so what's next? The goals for next week are to build out the engine and integrate more closely with the rails framework. First, in keeping with the test driven approach, I will build and execute the process pattern tests mentioned at the beginning of this post. Running through these detailed tests and exercising the system will likely reveal missing features and a host of bugs. Fun!

Next, one major requirement that I already know the tests will reveal is the engine's ability to collect user input at runtime. In order to facilitate this, I will need to extend the rails controller with process engine power. In terms of MVC architecture, and in the context of a single application, the process engine enhances the controller. Certain processes may need user input to continue, so my goal is to create a seamless and intuitive connection between the process engine, rails controller, and application views.

As a final note, I'd like to set aside the process engine sub-project and take a look at the big picture. Pier is a BPM solution, not just a process engine. Dave is doing incredible work on the process designer side and I'm really excited to see the two sub-projects working together.

Once these sub-projects are fully integrated and tested, Pier will be capable of bringing agility to the enterprise application development process. Our goal is to enhance business software planning and development by providing Business Analysts, Information Architects and Techs an intuitive "living" picture of the system as it grows from a couple napkin doodles to a production ready application.

On a larger scale, I think Pier will be an essential piece of the emergent group of light weight, service oriented solutions built off the Rails framework. These solutions will promote and enable the development of multi-application systems. As everyone already knows, web-applications are talking to each-other. SOA was developed in the business world to define and encapsulate this phenomena. Public facing sites are quickly standardizing and catching up. One of the "third-arms" in the evolution of multi-application systems will be applications that do nothing more than orchestrate other applications ( Yahoo Pipes is an example of this concept). Pier is being built with these SOA concepts in mind.

No comments: