<- back to the portfolio

When we first decided to try and solve our in-processing problem, we looked around for an existing solution to the workflow problem. Unfortunately at the time (and largely still today) the only solutions that tackled generic workflow management were hugely expensive applications from the likes of Oracle and IBM. Eventually we decided to go ahead and build a flexible workflow management application ourselves, with the hope of turning it into an open source project.

The result is a fully object oriented application written in PHP. The basic concepts are that of a workflow, an element, and an execution. A workflow defines the template that each execution will follow. The execution is one run of the workflow, with a reference object attached to it. In the case of our in-processing workflow, the reference object is the person being hired.

Workflow overview
The overview of a workflow execution displays an at-a-glance view of what steps are finished, and where the workflow is currently at.
Each element is a separate object that can contain specific code for notifying people, checking existing values, or doing other work.
Workflow Element editing
Each element can track whatever data is needed for that element. When an element is marked completed, the outbound elements attached to this one are activated. Each element has an activation and completion hook which allows custom code to be run.

In this case when the element is completed, a new user is inserted into our users table, and the appropriate roles for this position are assigned.

Each workflow and element can be versioned, so that improvements can be made without breaking existing executions.
<- back to the portfolio