reinerj, knecke and I (ralfbecker) had an interesting talk on the [CeBit]
with someone form the consulting company [SerCon]
. This guy does consulting for GroupWare
based on the specific needs of a company. They usually include in there selection / recomendation comercial products like LotusNotes?
system like phpGroupWare or [phProject]
On the question what are the biggest obstracels for OSGroupWare
systems to be used / recommanded he answered:
- missing translation into german, as most OS products are developed in english (think not a problem of phpGroupWare, atm german is sometimes better supported as english ;-) )
- missing ProfessionalSupport? (this is offerd by single developers / companys, but might need a common plattform, to be more visible)
- missing ability to implement a WorkFlow, like in LotusNotes? (thats 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 facilitats that and ensures all steps are taken (and in the right order).
2. How are (free definable) WorkFlow's implemented in other systems
you can create a new database and add multiple views with free definible 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 personaly
- write offer
- write contract
- work on contract
- write invoice
- money received
and view for each of them defines a WorkFlow
. Certain stati (hope thats the plural of status) are visible to certain people only and appear on there todo list.
3. How to implement a WorkFlow system in phpGroupWare
The first thought might be thats a taff task and LotusNotes?
is very much advanced from phpGroupWare and the other OSGroupWare
) see a change to implement a system like that in a overviewable range of time within phpGroupWare:
- WorkFlow's in phpGroupWare have to be own apps and db-tables, generated automaticaly 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 usualy have in the apps setup.inc.php.
- Adding views / stati 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 automaticaly 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
- 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 (controled by an ACL) to contain the status and other categori 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 availible for other standard apps like (email)? or TimeTrack?.
- the nextmatch widget need to allow to endable / disable certain cols and save with predefinable defaults (save with the eTemplate) and user-changeable settings saved in his prefs. Like mozillas 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 possiblity 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).
4. What's next
- Please give me your thoughts and comments, to develop the concept further
- How much changes do you see for or how much do you need a WorkFlow application?
- Do you know any customers who would like to pay / sponsor the development of such an app?
Please enter your comments here or mail them to phpgroupware-developers at gnu.org
- the db setup classes could to support multiple databases (this has been a long time feature request anyway) so that, like LotusNotes?, WF could actually create a database for each workflow. I'd imagine it wouldn't be hard to "trick" setup into ignoring version numbers and just runt he updates, or even to trick it so each run is a new app in its logic. -- cw
- the stuff to support tables on other db's is already on the agenda for setup
- of cause should the WF app create / update the table right away, without haveing the user to call setup ralfbecker