Small steps with big feet
‘Activiti in Action’ book available on MEAP!
Great news:
The ‘Activiti in Action’ book by Tijs Rademakers and Ron Van Liempd is since yesterday available through the ‘Manning Early Access Program’. This means that you can now already have a sneak peek of the first chapters and can follow the progress of the book while they are writing it !
Awesome!
Activiti 5.0 released!
After nine months of hard work, the Activiti team is extremely proud to present Activiti 5.0 GA!
Read all about it on Tom’s blog!
BPMN 2.0 process modeling on the iPad
In the past years, I’ve seen my fair share of meetings where were we needed to draw business processes … ad-hoc or working on existing models. Poster-sized paper, whiteboards, beer coasters, … I’ve used it all. I can tell quite some hilarious stories about those meetings … but that’s probably content for another post. Main thing is: in 2010, this is just not the way anymore the game is played.
The Activiti BPM suite ships out-of-the-box with a cool webbased modeling tool, which allows anybody to collaborate from anywhere on their business processes. This modeling tool is donated to Activiti by our friends at Signavio.
And today, they’ve pushed out iPad support for their process modeling tool. This is just way too cool if you think about it. Discuss, model and collaborate on processes from basically everywhere you are – with decent graphics and all stored on the server. Gone are the ‘quirks’ attached to using ancient ‘technologies’ such as losing the paper, wet beer coaster, unreadable scribbling, etc.
Check it out in this video from the Signavio team itself.
And now I *really* want an iPad….
Tutorial: Running the BPMN 2.0 Hello World example on MySQL (with Maven)
Last week, I showed you how to get a ‘BPMN 2.0 Hello World’ up and running with the latest release of Activiti. Today, we’ll take the very same example a step further and make it run on MySQL and mavenize it all.
Interested in just the code? Just scroll down to the bottom of the post or click here.
Prerequisites
The required stuff remains the same: Eclipse (or any other IDE) with a Maven plugin (I’m using m2eclipse), Java and Ant.
Project creation
We’re just creating a vanilla Maven project. I’ve used the Eclipse wizard (New -> Maven Project), but some commandline-magic should also do the trick.The end result should look like this in Eclipse:

Dependencies
To run our Hello World example on MySQL, we’ll need two dependencies:
- The Activiti engine jar, obviously
- The MySQL database driver
Accordingly, the pom.xml looks like this:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>be.jorambarrez.tutorial</groupId>
<artifactId>helloworld</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>5.0.alpha4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>activiti.repo</id>
<url>http://maven.alfresco.com/nexus/content/repositories/activiti/</url>
</repository>
</repositories>
</project>
The process
The Hello world process is the same as the one we’ve used in the previous article.

The corresponding XML also remains the same. Call it hello-world.bpmn20.xml and add it to src/main/resources.
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="definitions"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
targetNamespace="http://www.activiti.org/bpmn2.0">
<process id="helloWorld">
<startEvent id="start" />
<sequenceFlow id="flow1" sourceRef="start" targetRef="script" />
<scriptTask id="script" name="HelloWorld" scriptFormat="groovy">
<script>
System.out.println("Hello world")
</script>
</scriptTask>
<sequenceFlow id="flow2" sourceRef="script" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
Running the process
To run the process, we’ll be using the same main method as in the original article: bootstrap the engine, deploy the process and run it:
// Bootstrap
ProcessEngine processEngine = new DbProcessEngineBuilder()
.configureFromPropertiesResource("activiti.properties")
.buildProcessEngine();
ProcessService processService = processEngine.getProcessService();
// Deployment
processService.createDeployment()
.addClasspathResource("hello-world.bpmn20.xml")
.deploy();
// Run
processService.startProcessInstanceByKey("helloWorld");
The only thing that’s left to do, is add an activiti.properties file to src/main/resources that now points to a MySQL database. Alternatively, you could also use the cfg.create Ant target which is in the setup script of the Activiti distribution (see previous article).
database=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.102:3306/activiti
jdbc.username=activiti
jdbc.password=activiti
db.schema.strategy=create
Note that we’re setting the schema creation strategy to ‘create‘, since want to create the schema the first time we run our code. If you want to rerun your code afterwards, be sure to change it it ‘check-version‘.
Also, don’t forget to create the schema ‘activiti’ in MySQL and to add the user ‘activiti’ with enough permissions in MySQL.
Now just run it. The output should be non-surprising:

With that difference that we now actually are running on the MySQL database! See the proof on the following picture:

Download the source of this tutorial
The source for this tutorial can be downloaded as a ZIP file here. Just import it into Eclipse, point it your MySQL config and enjoy the ride!
Tutorial: a BPMN 2.0 Hello World With Activiti 5.0.alpha4 in 5 steps
With the 5.0.alpha4 release just out of the door, I thought it was time to demonstrate how easy it is to get started with the latest version of Activiti. Note That I’m not using the demo setup here, if you want that, check out my previous article.
In this tutorial, I’ll show you how we’ll run a very simple “Hello-World”-ish BPMN 2.0 business process on Activiti. From there on, you should be able to explore all the capabilities of Activiti, only limited by your imagination. In a later article, I’ll show you how to run this hello world app on MySQL.
Prerequisites
To follow this tutorial you’ll need
- Eclipse (or any other Java IDE)
- Ant
- 5 minutes of your time
Step 0: unzip the distribution
If you haven’t got it already, download the alpha4 release from the Activit website. Unzip this file.
Step 1: create a DB schema
Boot up an in-memory H2 database, that is shipped with the Activiti distribution:
cd activiti-5.0.alpha4/setup/
ant h2.install h2.start
You can now create the Activiti schema:
ant db.create
The result should look like this:

If you want, you can now inspect the database schema:
cd activiti-5.0.alpha4/apps/h2
java -cp h2*.jar org.h2.tools.Server -web
(I’m sorry for that last line, we’ll create an ant target to start up the web console in the next release)
Open your browser, and go to http://localhost:8082. Enter jdbc:h2:tcp://localhost/activiti in the field ‘JDBC URL’, leave all the rest as it is and click ‘connect’. You should see the Activiti schema in all its glory:

Step 2: Setup project
Open up Eclipse, and create a new Java project.
Add all the libraries from activiti-5.0.alpha4/lib/ to your classpath. You don’t need them all actually, but for speed we’ll just take the easy path here.
Step 3: Generate a configuration
The Activiti engine needs a small configuration file to run in a standalone way (ie not within a dependency container such as Spring for example). This config file can be generated from the terminal.
cd activiti-5.0.alpha4/setup
ant cfg.create
(The config file generator takes as input the build.properties and the build.${your_databae}.properties files. Tweaking these is content for a later blogpost!)
A config file and a jar with the same file is generated for you in the folder activiti-5.0.alpha4/setup/build/activiti-cfg and activiti-5.0.alpha4/setup/build/activiti-cfg.jar. Add this jar file to your project in Eclipse.
Step 4: Create the Hello World BPMN 2.0 process
The process we’ll model is very simple: a start and stop event, with a Hello-World step in between.

Granted, it can hardly be called a ‘business process’, but all things start small!
The XML representation of this process looks as follows. Add this XML file to your project and call it ‘hello_world.bpmn20.xml:
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="definitions"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
targetNamespace="http://www.activiti.org/bpmn2.0">
<process id="helloWorld">
<startEvent id="start" />
<sequenceFlow id="flow1" sourceRef="start" targetRef="script" />
<scriptTask id="script" name="HelloWorld" scriptFormat="groovy">
<script>
System.out.println("Hello world")
</script>
</scriptTask>
<sequenceFlow id="flow2" sourceRef="script" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
You can see here that our ‘hello world’ step is basically the execution of a Groovy script saying hello to the world. Note that the id of the process is ‘helloWorld’.
Step 5: run it
All that is left now, is actually running the process. Create a new class in your project and add a main method.
First, boot up the process engine:
ProcessEngine processEngine = new DbProcessEngineBuilder()
.configureFromPropertiesResource("activiti.properties")
.buildProcessEngine();
ProcessService processService = processEngine.getProcessService();
You can see that we’re constructing the process engine using our generated configuration file. The process engine gives access to different services (such as taskService, processService, etc.), as you can see on the last line.
To run the process, it first need to be ‘deployed’ to the engine. Deploying means that the process is parsed and stored in the Activiti database:
processService.createDeployment()
.addClasspathResource("hello-world.bpmn20.xml")
.deploy();
And now we can execute the process, using the id of the process as ‘key’:
processService.startProcessInstanceByKey("helloWorld");
Which gives as output the following:
Next stop: uber-BPM-powers
And that’s all thats needed to run your first BPMN 2.0 Hello World process!
Of course, this is only the start of a very interesting journey. Best place to get familiar with the capabilities of Activiti and BPMN 2.0, is to check out our userguide.
Stay tuned for articles that will build further on this example (eg. using Maven, MySQL and enhancing the process) !
Screencast: Getting Started with Activiti 5.0.alpha2
I’m extremely happy to announce that Activiti 5.0.alpha2 just has been released!
Key feature of this release is the taskform functionality, many thanks to Erik Winlof for implementing them! Nothing could give it more credit than a screencast.

In this screencast, you”ll be able to enjoy:
- Setting up the Activiti environment using the demo setup script. As you’ll see, only 27 seconds are needed. That’s about the time it takes to pour a cup of coffee (if you’re fast).
- The Activiti Probe, REST, Modeler and Explorer webapps.
- The new taskform functionality. In the screencast, the vacation request BPMN 2.0 example is used. Check out our userguide to learn everything about taskforms and the example process.
Don’t forget to put on your speakers and to check the movie out in fullscreen!
Reactions to the Activiti launch
Monday morning, the world witnessed the birth of Activiti. And people saw that it was good. The stream of blogs, newsposts and tweets was unstoppable.
I tried to keep track of every item that appeared online, which was almost a fulltime job. But now the dust has settled (a bit), here is a list of interesting reactions to the Activiti launch.
Blogs
For a tech audience, blogs are the no. 1 news sources. Here’s a pick of what I’ve seen passing by in the blogosphere. Do let me know if I missed one!
- Tom’s blog, which triggered the start of the rollercoaster ride.
- Bernd Rucker from Camunda obviously had a post ready for the German market
- John Newton, CTO of Alfresco, explains in-depth the business reasons and opportunities behind the Activiti iniative.
- Sandy Kemsley, renowned BPM analyst, wrotea an objective analysis of the Activiti platform. She is eager to see how Activiti will evolve. And we won’t dissapoint her.
- BPM expert Scott Francis of BP3 wrote a very motivating blogpost. He actually downloaded the distribution and played with it. Let me quote him a few times here
- “Did I mention that the whole stack ran just fine, natively, on my Mac as well as a Windows VM?”
- “The documentation is already pretty comprehensive, and gets down to no-nonsense details (not true for many commercial products).”
- “I think the market is ripe for an open source BPM platform that leverages standard underlying technologies and is built from the beginning to allow for cloud-based deployment”
- “We may end up investing some time in the project ourselves.”
- The 451 Group posted a spot-on business analysis of the announcement, and let me quote them:
Activiti is likely to shake-up the BPM market with a ubiquitous project that supports the BPMN 2.0 standard from the Object Management Group.
- Peter Hilton from Lunatech Research, hits the nail on the head:
business processes and work-flow are aspects of most business software and integrating embeddable BPM will be a key element in reducing the cost of business software development.
- Theo Priestly asks the question everybody wanted to ask: “has the fight for open-source dominance begun?”
- Of course this was also great news for Alfresco users, as described on an Alfresco & Share blog.
- Infoworld focusses on the licence reasoning behind Activiti, and justly questions the value of GPL
- And Khaled Ben Driss, made sure that the French speaking countries had their share of the news:
- “Bravo pour cette initiative, à la sauce Apache, une licence business friendly …”
But the Activiti announcement wasn’t rainbows and puppies for a few, which led to the post from Active Endpoints. Thanks for the recognition guys! I was surprised to see that they see us as competitor
. I really like the picture (reminded me of one of my favourite cartoons):-) Anyway, I can’t put it more obvious then Sandy Kemsley did:
Activiti BPM : it’s neither fish nor fowl – stinging commentary on view that BPEL is dead, by a BPEL-based vendor
![]()
The heartbeat of the internet, Twitter, was (and is) buzzing of the announcement. At the time of writing, I counted around 250-300 tweets directly related to Activiti. I didn’t check for typos or querying on alfresco, personal names, etc, which would even up that number.
A small selection:
-
(vtri) Looking forward to see how Activiti kicks on within #Alfresco. Always felt jBPM wasn’t growing to its potential. Could be very exciting…
-
(stephan007) Tom Baeyens joins Alfresco and launches #Activiti http://bit.ly/aNAcM7 (via @tombaeyens) ;o)
-
(protocol7) Great to see @tombaeyens and @jbarrez working in the open again. And Activiti seems destined for ASF, even better #activiti
- (akuckartz) Tried activiti.org BPMN 2.0 implementation demo. First impression: it works!
- (SphericalN) bpm just got interesting with the launch of alfresco’s http://www.activiti.org/index.html – well as interesting as bpm can get
- (protocol7) But Activiti is pretty much jBPM so I would think many will move over
- (claudiabia) Very excited about the news of new BPM – #Activiti… Can’t wait to see it integrated with #Alfresco
- (rami22) Im so excited for #Alfresco #Activiti project can’t wait to download it tomorrow and play with it
- (david_syer) Pleased to see #activiti http://bit.ly/dwKbgp project announcements. Good stuff there for #spring users looking for workflow features.
- (andrkoel) Activiti: looks like the next version of jbpm with a better license and a better community
- (mjasay) Alfresco hires Red Hat’s jBPM team, partners w/ VMware’s SpringSource to deliver a cool Business Process Mgmt solution
- (sfrancisatx) wow. i step away from the computer for a few hours and the blog hits are nearing our daily record again. lots of interest in activiti #bpm
News sites
After the official Alfresco press release, many news sites picked it up quite quickly. Every google query I do seems to produce even more results, so in the end I stopped tracking them. For what it’s worth, here my list:
The H, Techworld, CNBC, BusinessWire, ZDnet, Forbes, ItWorld.com, CMSWire, BPMEnterprise, NetworkWorld, ReduxOnline, Boston BusinessNews, Heise.de, CMSReport.com, StreetInsider, Yahoo Finance, FierceContentManagement, EarthTimes, NewsBlaze, San Francisco City and Press, CentralDaily, SunHerald, iStockAnalyst, PR-inside, Sys-con, Dailyfinance.com, Ameritrade, EuroInvestor.co.uk, and many, many more (I have twenty or something more copied locally, but by now you’ll know the press release by heart
)
The curtains are pulled: Alfresco launches Activiti

After some weeks of silence, we can now finally pull the curtains … and reveal Activiti to the world!
Activiti is a super-fast and rock-solid BPM and workflow engine that natively runs BPMN 2.0. It’s completely open-source (Apache licence) and embeddable in any Java environment.
Tom and I joined Alfresco about two months ago, and we’ve kept ourselves quite busy. So together with this announcement, I’m proud to present the first alpha release of Activiti. Go and play with it while it’s hot!
Activiti is all about what made jBPM great, and taking giant leaps from there. Tom nicely summarizes it in his blogpost. A lot more information can be found on the Activiti website.
Official Alfresco press release: click here.
Regards,
Joram
Alive and Kicking!
You may have seen the Open letter to the jBPM community explaining that Tom and I step down from the jBPM project. We just want to let you know that we’re alive and kicking. We’re building a new BPM platform that’s architected for new IT requirements. It will be Apache licensed and it will run BPMN 2.0 natively. I can assure you …. exciting times are ahead!
That’s all we can share at this point. Stay tuned for more updates on ‘the what and the how’ very soon!
Native BPMN 2.0 execution with the freshly released jBPM 4.3
Happy 2010 to all the folks who read this blog! I’m extremely pleased to start this year with a bang by announcing that jBPM 4.3 has been released!
As we announced last month, the major achievement of this release is the native BPMN 2.0 execution on top of the PVM. See the announcement itself for more information, examples and a shiny movie.

The main goal of the first release of our BPMN 2.0 implementation was to implement the ‘basic’ part of the specification. Using the basic constructs, one should already get quite an impression how BPMN 2.0 can be used in practice with jBPM. We’re extremely proud that we’ve managed to include the BPMN 2.0 implementation as an integral part of the jBPM framework. This means that no database or API changes are required when you want to start using BPMN 2.0 with jBPM. Heck, enabling BPMN 2.0 in jBPM requires one single line of configuration. Just check the example of the previous BPMN 2.0 blogpost to see all this sweetness.
The complete distribution zip file can be found on http://sourceforge.net/projects/jbpm/files/
This distribution includes quite a few examples to get you started. The developers guide that is shipped with the distribution also contains a whole new chapter about how to implement BPMN 2.0 processes using jBPM 4.3. The content of the documentation is detailed and people with no prior BPMN 2.0 knowledge should be able to understand it without much problems. See the subdirectory /doc/devguide to find this guide. Or you can take a look online(link to my own version, online doc on docs.jboss.org isn’t yet updated due to past holiday season – but this can change any moment now).
To finish up, let me quote one of our prominent Community Users, Bernd Rücker:
“2010: the year of BPMN 2.0″
Of course, BPMN 2.0 isn’t the only thing we’ve been doing the last two months. Check our JIRA for a complete changelog. Most noteworthy new features are the ejb and jms invocation for JPDL – features that are easy to leverage for a future jBPM BPMN 2.0 release …
As always, thanks for reading!



