Just wanted to give an update on this. I'm working on the workflow engine 
nearly every day. Workflow engines are complicated things with lots of 
pitfalls that need to be taken into account. Having said that, I am getting 
closer to completing it.

What works:

   - Templates
   - Creating workflows on-the-fly
   - Serial and parallel steps (wait on more than one user/group at a time)
   - Due date calculation taking schedules, holidays, etc into account
   - Simple flow of a workflow (i.e. every step is completed successfully, 
   without issue)
   - Full delta auditing with support for writing audit logs to another DAL 
   instance
   - Triggers (when someone does something to a workflow, some code can be 
   executed)

What needs to be finished:

   - Step rejections (someone noticed a problem created in a previous step 
   and wants to send it back to be corrected)
   - Workflow monitors (users that aren't currently involved with the 
   workflow, but want to monitor the workflow's progress)
   - Workflow comments (have rejections and other comments on the workflow 
   been addressed)
   - Workflow check-list (high-level workflow objectives, created and 
   managed by users, basically just meta-data)
   - Documentation (API and User Guide)

Most of the functionality in the "needs to be finished" list has been 
written, but not tested. The engine is about 1500 lines of code right now, 
which includes about 350 lines of tests. One of my main goals has been to 
write a test suite that tests as many scenarios as possible. Writing a user 
guide with example usage will come after the engine has been accepted in 
web2py. I want to make sure the API doesn't need changing before I start 
writing actual documentation.

I started writing this engine because I needed to replace a proprietary 
engine I created in C# several years ago that has seen years of production 
use. Unfortunately, the old engine lacks a lot of features (parallel steps, 
monitors, comments, check-lists, auditing, etc) and is tied to a single 
specific object. I wanted a workflow engine that could attach a workflow to 
just about anything. I also wanted it to have better features, cleaner 
code, and be easier to use.

Hopefully, I will continue to make excellent progress on it and have 
something to submit for approval soon. I'll keep you posted!

Reply via email to