Forum OpenACS Q&A: Workflow + Bug-tracker + Ticket-Tracker Released

On Wednesday, I finally committed Workflow and Bug-Tracker/Ticket-Tracker on the oacs-4-6 release branch.

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.

Enjoy! :)

/Lars

Collapse
Posted by Bruno Mattarollo on
Wow! Awesome Lars! I am really looking forward to start integrating this new code into Planet :)

Congratulations!!

Collapse
Posted by Mohan Pakkurti on
Lars & Peter!
Congratulations on this awesome work. You guys are such an inspiring team in this community.
Thanks so much for your great contributions.

Cheers.

/Mohan

Collapse
Posted by Malte Sussdorff on
Awesome. Your list includes so many things that I've longed to see in OpenACS and it just comes out in time. Thanks a lot for doing this outstanding work and thanks to Heidelberg for commisioning it to you. May this set an example how to expand the capabilities of OpenACS.
Collapse
Posted by Bruno Mattarollo on
Hello Malte,

It's actually co-funded by three parties: Heidelberg, MIT and Greenpeace. :)

Cheers

/B

Collapse
Posted by Lars Pind on
Bruno,

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.

/Lars

Collapse
Posted by Lars Pind on
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.
Collapse
Posted by Robert Locke on
Lars,

All I have to say is... WOW!!!

😊
Collapse
Posted by Malte Sussdorff on
Bruno, Al,

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.

Collapse
Posted by Peter Vessenes on
Lars,

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.

Acs-admin package download

Great news!!
Thanks guys!
=o)
Collapse
Posted by Tom Jackson on

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!

Collapse
Posted by Jun Yamog on
Wow... Thanks to the technical team and the funders behind it.
Collapse
Posted by Don Baccus on
Lars - I fixed the APM regexp bug that caused forums-forums-create.sql to be loaded twice.
Collapse
Posted by Roger Metcalf on
Can the new workflow be added to 4.6.1 by grabbing the workflow, bug-tracker, and ticket tracker (which?) packages from 4.6-head?  Or is waiting for 4.6.2 necessary (or trying to use the head) to get all this great stuff?
Collapse
Posted by Lars Pind on
4.6.2 is necessary. It depends on all the changes listed in the original post, all of which have gone into 4.6.2.

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.

/Lars

Collapse
Posted by Roger Metcalf on
How do I get 4.6.2?  There's no tarball, and no tag in CVS like oacs-4-6-2 that I can find.  What's the secret?
Collapse
Posted by Roberto Mello on
Lars meant what will become 4.6.2. Use oacs-4-6 as tag.

-Roberto

Collapse
Posted by Roger Metcalf on
Since there's no UI yet for workflow, could we please have the rest of the "Package Developers Guide to Workflow"?  It comes to an abrupt end right after the Introduction (in developer-guide.html).  A simple usage example would also be much appreciated, to illustrate how "it's really easy to do in code".  A list of key routines in bugtracker that are using workflow would be a start.  In the meantime I'll go grep and read bugtracker code and the dozens of workflow procs to try to figure some of it out for now....  TIA!
Collapse
Posted by Lars Pind on
Check the spec, that's the best documentation that exists right now.

And grep for 'workflow' in bug-tracker.

/Lars

Collapse
Posted by Michael Hinds on
Lars,

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!

Collapse
Posted by Lars Pind on
FYI, I've started fleshing out the developer's guide for workflow. I'll try to get the rest done over Easter, so we can get you all to start using workflow.

Thanks for the patience.

The work-in-progress is in CVS:

File info:

http://cvs.openacs.org/cvs/openacs-4/packages/workflow/www/doc/developer-guide.html

Display in browser:

http://cvs.openacs.org/cvs/~checkout~/openacs-4/packages/workflow/www/doc/developer-guide.html?rev=1.1.2.2&content-type=text/html

/Lars

Collapse
Posted by Lars Pind on
The package developer's guide to workflow is now complete.

File info:

http://cvs.openacs.org/cvs/openacs-4/packages/workflow/www/doc/developer-guide.html

View in browser:

http://cvs.openacs.org/cvs/~checkout~/openacs-4/packages/workflow/www/doc/developer-guide.html?rev=1.1.2.5&content-type=text/html

I'm looking forward to hearing from those of you who start developing workflow'd applications now.

/Lars

Collapse
Posted by Caroline Meeks on
I'm installing bug tracker today and I'll post on anything that is confusing.

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!!

Collapse
Posted by Ola Hansson on
Caroline,

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!

/Ola

Collapse
Posted by Ola Hansson on
Oops! Thanks to Peter, too, of course 😊
Collapse
Posted by James Bennin on
I read your message about workflow, bug-tracker and ticket-tracker. Congratulations, you've done a great job. I am trying to use all these packages, especially the bug tracker on a website I am working on. I want to set up as a mimic of the bug tracker on the openacs home page. How do I go about this whole process? Thank you for your help James
Collapse
Posted by Jade Rubick on
James, see http://rubick.com:8002/openacs/getting_started/

There are links there to setting up packages.

Collapse
Posted by James Bennin on
Do I need to install all these packages (Workflow + Bug-tracker + Ticket-Tracker) for a mimc implementation of the bug tracker on the openacs?

Thank you

James

Collapse
Posted by Jade Rubick on
Just install bug-tracker. It will take care of the dependencies for you.
Collapse
Posted by James Bennin on
Thank you so much for your help.

James

Collapse
Posted by James Bennin on
I am trying to figure out how to enable public and non-registered users to add a new bug and use other features of the bug tracker (other than the admin of course) but I couldnt.  I tried the "permissions" section but it still did not work. I have enabled the permissions for non-registered users and the public to read, write and create, and still no success.  Is this just how bug-tracker was built or is there something I am doing wrong?

Thank you

James

Collapse
Posted by Lars Pind on
You cannot have unregistered users create new tickets. We need to know who submitted the ticket, as the current workflow says that the submitter must also close the ticket.

/Lars