The Cúram WMS offers the following features:
- Allocation - It can handle complex allocation logic for assigning
work to users.
- Consistency - It provides process automation which can improve
consistency of outcomes.
- Flexibility - It provides software control over processes
which enables re-design in line with changing business needs.
- Traceability - It provides a visual representation of when
actions were taken, by whom and what stage a given process is at.
- Customizability - Customers can re-sequence workflows provided by
the application to suit their process needs.
However, using Cúram workflow does not come for free. There are trade offs to be considered when deciding to use workflow to complete a business process. The following points must be taken into account:
- Performance - There is state maintenance overhead in enacting
workflow processes.
- Atomicity - Workflows are not atomic as each step can execute within
its own transaction. This makes failure in later transactions difficult
to recover from.
Since workflow is specifically about the automation of business processes, the following guidelines should be considered when deciding when to use the Cúram WMS to automate specific business processes:
- Don't do any design until you have the requirements. Documented
business process requirements are a pre-requisite for considering when to
apply workflow.
- A workflow should be considered when a business process requires
human interaction.
- A workflow should not be used if a process can be automated end-to-end
with no human interaction because using workflow in this scenario provides no
benefit. It does not add any consistency, customizability or traceability above
straight API calls and such the process contains no steps that require allocation.
Therefore, unless there is a flexibility requirement to be able to re-sequence
the steps at runtime, workflow should not be considered for such scenarios.
- When presented with sequences of automatable steps in a business process,
consider providing APIs for each step and composing those API calls into a single
method (which can then be called from the workflow)