Workflows in Java
So how does application workflow relate to Java? Because Java is used heavily in corporate environments, it makes sense to provide a workflow system that integrates into these corporate systems. For example, if the corporate system uses J2EE, we can attach a workflow system as a message handler and simply receive updates as to when a unit of work is being updated, and then change state accordingly.
When the application is not utilizing an application server, things get a little more complicated; we need to integrate the workflow system more tightly into the application. One option is implementing a messaging system (creating a system similar to the J2EE situation just described); another is building the workflow directly into the application and checking against the workflow every time a unit of work is updated.
Utilizing an existing workflow solution is easier than creating a custom solution. Several very good open source projects are available that provide a standardized workflow engine, allowing management to use an existing tool to create and update the workflows in the system. Here are two favorites:
Enhydra JaWE (Java workflow editor). This graphical workflow editor saves to an open standard. Enhydra JaWE allows for non-development staff to design a workflow and then utilize it in any standard's compliant workflow engine.
Enhydra Shark (Java/XML workflow editor). An open source workflow server written entirely in Java, Enhydra Shark is standards compliant and can use the documents produced by the Enhydra JaWE editor.
The alternative, creating a custom solution, requires planning how the company will update the workflow. If the company is small enough, a system maintainer may be able to keep workflows up to date. If not, some form of graphical application will likely need to be created to allow a non-developer to update the workflows.
Implementing software workflows lends several powerful tools to management:
Reporting. The data that the workflow engine stores gives management the ability to find bottlenecks in the operation, determine productivity of individual workers, and discover how much work is completed within a given time span.
Rerouting. The ability to dynamically reroute the flow of work at any time helps the business to keep work moving that would normally sit on an employee's desk while that person is out of the office due to illness, travel, etc. The workflow engine can also reroute work within a group of employees based on the employees' existing queues. For instance, if a unit of work is taking longer than normal to complete, rather than building up a backlog in that employee's queue, the work can be spread among the other staff so that no one person is overloaded.
Accountability. Without some form of tracking in place, it's very easy for a unit of work to be lost or misplaced. With a software workflow system, accountability is virtually guaranteed. Instead of wondering where a unit of work is, the manager can simply look at the workflow engine to determine who had it last.