Forum OpenACS Q&A: Workflow + Bug-tracker + Ticket-Tracker Released
They'll become part of the upcoming 4.6.2 release.
Even though there are some issues with APM on HEAD.
Here are some of the highlights:
- Support for both Oracle and Postgres, and full upgrade script from earlier versions of bug-tracker on PG.
- Bug-tracker now also serves as ticket-tracker, with customizable prettynames for bugs and components (tickets and areas, for example).
- Bug/Ticket categories (priority/severity/etc.) are fully customizable. You can have as many or as few categories of as many types as you want. OS, Database, Department, you name it.
- Tickets are now stored in the content repository, which means that we're storing a full audit trail, and that searching should work. We haven't looked into this, though.
- Improved performance and usability of bug-tracker.
- Bug-tracker's workflow can be customized using the workflow package.
The workflow package has these features:
- Easy-to-use arraylist way of specifying workflows. No user interface yet, unfortunately, but it's really easy to do in code.
- Simple, easily understandable model for defining the workflow: Just States, Actions, and Roles.
- Clean integration with the object's permissions.
- World-class notifications integration handled by workflow -- no need to build it into your application yourself.
- Effective integration with your application through service contract implementations, referred to as callbacks.
In addition, we've made some significant changes to the OpenACS Core:
- We Integrated the concept of an object on which you perform actions, into the form builder and ad_form, so that idiom is available to other applications as well.
- We added an Enhanced Text-capable richtext' widget and data type (richtext), which lets people enhance their text input with simple HTML such as <b>, <i>, and <a href="..">, without the penalty of having to manually do paragraph and line breaks with <p> and <br>.
- We added support for dynamic notifications, which lets you request notifications for things like "All forum threads I've posted to", or "all bugs I'm assigned to or submitted". This also lets you cascade your interval and delivery method, so that notifications for bugs you're assigned to are sent instantly as SMS, while notifications for all bugs, regardless, are sent to your mailbox.
- We added a Tcl API for defining service contracts and implementations, which makes it much easier to use service contracts, and much easier to figure out how to us it.
- We added a foo.groupnum_last_p pseudo-column to the <group> tag.
- We added a Tcl API and fixed some problems with the CR's keywords.
The biggest core change, however, was a complete overhaul of the APM:
- We added the ability to execute Tcl code at install/upgrade/instantiate/mount/unmount/uninstantiate/uninstall time. This lets your package define service contracts, workflows, delete its contents, or whatever you want it to do.
- A significant problem was that the bootstrap-installer, which is what is used to install the kernel and the core on a fresh database and server. This install process didn't use the same code as later package installations did, causing differences in the way things worked. This was a tough challenge to crack, because during installation, you can't rely on having access to procedures and functionality that is normally available, but Peter managed to do it.
- A package can now ask to be automatically mounted as some URL under the main site. Notifications, for example, ask to get installed under /notifications. general-comments under /gc. And so on. This is primarily intended for service packages, and is a significant usability enhancements, in that you no longer have to go visit the site map after package installation to manually mount those packages.
- A final usability enhancement is the dependency check when installing a package. It used to be that when you wanted to install some package, bug-tracker, for example, the APM would simply complain: "Bug-tracker depends on workflow." Then you'd have to go back, find workflow on the list, check that, then try again. "Workflow depends on Notifications". Damn! That process is now automated, so when you say you want bug-tracker, the APM will look for packages that satisfy its dependencies automatically, and suggest that you install all of the needed packages at once. Saves you a great deal of frustration and going back and forth.
I'm sure there are a couple of things which I forgot to mention, but I think these are the most important feats.
A couple of small items are still outstanding: There are a few bugs with the APM, which Peter will fix when he gets back from Portugal on Monday. And the package developer's guide isn't done, though the specification is pretty good and should help a lot, as should the fact that there's a working example of how to use workflow in the form of bug-tracker.
Congratulations on this awesome work. You guys are such an inspiring team in this community.
Thanks so much for your great contributions.
It's actually co-funded by three parties: Heidelberg, MIT and Greenpeace. :)
You beat me to it. I was just going to point out that thanks goes to all three of Heidelberg, MIT, and Greenpeace, which made this possible.
And thanks also to Mohan Pakkurti and Mark Aufflick, who helped us a lot with the work.
Even though there are some issues with APM on HEAD.What I wanted to say was that despite the issues with APM on HEAD, all of this installs and works just fine. The only currently known problem on HEAD is with forums.
All I have to say is... WOW!!!
please accept my sincere apologies for leaving you out of my gratitude. I heard that the three of you where funding it, but it must have slipped my mind this morning.
This stuff sounds great. It reminds me that something we've built into the MACS version of the APM would probably be of interest to you: We added an XML based package uploader/downloader a year or so ago in the apm, this lets people automatically download recent packages right from the APM interface.
We added space for OpenACS packages at the developer site, intending for it to be available for everybody to use, but we didn't spend any effort convincing people it would be worth doing, so the OpenACS package area is empty right now. (easily remedied with some uploads, though.)
However, we use this for all of our sites right now, if we need to download / upgrade a package, we just go the apm, click "load a package from the web repository", and select from a list. The rest is automatic. This seems like it might work nicely with what you're doing. I believe the code is in the module at the following link, feel free to use it.
This sounds like it is going to be a great example to follow for future development. Thanks for the vision, and thanks to those who provided the financial support!
But 4.6.2 is stable enough to install and run. http://www.collaboraid.biz is running 4.6.2, and I haven't experienced any problems.
And grep for 'workflow' in bug-tracker.
Well done! Much as I like PL/SQL, it's good to see callbacks moved over to Tcl where more interesting things can be done. It's a shame we had to lose the funky graphviz interface, I'd just got used to it and found it useful for getting prototype workflows together very quickly. As you say, it's not ideal for typical flows, but it had it's uses!
We're going to be needing a workflow ticket tracker on a project pretty soon, and we had planned on using the existing (old) one. As things stand, the only real downside to using the new workflow is we'd have to write the front-end bits ourselves, so we're trying to weigh this against the design advantages we'd gain.
Are there any plans to build a front-end for workflow any time soon? If not, and if the new workflow is the solution of choice, we should compare notes to ensure that we (Quest) go the way we (the Community) want to go!
Thanks for the patience.
The work-in-progress is in CVS:
Display in browser:
View in browser:
I'm looking forward to hearing from those of you who start developing workflow'd applications now.
Today, on a 4-6-2-final checkout, click Install Packages and you are faced with the choice of:
Bug Tracker 1.2d7
Ticket Tracker 4.0
Ticket Tracker Lite 1.5
Ticket Tracker based on Workflow Package 0.1d
For anyone else confused by the huge selection..the one beign discussed in this thread is "Bug Tracker"
Once I figured that out it seems to install wonderfully and work great!
I hope to be developing with workflow on a client project soon.
Thanks Lars, Collaboraid and all the funders!!
I installed bug-tracker today, too and it went very well (except I had cloned some of bug-trackers workflow service contract implementations _as is_ for a package I'm working on, so that choked because it was a name clash).
My first experiences with the new workflow package has been very pleasant indeed. Lars docs are great, and it's pretty easy to make a package use workflow if you look at bug-tracker while developing it. Thanks Lars!
As of yet I have merely found one *tiny* thing to pick on, and it is that there is no tcl api for deleting a case (there is a plsql api, though.), which you must do before you can delete your associated object, otherwise you cannot drop your package cleanly.
I am sure you will enjoy developing with the new workflow, and I hope more and more people will start doing it!
There are links there to setting up packages.