Author Archive

Workflow: New, Clean, Updated and UI on boost with JQuery 1.4

February 16, 2010 Leave a comment

Discovering the already 1-month old super fast awesome JQuery 1.4, (what’s new?) we have integrated it seamlessly in our current user task list, and it turns out we only gained speed and reduced the number of bugs. Kudos to the developers. That was the sweetest upgrade ever. Not a single glitch.

To celebrate, realized it was due time to make a quick new Tempo release. Things done, and the release itself can be found on the maven repository:

And mostly includes updated version of the core components:

The build can be recreated simply by using the tempo_builder_jetty.rb script, which relies on a clean and working buildr installation.

The build can be started by following the two simple steps:

  • create a mysql bpms database, and import the ode tables found in the bpms.sql file
  • start the server using ./bin/ run

The build process itself is pulling out all sorts of artifacts from different repository, so I decided to clean the dust and push out a quick diagram so that it’s easier to know what’s who and where (in the world is Carmen San Diego?)

A click-able version of the diagram is here.

Disclaimer notes:

  • This release does not include the windows binaries to start the jetty server.
  • This release has only been tested on a minimum number of configurations, and there is absolutely no warranty it will work in your environment.
Categories: Uncategorized

SOAP UI, Regression Testing of Human based processes, using Groovy scripts or SOAP UI Steps

December 1, 2009 Leave a comment

We have been using SOAP UI for regression and load testing of workflow. SOAP UI can be downloaded for free from the website.

Our story today is to test the absence request, which is basically a five step human workflow:

  • init process from a human task
  • create an activity task,
  • complete the activity task,
  • create a notification, and
  • dismiss the notification

The graphical BPMN looks something similar to this:

We are going to also add a new call to the authentication service, provided on the runtime, so that we can retrieve the authentication token and re-use it throughout the test case.

1. Standard SOAP UI Testing

The actual SOAP UI test case will then look like this:

Let’s go through the different steps:

  1. AuthenticateUser: Send a request to the security service and retrieve the security token
  2. CopyToken: This steps copies the token retrieve from the call to the security service to the request we are about to make to TMS.
  3. GetPipa: Send a request to TMS.getAvailableTasks, targeted for the pipa of the absence request. We retrieve only one task from this call
  4. CopyTokenAndPipaId: Similar to 2, we copy the token, and also the taskId of the pipa task, collected from 3
  5. initProcess: Send a request to TMS.initProcess that will then call the process engine to start the process accordingly.
    This steps is equivalent to the action of pressing the start button in the form manager:
  6. CopyTokenToGetTasks: Copy the security token.
  7. Delay: We need to wait for the task to be assigned to our current user, according to the process. We are now at the step describe below:
  8. GetActivityTasks: Now that the activity task “Request Manager Approval” should be in the task list, let’s retrieve its id
  9. CopyActivityTaskId: Copy token and taskId for the next request
  10. Complete: This one is called on TMP, the TaskManagementProcess, because it handles the task lifecycle.
    The endpoint for TMP can be found locally at: http://localhost:8080/ode/processes/completeTask?wsdlThis step does the same as filling the form of the activity task and using the complete button of the form manager.
  11. GetNotification: Calling TMS.getAvailableTasks this time again, but with Notification in state READY as a target.
  12. CompleteNotification: This would be the same as pressing the Dismiss buttonDismiss button in form manager

2. Testing through Groovy Scripting

SoapUI has a very detailed documentation on how to write tests using groovy scripting with SOAP UI.

This then looks like the screenshot below:

Groovy Testing SoapUI Test

Only the Groovy Script is enabled.

A quick excerpt of the groovy script looks like this:

Workflow Groovy Test Snippet

We then can go through all the same steps exposed into section 1.

3. Download and run.

The SOAP UI project for testing workflow and absence request can be found on github.

After importing, you will see a summary of the project:

Test Suite Overview

And you can run the two tests straight from the TestSuites tab.

Green Lights

Now if you feel like contributing new workflow processes, and new workflow test cases, let us know.

Categories: Uncategorized

2009 OpenSourceCamp/Apache BarCamp/Eclipse DemoCamp Joinup Event

November 26, 2009 1 comment

We will be presenting at the OpenSourceCamp in Beijing, China this coming Saturday (November 28th 2009). We will be talking about all things open source at Intalio, Intalio|Works, Tempo and quite a few interesting announcements.

“Open Source Camp is ad-hoc and unconference event that brings together open source developer, Geek , entrepreneurs, academics, venture capitalists, and technology influencer, tech media for an intense user-created conference about open source, emerging technology topics. It’s organized by the community, for the community. The event combines,sharing,learning,networking, and fun. Participants, who are experts and innovators in their fields, are also the presenters. The goal is to boost open source community and innovation around the world.

This year is special because we bring together Apache Barcamp and Eclipse DemoCamp at the same time and same place, it’s real communites collaboration and meetup.”

For more info:

See you there !

Categories: Uncategorized

Update Human Task Metadata Implemented: Priority and other friends

November 16, 2009 Leave a comment

A well needed addition to task management is now the possibility to edit metadata for an activity task.

Say you look at your task list:

And you feel you want to change the priority for this task. You would just have to click on the “Edit Task” button:

That would trigger the jQuery-based dialog to edit the properties:

We decide we want to raise the priority from 10 to 12, and click update.

The new task has its priority updated.

In the background, there is a new method in the Tempo Task Management Service, simply named update:

The request is made of the usual Single Sign On participant token to check the session credentials,  and of a task. The task with the same taskID, will be fetched from the persistence, and then fields will be updated after their input has been validated.

The response for this call is simply the okResponse, and a few fault can be thrown in case of invalid input parameters.

There is also a coming version of that dialog with a *star rating*-like display for the priority field:

Et ..  Voilà !

Categories: Uncategorized

Build with Jetty 7, Tempo, Ode, SSO w/ CAS, LDAP w/ ApacheDS on MYSQL

November 4, 2009 Leave a comment

The Story

Having the jetty guys nearby being one of the coolest thing of this year, we had to just kick off a build of the different Tempo components all running on the recently released Jetty 7.

This is now done and available, and the least we can say, it’s fast.

The Short

The hassle free version is along those lines:

  1. Download the zip file,
  2. run the DB script for MySQL named bpms.sql found inside the release folder,
  3. Start jetty, using the script.

The Long

The long non-short version, meaning that you can fully reproduce the build yourself, is described below:

Most is based by configuring the different versions of the components you want to use and then simply running the following ruby script.

Here are all the necessary steps you need to go through to reproduce the build on your own machine:

  1. Get yourself a JDK installed
    • Define JAVA_HOME properly
  2. Install Ruby, Ruby gems, and add the gems/bin folder to your path
  3. Install the following gems: buildr, hpricot and their dependencies
    • When using jruby, use hpricot version 0.6, and install jruby-openssl
    • while we’re at it, you may need ssl-dev on linux
  4. Install git, and clone the tempo public repository
  5. Install MySQL (with GUI client if needed)
    • Create the bpms database in mysql, and run the script named bpms.sql found in the build folder
  6. Run the script, by running the script ./rsc/script/tempo_builder_jetty.rb (edit the versions directly within that files if you want)
    • The resulting build is in the newly created target folder
  7. Run jetty, ./bin/ run
  8. Access http://localhost:8080/ui-fw, and you should be redirected to the CAS login page for integrated Single Sign On
    • The secret login is admin/changeit, and you can add change users by defining some more in LDAP/ApacheDS
  9. You are logged in and can now see your tasks and start working.

The beginning

You are ready to …


Categories: Uncategorized

Workflow, DMS, Nuxeo: cool update for attaching documents in Tempo

September 4, 2009 Leave a comment

I had to check on how the CMIS support was implemented in Nuxeo, and a few other CMS/DMS platforms. Went on doing my duties and realized we had no support to store attachments in Nuxeo for Tempo. So here I go, spending a late evening on my way back in the last train for Yokohama to code that and push it to github.

They have quite a cool remote api that they have named restlet api, that you can use to  execute your favorite remote CRUD operations, along a few others. It came out the api is easy to learn and here we go for a few screenshots to show how it works now.

Note that this suppose you have a running nuxeo server, (download here) with the restpack installed.

Below is how you configure the TaskAttachmentService (in tempo-tas.xml) to use the NuxeoStorageStrategy.

Screen shot 2009-09-04 at 8.21.46 AMNothing special here. Just note that the folder named repoName will be created on demand.

Let’s go to edit an activity task in Tempo and attach a file, here named beach7.jpg
Screen shot 2009-09-04 at 8.39.06 AM

The file has been uploaded, and is now an attachment for that task.Screen shot 2009-09-04 at 8.43.35 AM

So let’s go and see on the Nuxeo side what happens. Let’s log in and browse around a bit.

Screen shot 2009-09-04 at 8.39.28 AM

Note that the repository folder that we defined in the configuration file has been automatically created.

Screen shot 2009-09-04 at 8.39.35 AM

Now we can display the image, straight from the task, or straight from Nuxeo.

Screen shot 2009-09-04 at 8.39.51 AM

And a video to show, it’s As easy as ABC.

Categories: Uncategorized

Automated Human Workflow with Tempo

August 27, 2009 Leave a comment

Long time no post, so I am taking the opportunity of a customer request that came yesterday about documenting the different web services needed to automate a Tempo workflow through Intalio|BPMS.

What we want to achieve, is simply to control the different state of a Task through web services, so the task will appear in the task list of a user, and then get completed with a bit of custom data. You could integrate this in your process, by having the create part automated, or the complete part automated with custom data.

The process here is located on github, and the process is named CreateExample.


The process starts with a form to initiate the process. This calls an endpoint created by Ode after this particular process has been deployed.  What happens then is that the user opens the form, and the form manager will eventually send an init request to the TaskManagementService.

The flow for initiating the process is shown in more details on the tempo wiki:, on the people initiated process page.

Then a bit of data mapping, before sending the create request to the static form responsible for the dynamic task to be created.

Picture 1

Last step, is to send the complete request to Task Manager Process, the process responsible for the Task Life cycle.

Picture 2

This is also largely explained less graphically in a test we have on github for tempo, totally manipulating every state of tasks through code, that code mostly sending http requests to the appropriate service. You can see that in this junit java test.

Categories: Uncategorized