Galaxia Workflow Engine
A team from developers have started a port from Galaxia Workflow to eGroupWare.
This should be the basic for all applications in which we want use workflow. It is now stable and available, starting with egroupware 1.2. more info in
Work-flow engine.
GalaxiaWorkflow
0. Obstacles for OSS GroupWare
reinerj, knecke and I (ralfbecker) had an interesting talk on the
CeBit with someone from an IT consulting. This guy does consulting for
GroupWare based on the specific needs of a company. They usually include in their selection / recommendation commercial products like LotusNotes
?, GroupWise
?, ExchangeServer
? and OSS
GroupWare system like eGroupWare
On the question what are the
biggest obstacles for OSS GroupWare systems to be used / recommended he answered:
- missing ability to implement a WorkFlow, like in LotusNotes? (that's where that page is about)
1. What is WorkFlow and a workflow-system
A workflow defines a common order of process-steps to be taken for a certain type of work.
A workflow-system facilitates that and ensures all steps are taken (and in the right order).
2. How are (free definable) WorkFlow's implemented in other systems
In LotusNotes
? you can create a new database and add multiple views with free definable fields to them. One type of this fields are status-fields which allow to define common views for each status and also what has to be entered / done to get to the next status.
A fixed order of this status like eg:
- first contact with customer
- send information package
- phone him after 3 days
- meet him personally
- write offer
- write contract
- work on contract
- write invoice
- money received
and view for each of them defines a
WorkFlow. Certain statuses are visible to certain people only and appear on their todo list.
3. How to implement a WorkFlow system in eGroupWare
The first thought might be thats a tough task and LotusNotes
? is very much advanced from eGroupWare and the other OSGroupWare
? projects.
I ((ralfbecker)
?) see a change to implement a system like that in a overviewable range of time within eGroupWare:
- WorkFlows? in eGroupWare have to be own apps and db-tables, generated automatically by the WorkFlow app. In the first step u have to add general data like name of the WF and db-table, a description and other stuff we usually have in the apps setup.inc.php.
- Adding views / statuses to the WF: The WF app calls the eTemplate editor and u can define the view, with all fields you need. Each field have label, type and (unique) name.
- If a view is completed the WF app generates a new lang-file, a eTemplate-distribution-file and a list of new fields in this view.
- This fields are added to the list of column of the WF's db-table. eTemplate's (db-Tools)? generate automatically a tables_update.inc.php (db-independent update script) which gets installed as update by setup
- Further views / steps in the workflow can be added, by starting again at 2.
What has to be implemented for such a system / the
WorkFlow app:
- the WF app has to steer the above discript process and decrement version-numbers (of the app and db-definition) for each new step.
- some new field / widget types need to be implemented for eTemplate:
- selectboxes with extendable selections (controlled by an ACL) to contain the status and other categories like information (standard phpGW cats can already be used)
- field which allow to link or even embed parts of other app, eg. to enter / edit the contact information which is then stored in the AddressBook and the WF's table has only the id stored. That way these informations are available for other standard apps like Email.
- the nextmatch widget need to allow to enable / disable certain cols and save with predefinable defaults (save with the eTemplate) and user-changeable settings saved in his prefs. Like mozilla's listwidget when u click on the icon above the scrollbar (top-right).
- a fixed relation from the eTemplate's widget type and optional fields like size to a column-definition of a table
- the file-upload widget has to be extended to store the file in a blob in the WF's db-table of the VFS and show a link to that object and a possibility to update the file. This is needed to store binary file (eg. an offer or concept) like LotusNotes? does it in the db-table.
- some common code which is copied from the WF app into the app which represents the WF. This code should allow to:
- list and select an entry of the WF, based on the defined status, other fields or search criteria
- call (ACL restricted) status dependable view or edit dialogs based on the eTemplate defined in 2. inserted in the WF's or WF apps standard application eTemplate (which defines eg. app-header or common UI-elements like searches).