This package lets you define the process that your projects, vacation requests, invoices or any other important object of interest must go through to avoid that any cases falls through the cracks.
Workflows are a way to formalize and understand any business process involving multiple steps and complex participation amongst workers to achieve the final result. In a manufacturing or engineering setting the workflow can be quite rigid and inflexible, while in service and consulting industries changes can be rapid and a process completly out of order and coordination among project members can take a diverse/infinite number of steps and paths towards completion. ]project-open[ workflows are adaptable and customizable to account for and attempt to portray the actual realities of the business world.
]po[ workflows are based on the Petri-Net formalism, inspired by an article from W.M.P. van der Aalst. A ]po[ workflow consists of the following elements:
]po[ supports several types of transitions, as depicted in the figure above:
Using these basic elements, the Petri-Net formalism allows to specify arbitrarily complex processes. Petri-Nets are known to be sufficiently powerful to represent even workflows specified in workflow formalisms such as BPMN and EPC.
In ]po[, every workflow is related to a business object such as a project, vacation request, [translation task] etc. There are more then 40 business objects in ]po[. There can be more then one active workflow per business object.
There are several links between the business objects and it's workflow:
With ]project-open[ V3.4.0, the following objects already include a workflow integration:
In order to start a workflow for these objects, you have to:
For example, you may create a new workflow with the key "simple_vacation_approval_wf" designed for the approval process of absences of type "Vacation". In order to enable this workflow, please enter the "simple_vacation_approval_wf" into the "String1" field of Admin -> Categories -> Intranet Absence Type -> "Vacation". The next time you create a new "Vacation" absence, a workflow is automatically created.
Please note that the WF integration of the objects above includea "skipping" the first WF transition. This trick allows to design workflows with a clean optical appearance with the first transition representing an "Edit Object" action that is not necessary directly after the creation of an object.
The "Inbox" is the interface between the user and the workflow. The inbox will show a new task every time that a user needs to perform a certain workflow action - for example approve a vacation request. This way, the inbox acts like a cockpit for every ]po[ user and allows the user to take actions (approve or reject vacation requests) to follow-up the status of the users's own requests.
The inbox can also send out Email notifications to user for each new task.
Real-world experience with workflows shows that the assignment of users to actions/transitions is suprisingly complex. Assignments depend on the workflow transition (approving a project budget vs. executing the project), on the type of workflow (PMs approve vacation requests of their project members, HR approves sickness leaves) and on the context (project budgets > 50.000 EUR need to be approved by Senior Managers, while the Account Managers may approve smaller budgets).
In order to deal with these real-world requirements, the ]po[ workflow provides several options to assign a transition to a user:
Once a user is assigned to a transition and he clicks on the link in his Inbox, the user is transferred to a page ("panel") where he or she can interact with the system - pressing an "Approve" button, entering a comment or filling out a form.
The ]po[ workflow provides a number of default panels:
"Callbacks" is the mechanism that allows ]po[ workflows to modify its underlying business object and the system in general. For example let's assume that the HR department has approved a vacation request. We now want to set the status of the vacation request to "approved". Technically, a callback is nothing but the name of a PL/SQL procedure, and the following PL/SQL procedure is readily available for this purpose:
im_workflow__set_object_status_id(case_id, transition_key, object_status_id)
The "case_id" and "transition_key" variables are filled in by the ]po[ workflow automatically, so that a developer only needs to specify the "object_status_id". Looking at Admin -> Categories -> Intranet Absence Status we see that the status "active" has the status_id=16000.
Other callbacks are used to assign users to otherwise unassigned transitions and to implement the business logic for "guard" decisions.Please see the Workflow Developer's Guide for a detailed description of callbacks.
and for reference:
These workflows come pre-defined (as of version 3.4) as part of the basic ]project-open[ download and install.
Related Help
Related Tutorials
Related Object Types
Related Packages
Related Modules
