A workflow application is a software application which automates, to at least some degree, a process or processes. The processes are usually business-related but can be any process that requires a series of steps to be automated via software. Some steps of the process may require human intervention, such as an approval or the development of custom text, but functions that can be automated should be handled by the application. Advanced applications allow users to introduce new components into the operation. For example, consider a purchase order that moves through various departments for authorization and eventual purchase. The order may be moved from department to department for approval automatically. When all authorizations are obtained, the requester of the purchase order is notified and given the authorization. A workflow process may involve frequent maintenance. For example, the normal approver of purchase orders may be on vacation, in which case, the application will request approval from alternate approvers. Development Workflow applications can be developed using a graphical designer, a programming language, or a combination of the two. Some software products provide a means to create workflow applications with a diagram-based graphical designer alone. These types of systems rely on the ability to capture all of the information relevant to the workflow process through a specialized interface aimed at non-programmers, and then compile that information into a functional workflow application. Sometimes, however, the need for utilizing a programming language arises when more complex rules need to be integrated into the workflow, such as calculations for validating data in input forms. For code-based workflow design, workflow applications can be developed with any general-purpose programming language, but specialized workflow languages also exist. These usually come with an associated graphical notation (such as BPMN), but some are textual or XML-based. Specialized languages that can be used for workflow definition in this way include: XPDL YAWL (Yet Another Workflow Language) SCUFL (Simple Conceptual Unified Flow Language) The above languages are based on XML syntax and while suitable for manipulation by software, they may be difficult for non-technical people to work with. Therefore, their use is generally augmented by graphical notations enabling the creation of flowchart-like diagrams that are easier for people to develop and interpret: creating such diagrams is in effect a form of "graphical" programming. The software package that allows a user to develop a workflow diagram will typically translate a diagram into its XML equivalent.