Some steps of the process may require human intervention, such as approval or the development of custom text, but functions that can be automated should be handled by the application.
These types of systems rely on the ability to capture all relevant information for the workflow process through a specialized interface aimed at non-programmers.
Another approach to developing workflow applications is to use a programming language in conjunction with libraries and interfaces that capture abstractions for task coordination.
One limitation of certain purely diagram-based techniques, such as BPMN mentioned above, is that to fit the purpose of workflow specification, such notations need to be enhanced with additional constructs.
For the purpose of static analysis, e.g. to detect semantic errors at design time, it is also possible to represent workflow in a mathematical form using a formal notation such as Petri nets.