Ron Conescu (650) 388-6806   •   RonConescu (at) gmail (dot) com

Task Scheduler

2000, BroadRiver Communications

Problem

Design a corporate workflow engine that worked with BroadRiver's existing CRM tool, Clarify.

Solution

The Clarify product contains a facility for managing individual users' daily tasks. I extended the task engine to support sequential sets of tasks: one task (a "predecessor") would lead to several other tasks (the "successors"), which could not themselves be completed before their predecessor was completed. The system thus allowed a manager to ensure that all tasks were completed in a certain order.

In addition to helping design the system architecture, my specific task was design and build the engine which would enforce the dependencies between tasks, allowing tasks to be organized hierarchically.

Architecture

Clarify's development environment is an offshoot of an early release of Visual Basic. Among other things, it is not an object-oriented environment. However, I find that object-oriented designs tend to work well — they tend to let you represent human reality closely.

So I did an object-oriented design for the task scheduler, and then translated that design into Clarify's procedural environment. I did this at different levels of technical detail, for different audiences:

  • A high-level description of the problem
  • English descriptions of each OO concept
  • Pseudocode representing the actual software I would write if it were an object-oriented environment
  • A glossary describing terminology I invented or abused for the design

I then translated the whole the middle two sections into procedural description of the same process. Here is that document:

Task Scheduler design document

As with most of my writing, I have organized the English portions of the document as a tutorial.

Here is the source code:

Task Scheduler source code