tag:blogger.com,1999:blog-17736700389098545032024-03-14T00:52:39.143-07:00Script for a Jester's TearKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-1773670038909854503.post-58329960419567914322013-05-29T07:29:00.002-07:002013-05-29T07:29:48.201-07:00<h2>
Forging a Bond Between Florence and Eclipse</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-uTF_XuToIqskQR8o2QJ4KIOKDJZroKWxMKOB31Z766Di09HvRRwCYaVpfrW6QhMR_C6g-wv0A7hPT7XUaXsppdy4u8ka7A2qs8FRSE0sakwtXvrd86tme5EUD0_YXPhDJOmyqrdMy9PN/s1600/florence2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-uTF_XuToIqskQR8o2QJ4KIOKDJZroKWxMKOB31Z766Di09HvRRwCYaVpfrW6QhMR_C6g-wv0A7hPT7XUaXsppdy4u8ka7A2qs8FRSE0sakwtXvrd86tme5EUD0_YXPhDJOmyqrdMy9PN/s320/florence2.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
A couple of weeks ago I went to Florence to participate to the <a href="http://www.rcp-vision.com/?page_id=4136&lang=en" target="_blank">Eclipse Day</a>. I was really looking forward to this as I'm fond of everything Italian and I had only good memories of my previous stays in Florence. It was a lot of fun revisiting the cathedral and meeting David again in all his glory. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlmX0rJoKpfOa4fh7CR1GHnGjJXlcLGQGw07lcZ9EZf8CbO-uRAOot8Z8wUTh1CgiCZqAdecZR6iCGJ-Jyc1c71a0xfY7oGWYN62r8M_IvbvkHbKHiM-hJjtbDsR399Z_5iRVdgIu4FBy2/s1600/Michelangelos_David.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlmX0rJoKpfOa4fh7CR1GHnGjJXlcLGQGw07lcZ9EZf8CbO-uRAOot8Z8wUTh1CgiCZqAdecZR6iCGJ-Jyc1c71a0xfY7oGWYN62r8M_IvbvkHbKHiM-hJjtbDsR399Z_5iRVdgIu4FBy2/s320/Michelangelos_David.jpg" width="240" /></a></div>
<div>
</div>
<div>
But of course also the Eclipse Day itself was definitely worth the visit. It was extremely well organized with really good food and with very interesting content. I was also very excited to hear afterwards that all the sessions had been recorded. So the good news is that even if you were not able to attend, you still have a chance to look at the different talks as they have been made available on YouTube lately. If you want to see myself in action talking about the Eclipse integration of the Forge command-line, you are invited to watch the video included below.</div>
<div>
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/UvA-z4LPX5A" width="420"></iframe>
<br />
Cheers,<br />
Koen</div>
Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-83823586195074217972013-05-26T05:12:00.000-07:002013-05-26T05:12:03.838-07:00<h2>
Hello From Forge2</h2>
<div>
I have created a short video that demoes how to create a very simple add-on (the Forge 2 version of a plug-in). Everything to do this yourself is included in the upcoming <a href="http://www.jboss.org/tools/download">JBoss Tools</a> 4.1.0.Beta1 release.<br />
<br />
Cheers,<br />
Koen</div>
<div>
<br />
<iframe allowfullscreen="" frameborder="0" height="313" mozallowfullscreen="" src="http://player.vimeo.com/video/66997227" webkitallowfullscreen="" width="500"></iframe> <br />
<a href="http://vimeo.com/66997227">Hello Forge2</a> from <a href="http://vimeo.com/user6802538">Koen Aers</a> on <a href="http://vimeo.com/">Vimeo</a>.<br />
<br />
<br /></div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-16238746175736905742013-04-10T03:02:00.000-07:002013-04-10T03:02:23.683-07:00<h2>
From Zero to Java EE in About 20 Minutes</h2>
Two weeks ago I went to London to present my quickie 'From Zero to Java EE in 15 Minutes (or Less)' at the <a href="http://www.devoxx.com/display/UK13/Home">Devoxx UK 2013 conference</a>. Congratulations to the team for a fantastic job organizing the first UK version of this amazing conference.<br />
<br />
The presentation was mostly a live coding demo using <a href="http://forge.jboss.org/" target="_blank">JBoss Forge</a> and <a href="https://devstudio.jboss.com/earlyaccess/" target="_blank">JBoss Developer Studio</a>. The catch is that I gave myself the daunting task of creating a Java EE application by reverse engineering entities from an existing database, scaffolding a JSF user interface from these entities and subsequently deploying this application in the cloud.<br />
<br />
I had done the presentation in some form a couple of times earlier, among others at <a href="http://www.devconf.cz/" target="_blank">DevConf 2013</a> in Brno and at <a href="http://devoxx.com/display/DV12/Home" target="_blank">Devoxx 2012</a> in Antwerp. But London made a difference: the quickie at Devoxx UK was actually the first one where nothing went wrong and where I was able to finish within the scheduled 15 minutes so I was very happy.<br />
<br />
I was actually so happy that I decided to publish a recording of the demo for a wider audience. The recorded version takes about 20 minutes so I again missed my target of 15 minutes but I guess the interested viewer will be able to cope with the 5 extra minutes... ;-)<br />
<br />
You can watch the video below.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="313" mozallowfullscreen="" src="http://player.vimeo.com/video/63725631" webkitallowfullscreen="" width="500"></iframe> <br />
<a href="http://vimeo.com/63725631">From Zero to Cloud in Almost No Time</a> from <a href="http://vimeo.com/user6802538">Koen Aers</a> on <a href="http://vimeo.com/">Vimeo</a>.<br />
<br />
Cheers,<br />
KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-62811939511376269562013-03-04T23:55:00.000-08:002013-03-14T10:18:12.138-07:00<h2>
Open Source, Czech Republic Style</h2>
<div>
<div style="font-family: Helvetica; font-size: 12px;">
During the last weekend of Februari I was fortunate enough to attend the <a href="http://www.devconf.cz/">Devconf conference</a> in Brno in the Czech Republic. I set out not knowing what kind of event to expect but it turned out to be a fine conference with an attendance of about 500 people covering a plethora of open source subjects. The event took place on the campus of the department of informatics of the Brno university so it felt a bit like the little sibling of the FOSDEM conference in Brussels.</div>
<h3>
Dinner in a church?</h3>
</div>
<div>
<div style="font-family: Helvetica; font-size: 12px;">
I arrived on Friday afternoon and later in the evening I hooked up with some of the colleagues for dinner. Particular about that meal was that the place where we took it was situated in a former church! I was given the address of the place but nevertheless walked past it twice… Who would think of a restaurant in a building that is a church? ;-)</div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3I0UVVfIDQ_bxXd_QPnNDyIxAENDtvP8jHPGWL5UlbmP6wBgP5UKFz_-Xntx5KpWl-EsqRnE78QIgTmNWVlAyHes5zo0ETTpTuoiTRBDdukbffDx_JtApQbDuNYFPk_c8KUbNL7mgy2ON/s1600/photo_big.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3I0UVVfIDQ_bxXd_QPnNDyIxAENDtvP8jHPGWL5UlbmP6wBgP5UKFz_-Xntx5KpWl-EsqRnE78QIgTmNWVlAyHes5zo0ETTpTuoiTRBDdukbffDx_JtApQbDuNYFPk_c8KUbNL7mgy2ON/s320/photo_big.jpg" width="320" /></a></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: center;">
<i>The restaurant in the church. </i></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: center;">
<i>In case you wonder, the picture is from a long time ago</i></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: center;">
<i>so Czech people have modern cars right now ;-)</i></div>
<h3>
Busy Saturday</h3>
</div>
<div>
<div style="font-family: Helvetica; font-size: 12px;">
On Saturday I had to deliver a <a href="http://developerconference2013.sched.org/event/0b7b16e30185b8c8573903f15f2d5717?iframe=no&w=990&sidebar=no&bg=dark#.UTWYZqXjvGQ">Forge talk</a> on how to raise your productivity writing Java EE applications and a <a href="http://developerconference2013.sched.org/event/3ce907b61914342e7c21131636311c89?iframe=no&w=990&sidebar=no&bg=dark#.UTWYzaXjvGQ">lightning talk</a> on how to create a web application in the cloud by reverse engineering a database. Both talks were received well and had a fair number of attendees. </div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDQIwAesAZMxTFn5QWLzUoDgFPHjGRsdY8YPNiLjt6bx23UjXmJpiCo9VNTxglCES39PAtlEirAGYKo-L8WZQdoP3lXEZpyMglnb48OnxhKbkmgUjz-jCx5ImUjqhVi_M67q6-z3uTP98m/s1600/_DSC0428.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDQIwAesAZMxTFn5QWLzUoDgFPHjGRsdY8YPNiLjt6bx23UjXmJpiCo9VNTxglCES39PAtlEirAGYKo-L8WZQdoP3lXEZpyMglnb48OnxhKbkmgUjz-jCx5ImUjqhVi_M67q6-z3uTP98m/s320/_DSC0428.jpg" width="320" /></a></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: center;">
<i>Mike Bonnet (l.) and myself (r.) tasting Czech beer</i></div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
In the evening the organizers had organized a party in a club close to the conference venue. There was an abundance of food and drinks but I had to keep my manners as I needed to host a <a href="http://developerconference2013.sched.org/event/062b52dbe366235857058702208a141e?iframe=no&w=990&sidebar=no&bg=dark#.UTWhNKXjvGQ">Forge plug-in writing lab</a> on Sunday morning.</div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
More pictures of the <a href="https://plus.google.com/u/0/photos/100311697564957109710/albums/5850175329977954305">first conference day</a> and of <a href="https://plus.google.com/u/0/photos/100311697564957109710/albums/5850189432247695553">the party</a>.</div>
</div>
<h3>
Hacking, hacking, hacking...</h3>
<div>
<div style="font-family: Helvetica; font-size: 12px;">
Thanks to Pavol Slegr who had made sure that all the needed software was installed on the machines in the lab room this lab was also a big success. All the attendees were able to successfully create a Forge plug-in for Hibernate Envers. I know that some of them were going to use this knowledge immediately to create a plug-in for the technology they were working with. I'm already impatient to see the results of their work appear in the Forge plug-in repository. </div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwu6wgEtYCbG4j45wYY_W0dRHQKgObJ3r_x-NHOEg-gdAzu1ecZPhf76YRIGwPV_JZmQFchguX9pzygmUQcNMKkAcVhyphenhyphenhU9K94lzBPf3aVQEwyM6FJd-If6r3hx706Dmm5fHnfs1UO2TjM/s1600/_DSC0457.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwu6wgEtYCbG4j45wYY_W0dRHQKgObJ3r_x-NHOEg-gdAzu1ecZPhf76YRIGwPV_JZmQFchguX9pzygmUQcNMKkAcVhyphenhyphenhU9K94lzBPf3aVQEwyM6FJd-If6r3hx706Dmm5fHnfs1UO2TjM/s320/_DSC0457.jpg" width="320" /></a></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: center;">
<i>Jozef Chocholacek (l.) and Pavol Srna (r.) paying a lot of attention in the Forge plug-in lab</i></div>
<div style="font-family: Helvetica; font-size: 12px; text-align: left;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
The rest of the Sunday was spent having lunch with the Fuse crew, participating to the Arquillian hackfest. </div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
More pictures of the <a href="https://plus.google.com/u/0/photos/100311697564957109710/albums/5850202213277960609">second conference day</a>.</div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
On Monday morning I went to our Brno office for a couple of hours to continue these talks with the Arquillian team but by the early afternoon I was already back on my way out to catch the flight back home. It has been a very tiring but fun and interesting weekend. Congratulations again to the organizers of the event!</div>
<div style="font-family: Helvetica; font-size: 12px;">
<br /></div>
<div style="font-family: Helvetica; font-size: 12px;">
Cheers,</div>
<div style="font-family: Helvetica; font-size: 12px;">
Koen<br />
<br />
P.S. The recording of the Forge session has been made available <a href="https://www.youtube.com/watch?v=xrhCg1m5bG4">on Youtube</a>.</div>
</div>
Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-34048612068307234372012-03-13T10:00:00.001-07:002012-03-15T07:42:38.167-07:00Code Like an Egyptian<div style="text-align: left;">Last week I went to Cairo in Egypt to present at the <a href="http://jdc2012.egjug.org/">JDC 2012 conference</a>.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size:180%;">What a Country</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">It was my first time in Egypt as well as my first time on the African continent and I have to say that it was a very good experience. My parents are both Egypt enthusiast and they had already told me many good things about this country but the reality beat my expectations by far. Egyptians are truly optimistic and very friendly and helpful people. Also they are rightfully very proud about their magnificent culture and their rich history. Even though I was only there for two full days, I escaped for 4 hours to go and see the pyramid complex of Giza. Pictures don't do this any good, in reality the site is even more mind-blowing!</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZJJTdm3-wjW9_fVTD5onJMiYchDT4Wl_ZohmrnqtBqxzbR97l_LpsP4kc4V3GyEY4ePUTrqDNqanGos9OJd3pEamV9BglO45-UNLYbLF772RSQ70c1sYYBrUjOgq2whQ8kqRZl2CFM9LS/s1600/gisah.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZJJTdm3-wjW9_fVTD5onJMiYchDT4Wl_ZohmrnqtBqxzbR97l_LpsP4kc4V3GyEY4ePUTrqDNqanGos9OJd3pEamV9BglO45-UNLYbLF772RSQ70c1sYYBrUjOgq2whQ8kqRZl2CFM9LS/s400/gisah.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5719417677689853650" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 267px; " /></a></div><div><br /></div><div><span class="Apple-style-span" style="font-size:180%;">Open Source to the Rescue</span></div><div><br /></div><div>Of course, because of the recent political events, the economical situation is not that great at this time as a lot of tourists avoid Egypt. Nevertheless everybody that I spoke to was confident that things would be turned around. Also it turns out that open source can play an important role in this evolution. A lot of Egyptian startups start off using open source projects with minimal investments. When their business takes off and becomes profitable, they can then proceed to buy subscriptions for the corresponding products. Consequently a lot of developers I spoke with were very happy with the JBoss presence at the JDC conference as many of them use JBoss technology. </div><div><br /></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzzziFJBRH8LeyrGIeMI3JQjlvH9sucvT-lPkz1Ny7A1hrhIF4mGzUyzyDe09kHT66f4pSpI4fW19-cxSbbfsEjIdg0VoRpIHk2Vi3C3tFCAjtegRtw80yjLCx6b0ScFdHGkplshO7zAW/s1600/booth.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTzzziFJBRH8LeyrGIeMI3JQjlvH9sucvT-lPkz1Ny7A1hrhIF4mGzUyzyDe09kHT66f4pSpI4fW19-cxSbbfsEjIdg0VoRpIHk2Vi3C3tFCAjtegRtw80yjLCx6b0ScFdHGkplshO7zAW/s400/booth.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5719423865694686802" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 267px; " /></a></div><div><br /></div><div><div><span class="Apple-style-span" style="font-size:180%;">What a Conference</span></div><div><br /></div><div>As for the conference itself, it was an example of how all conferences should be organized: great venue, motivated volunteers, good food and of course exciting presentations and a very interested crowd. Myself, I had three presentations:</div><div><ul><li><a href="http://lanyrd.com/2012/jdc2012/sqmdm/">JBoss Tools Anthology: Highlights of Your Favorite IDE</a></li><li><a href="http://lanyrd.com/2012/jdc2012/sqmdp/">Rapid Java EE 6 Development with JBoss Forge and Arquillian</a></li><li><a href="http://lanyrd.com/2012/jdc2012/sqmdq/">Plugging into JBoss Forge</a></li></ul>Except for the last session, which was scheduled in the last slot of the last day, the talks were very well attended with lots of interesting questions afterwards. <span class="Apple-style-span" style=" ;font-family:Georgia;">There was also professional media coverage from TechEgypt who recorded the sessions. I was told the recordings would be published by the end of March. </span><span class="Apple-style-span" style=" ;font-family:Georgia;">In the meantime you will have to do with an interview TechEgypt did with me. They already published that one yesterday as you can see below. </span></div><div><span class="Apple-style-span" style=" ;font-family:Georgia;"><br /></span></div><div style="text-align: center;"><iframe width="560" height="315" src="http://www.youtube.com/embed/n7-890XB3RE" frameborder="0" allowfullscreen=""></iframe></div><div><span class="Apple-style-span" style=" ;font-family:Georgia;"><br /></span></div><div><span class="Apple-style-span" style="font-family:Georgia;">It is nice to see how the Java community is growing strong in Egypt. I was told that so far JDC is the only Java conference in the Middle East and Africa combined. But I am sure that its success will lead to a better presence of this side of the world on the Java map.</span></div><div><span class="Apple-style-span" style="font-family:Georgia;"><br /></span></div><div><span class="Apple-style-span" style="font-family:Georgia;">I want to thank the organizers and the attendees of the conference once again for this great event. Way to go guys!</span></div><div><span class="Apple-style-span" style="font-family:Georgia;"><br /></span></div><div><span class="Apple-style-span" style="font-family:Georgia;">Cheers,</span></div><div><span class="Apple-style-span" style="font-family:Georgia;">Koen </span></div><div><span class="Apple-style-span" style=" ;font-family:Georgia;"><br /></span></div></div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-83402215150686958482011-02-09T14:35:00.000-08:002011-02-09T15:10:17.043-08:00Business Rules and New Icons<div style="text-align: left;">Mauricio asked me <a href="https://community.jboss.org/message/584041#584041">some time ago</a> if it would be possible to add Business Rules to the BPMN 2 editor I have created. I promised him that I would do this since it was not that of a daunting task. So I spent one Sunday afternoon and this last evening doing that as well as adding the new BPMN 2 icons that were created in the meantime. A screenshot of the result is shown below.</div><div style="text-align: left;"><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpBUwau6AeJ6lw4mvOAyZddOzKryO-NOdG3Ysr1Gx5mWmuPgGBnDt5nVUsWMC-TIDWeqJ_n5EAGXS2NMrPi5NErKdF3j65JFxVK5k_EMIsO2JsFkq2KaJzQ4kw-dyr-BX8HpJuJdkfUSwa/s1600/new+icons.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpBUwau6AeJ6lw4mvOAyZddOzKryO-NOdG3Ysr1Gx5mWmuPgGBnDt5nVUsWMC-TIDWeqJ_n5EAGXS2NMrPi5NErKdF3j65JFxVK5k_EMIsO2JsFkq2KaJzQ4kw-dyr-BX8HpJuJdkfUSwa/s400/new+icons.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5571827364973772274" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 336px; " /></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;">Everybody will admit that it looks way nicer, isn't it? I for my part have to admit that I needed to cut some GMF corners to make the task icons show up in the right upper corner. But hey, it is only a prototype editor after all. If you want to try it, you can <a href="http://community.jboss.org/servlet/JiveServlet/download/15922-7-26386/bpmn2.zip">download it here</a> and install it as shown in the previous post.</div><div><br /></div><div>Cheers,</div><div>Koen</div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-18884594184766030522010-12-14T23:23:00.000-08:002010-12-15T13:18:39.982-08:00Eclipsing BPMN 2.0<div style="text-align: left;">Most of us that are following the BPM area are aware of the BPMN 2.0 standard that was finalized recently. This new version of the standard has received a lot of attention and is a candidate that has a good chance to be able to unify the fractioned landscape of BPM. The standard specifies among others the notation to use to model processes and choreographies, the format to use when serializing them and how the models are to behave when they are executed by a BPMN engine.</div><div><br /></div><div>The first of these goals implies that a BPMN 2.0 practitioner can use a tool to create the BPMN 2.0 models that uses the specified notation. During the last months I have worked intensively to create such a graphical BPMN 2.0 editor that would produce models that can be executed on the brand new jBPM 5 runtime. Today I am happy to present you the fruit of this hard work. The focus of this article is user-centric. I will shine a light on the implementation hurdles I encountered in another post. </div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Overview</span></div><div><br /></div><div>As the title of the article implies, the editor comes as a series of Eclipse plugins. The screenshot below shows a general impression of the result after recreating the 'evaluation' example from the jBPM 5 documentation.</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGeWJRYcsgpEd3tz82Ymn23P9RLUgd43cKQLknD1ulrg4Skrop3QQvrgx2_kPPHpej2LW85ARwIkZmiKBRZYTRkKrHwt0x1FsjPynhaeZb-4R-77T7HgsdsQg4C_fNoJ6-4NP_4barZLtM/s1600/Overview.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGeWJRYcsgpEd3tz82Ymn23P9RLUgd43cKQLknD1ulrg4Skrop3QQvrgx2_kPPHpej2LW85ARwIkZmiKBRZYTRkKrHwt0x1FsjPynhaeZb-4R-77T7HgsdsQg4C_fNoJ6-4NP_4barZLtM/s400/Overview.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550842124452460898" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /></a></div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Installation</span></div><div><br /></div><div>You can download the <a href="http://community.jboss.org/servlet/JiveServlet/download/15922-5-22917/bpmn2.zip">installable archive</a> from our development community pages. The downloaded file is an archived repository that you can install into Eclipse using the familiar 'Help->Install New Software...' mechanism. The procedure is illustrated on the next two screenshots.</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ0RiQagLe4IVY_ZJg63Y_5guw2PJynReoXuyMR1oG1SCikynb9-4z5a4Xpnmy1hZyXdLZVY9u-RTrmMy_E8LsIIhmfYHzSszjTFkxTYnfw8PINFe-DrebL1madKJmXyWftKEw9HS8lJTT/s1600/Add+Install+Repository.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ0RiQagLe4IVY_ZJg63Y_5guw2PJynReoXuyMR1oG1SCikynb9-4z5a4Xpnmy1hZyXdLZVY9u-RTrmMy_E8LsIIhmfYHzSszjTFkxTYnfw8PINFe-DrebL1madKJmXyWftKEw9HS8lJTT/s400/Add+Install+Repository.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550851663710025266" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 377px; height: 400px; " /></a></div><div><br /></div><div>Make sure that the checkbox 'Group items by category' is unchecked as you will not see any features to install on the next screen otherwise. If all is going well, you should see two 'BPMN 2.0 Tools' items on the next page. The first item of these contains the binaries of the plugins that will be installed, the second contains the source code bundles. Just select both of them and push the 'Next' button. </div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnOwFnnA1VZQEGyrcDDodCKkGBZORW4KX0Tnw5S4CXwcJuc0midfMXRPuOyxkQlZmLgmQXzuLFeg3hcCUeDnuGXPfwHeEiyRW36v_nTEriDU1-gOBhFIkzJ5W4sWUSavlPagTxzd-0JNxh/s1600/Install.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnOwFnnA1VZQEGyrcDDodCKkGBZORW4KX0Tnw5S4CXwcJuc0midfMXRPuOyxkQlZmLgmQXzuLFeg3hcCUeDnuGXPfwHeEiyRW36v_nTEriDU1-gOBhFIkzJ5W4sWUSavlPagTxzd-0JNxh/s400/Install.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550851662968156370" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 377px; height: 400px; " /></a></div><div><br /></div><div>The rest of the installation is pretty straightforward. You only have to accept all the defaults as you work yourself through the wizards.</div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">BPMN 2.0 in Perspective</span></div><div><br /></div><div>After installing the plugins and restarting Eclipse, you can do a first verification if all went well by trying to switch to the BPMN 2.0 perspective. To do this you can push on the 'Open Perspective' button in the top right location of your Eclipse workbench, select 'Others...' as illustrated below and choose the 'BPMN 2.0' entry in the list that opens.</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrOElb8AkKIXHs-s4QesWZJTZNNEAIWwWSRu0qfFIqWtNNo_uCG3LJYmrbxMK-2lph3SGEI6TgpKAhXQDtKAXvz1xnRrba-42TSHpvUf23hYq0xKBWLhRQw9oZUklEKeMdYRjkI60QBfAa/s1600/Perspective+Selection.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrOElb8AkKIXHs-s4QesWZJTZNNEAIWwWSRu0qfFIqWtNNo_uCG3LJYmrbxMK-2lph3SGEI6TgpKAhXQDtKAXvz1xnRrba-42TSHpvUf23hYq0xKBWLhRQw9oZUklEKeMdYRjkI60QBfAa/s400/Perspective+Selection.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550855663131095794" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 165px; height: 130px; " /></a></div><div><br /></div><div>As you can see, the workbench has now a number of opened views such as the 'BPMN 2.0 Definitions' view and the 'BPMN 2.0 Details' view which you might not yet be familiar with. We will explain shortly what purpose they serve. Next to these views, the usual 'Package Explorer' view, 'Property' view and 'Outline' view are open.</div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Working Towards the Flow</span></div><div><br /></div><div>Before we can start creating our first BPMN 2.0 process, we need to create a project. In this case any simple project will do, so we will create a resource project called 'foo'. By bringing up the context menu when this project is selected and selecting 'New->BPMN2 Diagram' we can create our new process.</div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Uv2xca53bx5O-IdEZTxlwBQrS8BiAO5_N9jNjzSg8T0FM9hjaTGqofI5GCCrOxofT_nMMjrC6weP90h4wRtbOuFbM1_R4mjI3vr7sMFHOTchRdSZiIjnZopuEO4NFf0LQPLENftjKLBz/s1600/Create+Workflow.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Uv2xca53bx5O-IdEZTxlwBQrS8BiAO5_N9jNjzSg8T0FM9hjaTGqofI5GCCrOxofT_nMMjrC6weP90h4wRtbOuFbM1_R4mjI3vr7sMFHOTchRdSZiIjnZopuEO4NFf0LQPLENftjKLBz/s400/Create+Workflow.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550860969627689954" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 269px; " /></a></div><div><br /></div><div>We choose for example the name 'bar.jbpm' for our process resource and the BPMN 2.0 process diagram editor opens. </div><div><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrF61A6CNrzXvc8G4QRIjXwx6oTnPPF9GPrUMXJN3TToUBIhKH9nCsJugqQhXYZytI7yqC4tALOcGwQxY-t1r7ikjmvMVJhJpHEmb4vte4Mq9jHS1Soxzq7UZlVpy2zuPxsmrfML7MOmv3/s1600/Empty+Process+Editor.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrF61A6CNrzXvc8G4QRIjXwx6oTnPPF9GPrUMXJN3TToUBIhKH9nCsJugqQhXYZytI7yqC4tALOcGwQxY-t1r7ikjmvMVJhJpHEmb4vte4Mq9jHS1Soxzq7UZlVpy2zuPxsmrfML7MOmv3/s400/Empty+Process+Editor.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550862485766497426" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 280px; " /></a></div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Hello, BPMN 2.0 World</span></div><div><br /></div><div>Let's create a simple three node "hello, world" like process that is started off by the reception of a message and subsequently writes out the message. I have recorded a <a href="http://community.jboss.org/servlet/JiveServlet/download/16231-1-22994/Create%20Workflow.mp4">little screencast</a> of the creation of this process to show you some of the more advanced features that the editor inherits by being based on the Eclipse Graphical Modeling Framework (GMF): the popup toolbar, the connection handles and the layouting mechanism. </div><div style="text-align: center;"><br /></div><div> </div><div style="text-align: center;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/rZbzX9LIQkI?hl=nl&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/rZbzX9LIQkI?hl=nl&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div><div style="text-align: center;"><br /></div><div style="text-align: left;">As you can see this goes really smoothly. Of course I knew where on the toolbar and in the dropdown menu the different tools that I needed were placed. Also you might not be very impressed with the bareboned icons. These icons are inherited from the underlying <a href="http://wiki.eclipse.org/MDT-BPMN2">Eclipse BPMN 2.0 Model project</a> that was used as the base for the editor. The good news is that it is not so hard to replace these icons and that the creation of nice icons is in the hands of the real specialists in this area (see <a href="https://issues.jboss.org/browse/DESIGN-151">this JIRA issue</a>). And even if you don't know exactly where on the toolbar you need to click, you are still free to use the palette...</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size:x-large;">The Source is With You</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">As I have mentioned before, one of the particularities of the BPMN 2.0 specification is that it describes by means of a number of xsd's how to serialize the modeled processes. Also the serialization of the graphical information is handled by the specification. The solution I present here to you is completely in line with this specification. The semantic model and the graphical information are serialized in one single file in a way that is compliant with the specification. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">You can see the serialized XML by saving the work we did until now and opening the 'bar.jbpmn' file by choosing 'Open With->Text Editor'. The result should be similar to what is shown below.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdDeNwFfh_6TbQlg5kvaArKO7wDKV0s3_qcGWC36GbdRJac0WqnP4oB3hXLqddD6DF3A5dZdKELdHDwvP3H4d2Anw_9KxVNG4P-ahkA8D7mtQI_hEAFrfPALEoNMyV-lDay7S9S_QLECyH/s1600/Source.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdDeNwFfh_6TbQlg5kvaArKO7wDKV0s3_qcGWC36GbdRJac0WqnP4oB3hXLqddD6DF3A5dZdKELdHDwvP3H4d2Anw_9KxVNG4P-ahkA8D7mtQI_hEAFrfPALEoNMyV-lDay7S9S_QLECyH/s400/Source.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5550935463014109298" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 336px; " /></a></div><div><br /></div><div>One of the obvious feature requests that you could think about is to integrate the BPMN 2.0 graphical editor with an XML editor to provide a source page in a multipage editor. </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size:x-large;">Making the Flow Work</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">The process now is what is called underspecified. If you would deploy it on a compliant engine this engine would not be able to execute it. To make it executable, we have to provide some details. One of the ways to do this would be to edit the XML source in your preferred text editor, but luckily the BPMN 2.0 Diagram Editor provides a complete solution that makes adding these details a breeze. The two key elements that enable this are the BPMN 2.0 Definitions View and the BPMN 2.0 Details View.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">The <a href="http://community.jboss.org/servlet/JiveServlet/download/16231-1-22993/Make%20Flow%20Work.mp4">screencast below</a> shows how the Definitions View is used to add two item definitions and one message. The Definitions View contains elements that are global for the entire BPMN file. Next the Details View is used to add a property to the process, to specify the output set, data output and data output associations for the start event as well as the script property for the script task. The Details View, as its name implies, provides a way of specifying details for the currently selected graphical element in the editor.</div><div style="text-align: left;"><br /></div><div style="text-align: center;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/72h38MIyZH4?hl=nl&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/72h38MIyZH4?hl=nl&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div><div style="text-align: left;"><br /></div><div style="text-align: left;">These additions should make the process executable and fully specified. Showing how to execute this process on the jBPM 5 runtime would make this entry too long, so I will save it for later.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size:x-large;">Knowing the Issues</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">While the editor is fully usable to create executable BPMN 2.0 files, there is definitely room for improvement and for additional features. The following list contains some of the known problems that are must haves to make the editor really complete from a BPM 2.0 point of view:</div><div style="text-align: left;"><ul><li>As already mentioned, the graphical icons should be made more attractive. Luckily the hard part of this is actually designing the icons and this is exactly the task that we leave into the hands of our specialist graphical designers.</li><li>There are issues with the bendpoints. These are not always reproduced at the same location after closing and reopening the editor. The way how GMF determines bendpoints and anchor points is not yet completely clear to me. Any input in this area is greatly appreciated.</li><li>Attached events are not yet supported. Luckily again, this is just a matter of enriching the GMF model and regenerating the graphical part of the editor.</li><li>Swimlanes are not yet supported. </li></ul>A list of features that would be nice to have is also not very difficult to come up with:</div><div style="text-align: left;"><ul><li>Add a generic activity type mechanism that users can use to add domain specific extensions.</li><li>Provide a way to annotate nodes on the diagram so that the editor can be used in 'debugging mode' or simply can show errors.</li><li>Add support for multiple process diagrams in one file by providing one tab for each process in the file.</li><li>Add a optional source tab.</li><li>Create a choreography diagram editor.</li><li>...</li></ul>Most of these features should not be that difficult to add.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><span class="Apple-style-span" style="font-size:x-large;">Conclusion</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;">While the BPMN 2.0 process diagram editor in its current state is far from perfect, I think it provides already enough features to create fully specified processes that can be executed on BPMN 2.0 engines that provide execution compliance. If you are a BPM practioner and/or developer, I encourage you to make use of it and provide us with <a href="http://community.jboss.org/thread/160088">your feedback</a>!</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Best regards,</div><div style="text-align: left;">Koen </div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-69058582258532699462009-11-03T12:13:00.000-08:002009-11-04T09:02:45.392-08:00Combining jBPM and JSF<div style="text-align: left;">Last week the team was getting ready for the jBPM 4.2 release. As usual this mainly consists of doing manual testing in order to prevent our dear users from having really nasty surprises when, full of hope, they download and install their brand new toy. One of my tests consisted in developing a very simple, one page application that shows how to get started with jBPM in combination with JSF. In this post I will describe the development of this small application.</div><div style="text-align: center;"><span class="Apple-style-span" style="color:#0000EE;"><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;"><br /></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;"><span class="Apple-style-span" style="font-size:x-large;">The Idea</span></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;"><br /></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;">The main purpose of the application is to show a list of all the processes that are deployed in a default jBPM installation. The result is shown in the image below. </span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;"><br /></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#000000;"><span class="Apple-style-span" style="font-size:x-large;">Setting up jBPM</span></span></div></span></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsOfDLLgdAuE7770InDELT6GcCeiVAL5JXOjZxIQ_aSBJFfXFeKpC7Y25rIlrKb8TsXosNDLWJ7CLOfcNkImjeJ3La-tqZ1gj57QbgCpQ72qbFdSl3G2f-k7ZtvvO-gYeysNPrzMsnyHIE/s1600-h/extract-jbpm-archive.png" style="text-decoration: none; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsOfDLLgdAuE7770InDELT6GcCeiVAL5JXOjZxIQ_aSBJFfXFeKpC7Y25rIlrKb8TsXosNDLWJ7CLOfcNkImjeJ3La-tqZ1gj57QbgCpQ72qbFdSl3G2f-k7ZtvvO-gYeysNPrzMsnyHIE/s320/extract-jbpm-archive.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400007976213236610" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 235px; " /></a></div><div>If you are a have not the first thing to do is download jBPM archive and extract it to your favorite location. To complete the installation, just use the 'demo.setup.tomcat' target of the 'build.xml' script in the 'install' folder.</div><div><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIiAo8kg6e1UW8ffaOPYF0Q3puKqyzDZeLN9_iG47jU-NEQDRaHJIQTB_m-pom6I3R9Zl1BMw25_vmphyphenhyphen_yHV0IpeR82aZ_hnhc18QYRYYJnvT2k1mlOo9H1M_9EyGUVvAJ6ZNRSdggUVc/s1600-h/ant.demo.setup.tomcat.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIiAo8kg6e1UW8ffaOPYF0Q3puKqyzDZeLN9_iG47jU-NEQDRaHJIQTB_m-pom6I3R9Zl1BMw25_vmphyphenhyphen_yHV0IpeR82aZ_hnhc18QYRYYJnvT2k1mlOo9H1M_9EyGUVvAJ6ZNRSdggUVc/s320/ant.demo.setup.tomcat.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400007982085012802" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 142px; " /></a><div>As documented in the User Guide this script will:</div><div><ul><li>Download and install Tomcat into ${jbpm.home}/apache-tomat-6.0.20</li><li>Install jBPM into that Tomcat installation</li><li>Install the HSQLDB and start it in the background</li><li>Create the DB schema</li><li>Start Tomcat in the background</li><li>Create an examples.bar business archive and deploy it</li><li>Load the example users and groups</li><li>Download and install Eclipse into ${jbpm-home}/eclipse</li><li>Install the jBPM web console</li><li>Install the Signavio web modeler</li></ul>If all went well, you should be able to navigate to 'http://localhost:8080/jbpm-console' and behold our beautiful console. After this is done, we are ready to get started with our real task at hand.</div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Create the Project</span></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV4KS52M7fTbbOgyHYU41P0H-xQGKdmpzVewGmjllWCdN1gzzdjdsyh_Uff3ho6vXgaSfVG71OBYYQHDhUMTeciMTLgK0u2jf9FcN_U2jqMDArD4MOxl9JCgjC9w1P4ApLY6G5_5Ll-oWV/s1600-h/initial.project.layout.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV4KS52M7fTbbOgyHYU41P0H-xQGKdmpzVewGmjllWCdN1gzzdjdsyh_Uff3ho6vXgaSfVG71OBYYQHDhUMTeciMTLgK0u2jf9FcN_U2jqMDArD4MOxl9JCgjC9w1P4ApLY6G5_5Ll-oWV/s320/initial.project.layout.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400007984020109666" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 254px; height: 167px; " /></a></div><div>Just launch Eclipse if it is not already running and create a new project in your workspace. The initial layout of this project is illustrated above. As you can see there is a 'JavaSource' folder and a 'WebContent' folder. The target folder for the compiled Java class files is set to be 'WebContent/WEB-INF/classes'. In addition I created the following build.xml file.</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRHOp7RzVU-zNuqZTiwYJhxclYqHitPfjPFQ1p7eeVG7I_0RgTWeUTy6TP6_Ze92zHEIF_o_ae5nxGa_LTwmoRbPEyXV-vBOvp5gFLsCTm7p2KO0NTdnNsO5VExrSVr2V3OjuHl91wOHC/s1600-h/build.xml.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNRHOp7RzVU-zNuqZTiwYJhxclYqHitPfjPFQ1p7eeVG7I_0RgTWeUTy6TP6_Ze92zHEIF_o_ae5nxGa_LTwmoRbPEyXV-vBOvp5gFLsCTm7p2KO0NTdnNsO5VExrSVr2V3OjuHl91wOHC/s320/build.xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400007988643974626" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 216px; height: 320px; " /></a></div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Getting Ready for JSF</span></div><div><br /></div><div>I want to show how to use JSF so let's add the needed boilerplate elements for this technology: </div><div><ol><li>web.xml in the WEB-INF folder:<br /><br /></li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9j-x5WIFepOHe_-hoITBTdkRIpPtCuhzSJfCcT72nke2-AlQUNKJpUylOp9jNDrL9TzwLrSB19SFmC2rsUJtG58YCDVbwjCr94gojFvCsOAoKZe1ewFSVuWON2SpFqUnaTfOAbosCgrnl/s1600-h/web.xml.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9j-x5WIFepOHe_-hoITBTdkRIpPtCuhzSJfCcT72nke2-AlQUNKJpUylOp9jNDrL9TzwLrSB19SFmC2rsUJtG58YCDVbwjCr94gojFvCsOAoKZe1ewFSVuWON2SpFqUnaTfOAbosCgrnl/s320/web.xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400020970732221778" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 286px; height: 320px; " /></a>faces-config.xml in the WEB-INF folder:<br /><br /></li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7JVMYG861KJsYD6Cj2wyOkNVGbYqQ5o0C9UK3jS0WMKWTMQ_xO3NQDrHb_TaWt2l6QM8jTRzDSh8-MurqwOpc2lAPOMmqjKZA7dyEGGCKfXn5Er7IAHEWwZNl78QcTFjBKUNaIygwmzbL/s1600-h/faces.config.initial.png" style="text-decoration: none;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7JVMYG861KJsYD6Cj2wyOkNVGbYqQ5o0C9UK3jS0WMKWTMQ_xO3NQDrHb_TaWt2l6QM8jTRzDSh8-MurqwOpc2lAPOMmqjKZA7dyEGGCKfXn5Er7IAHEWwZNl78QcTFjBKUNaIygwmzbL/s320/faces.config.initial.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400020973871621346" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 74px; " /></a>jsf-api.jar, jsp-impl.jar and jstl-1.2.jar in the WEB-INF/lib folder:<br />You also could add these files to the lib folder of your Tomcat installation. In case you are wondering where these libraries come from, I used the jsf-api.jar and jsp-impl.jar that are included in the latest release of the <a href="https://javaserverfaces.dev.java.net/download.html">Mojarra project</a>. Likewise the JSTL library can be downloaded <a href="https://jstl.dev.java.net/download.html">here</a>.</li></ol></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ9N0scFyL0jMH8c64TMLu1PzZaQK8qpOhew1PLbenBTuqgMcQnJNPuzJDfToil8rd14X46v41irEjq9fCJ8FsBcNQX8Ow7jims5vWpuXuKYJina6eaJFjHT_ZpXeIOqVDcBlA-8en-GgN/s1600-h/webcontent.initial.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ9N0scFyL0jMH8c64TMLu1PzZaQK8qpOhew1PLbenBTuqgMcQnJNPuzJDfToil8rd14X46v41irEjq9fCJ8FsBcNQX8Ow7jims5vWpuXuKYJina6eaJFjHT_ZpXeIOqVDcBlA-8en-GgN/s320/webcontent.initial.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400020979951390482" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 245px; height: 145px; " /></a></div><div>The layout of the WebContent folder after performing these steps is shown above. </div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Adding two pages</span></div><div><br /></div><div>Let's add some minimal content to our application and deploy it to check whether we did everything right:</div><div><ol><li>Create a images folder in the WebContent folder and add a nice image called jbpm.png:<br /><br /></li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3BV7RPDvR5VBOhi5c_Q2zbPgY3TY1ZFAtg5GUyz_TINJrr5zNO9FpAHXkfyYkw96w8xyD78LiAfPQnkatEucDB-4UkknulcrqANPzlf3SSQR6F0VvBqONo6C-kLuaFC32bl_3Rv5cTm_u/s1600-h/jbpm.png" style="text-decoration: none;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3BV7RPDvR5VBOhi5c_Q2zbPgY3TY1ZFAtg5GUyz_TINJrr5zNO9FpAHXkfyYkw96w8xyD78LiAfPQnkatEucDB-4UkknulcrqANPzlf3SSQR6F0VvBqONo6C-kLuaFC32bl_3Rv5cTm_u/s320/jbpm.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400039827690142402" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 186px; height: 89px; " /></a>Create a pages folder in the WebContent folder and create the definitions.jsp file:<br /><br /></li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBFwqmJWzDMSDWY9AxM7UC5SvckhgrelaMbLVhpHvAFn8DWe4Xseq_HSPYiepUkdF75uqWmO9p120jMZW9l5Cg0cGlGJo15TJ2BzBNLgGeJhQJRLFaW_OCE55tTHAcEF1fys2l8Q8c0fWg/s1600-h/definitions.initial.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBFwqmJWzDMSDWY9AxM7UC5SvckhgrelaMbLVhpHvAFn8DWe4Xseq_HSPYiepUkdF75uqWmO9p120jMZW9l5Cg0cGlGJo15TJ2BzBNLgGeJhQJRLFaW_OCE55tTHAcEF1fys2l8Q8c0fWg/s320/definitions.initial.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400039822823125538" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 142px; " /></a>Create a file called index.jsp in the WebContent folder:<br /></li></ol><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnHxH3oISVvSzqvx5GL-gYZlHtTVXwmAgRfuAnnQu5TXgw_twkJMBSHX-C7ZqhwzpYWUjWoFIOJ-PKDs7Q541n_1f0RwcjW7sNJ-5I44jCWZgS0U6QWrFl_vA2InZoZAPD4_iC1BC29MW/s1600-h/index.jsp.png" style="text-decoration: none;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcnHxH3oISVvSzqvx5GL-gYZlHtTVXwmAgRfuAnnQu5TXgw_twkJMBSHX-C7ZqhwzpYWUjWoFIOJ-PKDs7Q541n_1f0RwcjW7sNJ-5I44jCWZgS0U6QWrFl_vA2InZoZAPD4_iC1BC29MW/s320/index.jsp.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400039830759140002" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 74px; " /></a>The resulting layout of these previous steps is shown below. </div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbVj_wauByN3P5Zi6ejaXqLjWV4bIKBB7NjFXG28IQy14bVhlnF5UUm33kLnyAmlGh1xBfGM7nq6ZfcQfF9UO4j8sIK9qaunNuxpH98yLfQZT8pujK3VrmXHPRgToJulnt2LX11cMAdHrF/s1600-h/webcontent.second.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbVj_wauByN3P5Zi6ejaXqLjWV4bIKBB7NjFXG28IQy14bVhlnF5UUm33kLnyAmlGh1xBfGM7nq6ZfcQfF9UO4j8sIK9qaunNuxpH98yLfQZT8pujK3VrmXHPRgToJulnt2LX11cMAdHrF/s320/webcontent.second.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400039829236281442" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 202px; height: 235px; " /></a></div><div>Now we can deploy our application by executing the 'deploy' target of our build file. After this is done we can navigate to <a href="http://localhost:8080/HelloMyJbpm/">http://localhost:8080/HelloMyJbpm/</a> and the resulting image should be similar to the one below.</div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Use the jBPM API in a Managed Bean</span></div><div><br /></div><div>Finally! After all the previous steps we come at last to the point where we are going to use jBPM. To do this we are going to create a managed bean.</div><div><br /></div><div>Before creating our managed bean however we have to make sure that our classpath is correct. We need to add the jBPM library to the classpath for the compilation to succeed. As you may have seen, this was already done in the build.xml file. If you are using Eclipse you might want to add the 'jBPM Libraries' classpath container to your buildpath as it is described in the docs.</div><div><br /></div><div>The managed bean is a very complicated sounding name for an actually very simple Java class. Take a look at the image below. </div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIarikjKTvwovk2-qwNhXb2NnA4xamdHktUp8sI7vVigdIZkbhFprU-HblvlyDtkTFufgpDVBMn4XCNASbo_KKouBR5wnZ8G6fsgyQe2YyMpz4ciJEzGZMPf0Ii7XfuPJtZ9YunR1kacl4/s1600-h/process.engine.bean.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIarikjKTvwovk2-qwNhXb2NnA4xamdHktUp8sI7vVigdIZkbhFprU-HblvlyDtkTFufgpDVBMn4XCNASbo_KKouBR5wnZ8G6fsgyQe2YyMpz4ciJEzGZMPf0Ii7XfuPJtZ9YunR1kacl4/s320/process.engine.bean.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400068194460120530" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 305px; height: 320px; " /></a></div><div>You can see that there is not much to the ProcessEngineBean. It has a couple of static fields where a reference to the application wide available ProcessEngine and the RepositoryService are stored. These fields are lazily initialized upon the creation of the first bean. Additionally there is one public method that is called getDeployedProcessDefinitions. In this method the repository service is used to create a ProcessDefinitionQuery that basically returns a list of all the deployed processes in the database in ascending order of their name. Isn't it simple?</div><div><br /></div><div>Now that we have our managed bean, let's take a look at how we can use this marvellous creation.</div><div><br /></div><div><span class="Apple-style-span" style="font-size:x-large;">Using the ProcessEngineBean</span></div><div><br /></div><div>The whole purpose of creating a managed bean is of course to use it in one of the pages of our application. So let's modify the definitions.jsp page that we created earlier to take advantage of the ProcessEngineBean and make sure that we can show something interesting instead of a dull welcome page. The modified page is shown below. </div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gkG3Ly81nyCV6-rdAPZnUthgqzR9DRwA3Ac1oEmBHIL_hpc9_sI1J2IkG8ibAKwDN2qyEveFpkNEJtMGI7PihIjjRZ4m72sxeWiedEqoHySU66e_c6Ru8-QXMKDHrLMN8cL0O6JTu7dV/s1600-h/definitions.final.png" style="text-decoration: none;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9gkG3Ly81nyCV6-rdAPZnUthgqzR9DRwA3Ac1oEmBHIL_hpc9_sI1J2IkG8ibAKwDN2qyEveFpkNEJtMGI7PihIjjRZ4m72sxeWiedEqoHySU66e_c6Ru8-QXMKDHrLMN8cL0O6JTu7dV/s320/definitions.final.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086300591454386" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 298px; " /></a></div><div>We can see that the datatable <h:datatable> element is used to display a list of process definitions. The processEngineBean object that is used in the value expression of this element is in fact the managed bean that we developed in the previous step. But does our page know about this bean. In fact, it doesn't. We still have to register this bean in the faces-config.xml file. To do that we revisit this file and modify it so that it looks like the one below.</h:datatable></div><div><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgp9hlIs6y_ciFLiMYQjUlWL4SiYBjwPrehqU2wo3KWEAywIcRDgv3Z0rat11WlBLXFD5GWcuLfFCpIe0XdFtiuiVGsk4mrtv5R7CynjESGpj0HGEi7qQ9jOY9IPgL1u5ibAVRFqgFmOv/s1600-h/facec.config.final.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLgp9hlIs6y_ciFLiMYQjUlWL4SiYBjwPrehqU2wo3KWEAywIcRDgv3Z0rat11WlBLXFD5GWcuLfFCpIe0XdFtiuiVGsk4mrtv5R7CynjESGpj0HGEi7qQ9jOY9IPgL1u5ibAVRFqgFmOv/s320/facec.config.final.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086305955698274" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 146px; " /></a><div><span class="Apple-style-span" style="font-size:x-large;">Finalization</span></div><div><br /></div><div>If we would deploy our application now and navigate to its homepage we would get an exception because the managed bean cannot be created. As a matter of fact to make the application work, we need to provide the jBPM configuration files. This configuration is read the first time a ProcessEngineBean is created. We will provide two more files that will reside as resources on the classpath of our application:</div><div><ol><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCm3iQJ2tanLs2IUoVbtNiblsdkGixwQLWNsm9Ml9Dpoe7EeEpADbTr9Fk2mqyvF9KEjkY8LYOhKNiqrtfoap9Fr94AIZ49Y3MoRs9ghCi9Ro0jkR-jSMfybM_3X7EO39QKwfvzZ0uGcRX/s1600-h/javasources.layout.with.cfg.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCm3iQJ2tanLs2IUoVbtNiblsdkGixwQLWNsm9Ml9Dpoe7EeEpADbTr9Fk2mqyvF9KEjkY8LYOhKNiqrtfoap9Fr94AIZ49Y3MoRs9ghCi9Ro0jkR-jSMfybM_3X7EO39QKwfvzZ0uGcRX/s320/javasources.layout.with.cfg.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086318204429378" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 259px; height: 114px; " /></a><li>jbpm.cfg.xml</li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu7P1PtY9Vn68-5lw3nOW7gktb-VXdwxf_tYFbErYMi3WOX9KweYiuP9QYEhvgKEAjg6qDHru5snszcdUSRqNiAK1fTJdXMi30RRRpEW4QtZkRGV-zb6uL8Jfw5euEgsKHzVUEixsgZMkt/s1600-h/jbpm.cfg.xml.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu7P1PtY9Vn68-5lw3nOW7gktb-VXdwxf_tYFbErYMi3WOX9KweYiuP9QYEhvgKEAjg6qDHru5snszcdUSRqNiAK1fTJdXMi30RRRpEW4QtZkRGV-zb6uL8Jfw5euEgsKHzVUEixsgZMkt/s320/jbpm.cfg.xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086309568539650" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 140px; " /></a>jbpm.hibernate.cfg.xml<br /></li></ol><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2Pde3MizDtVrAT57tT31hg9swgbXjus6uQM3QPjn0_wF4uLe2v6xjAk8vjjndsr42wnqWdN2QQu1WVCpYSPT55CaTos0jUxB7I9NjXHMPZ-ylYSHzk8ZLOvuxYDiFtpfBntVV8qqo9P9/s1600-h/jbpm.hibernate.cfg.xml.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-2Pde3MizDtVrAT57tT31hg9swgbXjus6uQM3QPjn0_wF4uLe2v6xjAk8vjjndsr42wnqWdN2QQu1WVCpYSPT55CaTos0jUxB7I9NjXHMPZ-ylYSHzk8ZLOvuxYDiFtpfBntVV8qqo9P9/s320/jbpm.hibernate.cfg.xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086317026525330" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 198px; " /></a>The build script will make sure these files are included in the WEB-INF/classes folder of our web application so that they are on the applications classpath.</div><div><br /></div><div>Hurray! We're done! Just use the build.xml one more time to invoke the deployment and reload the application's landing page at <a href="http://localhost:8080/HelloMyJbpm/">http://localhost:8080/HelloMyJbpm/</a>. The result should look like the image below.</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eetRYS9VHlaBZD1mIEbW3X94Zu_hH0DPwptQ2UQT6BoUlgCA-2D4jrjPei5Mh3W9Mi2VZuXrp4rr2UXdkvlmzPjQPuxjRoSnRCvX61p1oESM5FLzLh8L_DZPm4WxhzNjmdaPLpfiJfBw/s1600-h/final.application.png" style="text-decoration: none;"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eetRYS9VHlaBZD1mIEbW3X94Zu_hH0DPwptQ2UQT6BoUlgCA-2D4jrjPei5Mh3W9Mi2VZuXrp4rr2UXdkvlmzPjQPuxjRoSnRCvX61p1oESM5FLzLh8L_DZPm4WxhzNjmdaPLpfiJfBw/s320/final.application.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5400086514393848242" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 289px; height: 320px; " /></a></div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-69720171554141207682009-08-10T02:24:00.000-07:002009-08-10T02:54:58.565-07:00Process Your Problems<div style="text-align: center;"><span class="Apple-style-span" style="color:#0000EE;"><span class="Apple-style-span" style="text-decoration: underline;"><br /></span></span></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRbH2Bg5uJi95uAnCpY8PjFlPTU1QoJKnLt5aFz6IVEVfy30GaPUo1OVd3qVEXdkfbMvRKIGOvpVOBB41OVDxk80O2gMH7eiZeDywjEmJgGGKaGPCZoZk89PhJe3SkOKOLfJeze_arqelK/s1600-h/error-view.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRbH2Bg5uJi95uAnCpY8PjFlPTU1QoJKnLt5aFz6IVEVfy30GaPUo1OVd3qVEXdkfbMvRKIGOvpVOBB41OVDxk80O2gMH7eiZeDywjEmJgGGKaGPCZoZk89PhJe3SkOKOLfJeze_arqelK/s320/error-view.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368265358255641346" /></a><br /><div>As from the 4.0 release of jBPM, the Graphical Process Designer has been improved in a number of areas. One obvious but nevertheless very helpful feature is the addition of validation of the process definition files. Until now, problems with process definitions could only be captured by writing unit tests and using the process in such a test. The bottom line is that the process had to be deployed before problems with it became apparent.</div><div><br /></div><div>This way of working has been fixed. A small bug still prevents the validation from being performed in the released 4.0 version, but in the meantime this has been resolved and the feature will be available in the upcoming 4.1 release.</div><div><br /></div><div>Before validation can be executed, a jBPM runtime needs to be configured. All validation is done using the parser and jBPM classes available for this configured runtime.</div><div><br /></div><div><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqKIftaWiw8ovbVzfdTYAvpqAmoN8Fff2oL5nqOSUkh5Mhp53SxEjAtBKmFtreOjlNnhT1BKvMNrbv-g4eXkQHTO3aUA8QK4u5WA04OUrpU1Y2pmdEhNZbi55Q7QymvWocQkurF9ULdY2F/s320/runtime-locations.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368267647034256482" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 172px; " /></span></div><div style="text-align: left;"><span class="Apple-style-span" style="color:#0000EE;"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "><div>Once this is done, the validation is performed automatically each time a process file is saved or manually by selecting 'Validate' from the context menu of the editor.</div><div><br /></div></span></span></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEEjDqYwUdPA-ACV9IPRtlaab52kL83zjF3rqvFu6kuHB_1HWW41Pa7IbjxTuyPl0AOM2f8CR4kwfQaPB4gSEPI4u0kpJJcqZGYNhjwCt8bD0TaVSHM2df8Fh7ldLoEkO6A1KYgdnq_EMo/s1600-h/validate.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEEjDqYwUdPA-ACV9IPRtlaab52kL83zjF3rqvFu6kuHB_1HWW41Pa7IbjxTuyPl0AOM2f8CR4kwfQaPB4gSEPI4u0kpJJcqZGYNhjwCt8bD0TaVSHM2df8Fh7ldLoEkO6A1KYgdnq_EMo/s320/validate.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368267306890608082" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 164px; " /></a>When the validation result contains errors, all the Eclipse stuff happens as you expect it:</div><div><ul><li>The problem message and line number of the problem are shown as an entry in the Eclipse Problems View.</li><li><span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGUNvAIL_cBlENlc8FOPTYUg5nr415NR8rStcj8lvUwG4pVlzLtQcVSkrUG_ydui8mGoUD7C1-zr7WfUJ4AhSh5vKcVQMJRXlCB7x2oCJ9RCGYqvPYkwNGqN7Hb149SEEkxS1zkRFdf-uC/s320/problems-view.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368269405689514738" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 86px; " /></span>In the Package Explorer the file is annotated with the error symbol, indicating the problem discovered in the file.</li><li><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5XeiqWJ9wUiJfJo3JSRCe5P1Fun84bsqLDRnW7nIxOQTtAjwbsqE3Eq9rB_nUNCl9ibI3Un1mHWF72p_lBx7NPZk2nvUlFGs7Aop8bp0rrONGWbGi2EiEJ6MwpiAH0K3PH_lTw7y8VvF/s1600-h/package-explorer.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5XeiqWJ9wUiJfJo3JSRCe5P1Fun84bsqLDRnW7nIxOQTtAjwbsqE3Eq9rB_nUNCl9ibI3Un1mHWF72p_lBx7NPZk2nvUlFGs7Aop8bp0rrONGWbGi2EiEJ6MwpiAH0K3PH_lTw7y8VvF/s320/package-explorer.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368269414109321074" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 258px; height: 148px; " /></a>In the source view of the editor the line number is annotated with the error symbol.</li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgDJ7VseiJ87RvVwDwcuf4T4y8zFDiBeTcAuno3Ep-hqCgzVJKfoyaKZDaa47CC7yXm4oTr8gk-AtaYwljh6s6717byJssPTG5Ee7elO78Rd8RrsP_QWSkY584aOV97ThrRwNeCwMko1o6/s1600-h/source-view.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgDJ7VseiJ87RvVwDwcuf4T4y8zFDiBeTcAuno3Ep-hqCgzVJKfoyaKZDaa47CC7yXm4oTr8gk-AtaYwljh6s6717byJssPTG5Ee7elO78Rd8RrsP_QWSkY584aOV97ThrRwNeCwMko1o6/s320/source-view.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368269424345242178" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 150px; " /></a><br /></div><div>As-you-type validation is not yet available. We might add such a feature in the future if compelling reasons should appear. In the meantime we hope you will enjoy the improved validation and problem handling support.</div><div><br /></div><div>Cheers,</div><div>Koen</div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-1158647524788795312009-05-15T06:03:00.000-07:002009-05-15T06:07:16.155-07:00More on BPMN ExecutionJust to let everyone know that the people from Eclipse have put my EclipseCon talk online with audio at <a href="http://live.eclipse.org/node/707">http://live.eclipse.org/node/707</a>. You are all invited to listen.<div><br /></div><div>Cheers,</div><div>Koen</div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-7168163818530826822009-03-31T07:56:00.001-07:002009-03-31T07:56:47.037-07:00Executing BPMNLast week I was at EclipseCon in Santa Clara, CA. In addition to attending the conference which featured some excellent talks and having a team meeting after the conference, I delivered a talk on BPMN and how we see the execution of BPMN models at jBPM. The slides from this talk are provided below.<div style="width:425px;text-align:left" id="__ss_1227693"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/koentsje/executingbpmneclipscon2009?type=powerpoint" title="Executing.Bpmn.Eclipscon.2009">Executing.Bpmn.Eclipscon.2009</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=executing-bpmn-eclipscon-2009-090331095050-phpapp01&stripped_title=executingbpmneclipscon2009" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=executing-bpmn-eclipscon-2009-090331095050-phpapp01&stripped_title=executingbpmneclipscon2009" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/koentsje">koentsje</a>.</div></div>Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-13709722062542105192008-06-18T09:30:00.000-07:002008-06-18T10:15:37.891-07:00jBPM jPDL 3.2.3 ReleasedIt has taken us a while but we finally released the 3.2.3 release of jBPM jPDL. As you might expect with a service release, most of the changes and updates concern bug fixes and usability enhancements.<br /><br />You can find the list of all the changes in the <a href="http://sourceforge.net/project/shownotes.php?release_id=607377&group_id=70542">release notes</a>, but these are a few highlights:<br /><ol><li>Better enterprise support: A number of reported issues regarding this have been fixed. Also there is a <a href="http://docs.jboss.com/jbpm/v3.2/userguide/html/enterprise.html">new chapter in the documentation</a> describing how to use the Java EE Server Facilities that jBPM jPDL offers.<br /></li><li>Web Service front end: The codebase now includes a starting point for those who wish to expose services of the jBPM jPDL engine as a web service. It offers limited functionality such as starting a process and continuing its execution, but interested parties can take it from there and further build on top of it. You'll find the build instructions in the jpdl/ws subfolder of the distribution and the deployment instructions in the <a href="http://docs.jboss.com/jbpm/v3.2/userguide/html/ws.html">documentation.</a></li><li>Inclusion of GPD 3.1.3.SP2: The biggest improvement of the SP2 over the earlier released 3.1.3 release is that the code completion in the source page is working again.<br /></li></ol>You can download the new release from our <a href="http://www.jboss.org/jbossjbpm/jbpm_downloads/">download pages</a>. Please use the <a href="http://www.jboss.com/index.html?module=bb&op=viewforum&f=217">forum</a> to ask any questions and our <a href="http://jira.jboss.org/jira/browse/JBPM">JIRA</a> to post any issues.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-41875004619199517532008-06-18T08:18:00.000-07:002008-06-18T08:44:49.514-07:00jBPM @ SOA World 2008 EastI will present a <a href="http://www.soaworld2008.com/general/session0608.htm?id=29">talk</a> on the use of jBPM as a lightweight SOA solution at the upcoming <a href="http://soaworld2008.com/">SOA World conference</a> in New York City. If you are a delegate at the conference you are of course most welcome to attend my presentation. But if you happen to just live in the neighborhood and want to have a beer with me in the evening and/or talk about our beloved workflow engine, feel free to drop me an email.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-53052844596701651482008-05-06T17:36:00.000-07:002008-05-06T17:42:35.482-07:00jBPM jPDL GPD 3.1.3 ReleasedI just did this release. It contains only a few fixes and one new feature. JBoss ESB users will nevertheless be happy to see that the ESB service node now uses the correct syntax. Also the support for the asynchronous ESB Notifier will probably please them.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-81115374860589876412008-03-11T01:42:00.000-07:002008-03-11T02:00:41.357-07:00New jBPM Website!I am proud to present the new <a href="http://jbpm.org/">jBPM website</a>. Some of you might already have seen this as it is online since last Friday. The main idea was to have a central 'landing' page that provides an easy and attractive entry to our site. Each subproject (jPDL, BPEL, PVM, GPD, ...) has now its own page and a context sensitive menu that will direct users directly to the correct location when they want to download a release, file an issue or checkout the sources. Of course our new logo is prominently present on these new pages.<br /><br />While it is online, a small number of glitches still need to be fixed. Amongst these the demo page and the community page which are still under construction and the overview page. If you find other defects or want to provide feedback, I encourage you to do so by using the <a href="http://www.jboss.com/index.html?module=bb&op=viewforum&f=217">forum</a> or dropping me an email directly at koen at jbpm dot org.<br /><br />Finally I want to mention that this was teamwork and I want to thank everybody involved: Tom Baeyens for reviewing and providing a lot of the content; Alejandro Guizar, Fady Matar and Heiko Braun for the input and feedback; Mark Newton for giving me a jump start on the use of the content management system; Adam Warski for answering all my stupid questions; James Cobb for the layout jobs and the image polishing; and last but not least Cheyenne Weaver for the design of our wonderful new logos.<br /><br />I hope you will enjoy visiting our site in the future!<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-60049505100644925372008-03-05T01:46:00.000-08:002008-03-05T02:27:12.990-08:00EclipseCon JBoss Tools BoFMax Andersen and me will host a bird of a feather session at EclipseCon. The title is 'Seam support in Eclipse' but there will be plenty of room to talk about jBPM, JSF and other technologies related to Seam.<br />As always with a BoF the session will be very informal an interactive. It will be an excellent opportunity to talk to us about things that you like or don't like or to ask us really nasty questions. The session starts at 7:30 pm on Wednesday in the Grand Ballroom GHAB. It is supposed to last 1 hour and 15 minutes but I wouldn't be surprised if it continues in the bar afterwards. You will find the details <a href="http://www.eclipsecon.org/2008/?page=sub/&id=613">here</a>. I hope you will all find the time to come and chat with us.<br /><br />While I am writing this, I will take the time to plug Max's other talks. He will do a short talk on Tuesday about extending the JBoss Tools Visual Editor, a short talk about JBoss Seam and Eclipse on Wednesday and a long talk on Thursday about the Eclipse plugins for Seam, JSF and JBoss AS. If he would be competing with me I would not do it, but now I can only strongly encourage you to attend his talks. ;-)<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-23907460452195106362008-02-21T05:42:00.000-08:002008-02-21T06:00:47.873-08:00jBPM Comes to EclipseConFor the ones of you that have already seen the <a href="http://www.eclipsecon.org/2008/">EclipseCon</a> schedule this is probably old news but I still wanted to point out that there will be two jBPM talks at this fine conference this year. First of all there is a <a href="http://www.eclipsecon.org/2008/index.php?page=sub/&id=187">short talk</a> where I will present the rapid prototyping capabilities of jPDL. This talk is scheduled on Wednesday morning from 10:30 to 10:40 and hopefully it will wet your appetite for the <a href="http://www.eclipsecon.org/2008/index.php?page=sub/&id=104">long talk</a> a day later. This long talk is scheduled on Thursday morning from 11:10 till noon and will show how you can use jPDL as a lightweight approach for applying a service oriented architecture to your applications.<br /><br />Besides these two jBPM related talks, I will host a <a href="http://www.eclipsecon.org/2008/index.php?page=sub/&id=102">tutorial session</a> on Monday morning from 10:30 till 12:30 which is an introduction to the Eclipse Graphical Editing Framework.<br /><br />If you are coming to EclipseCon and want to talk to me and/or have a beer with me, don't hesitate to stop by at one of my sessions or simply drop me an email.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-4404385503982184072008-01-15T05:53:00.000-08:002008-01-15T05:59:26.604-08:00jBPM @ Solutions LinuxI will be in Paris on January 30th to give a presentation on jBPM at the <a href="http://www.solutionslinux.fr/fr/index.php">'Solutions Linux'</a> conference. The presentation will be held in French. So if you understand that beautiful language and are in the neighborhood, you are very welcome to attend. Next to my own presentation, there will be a number of other presentations by my colleagues at Red Hat. <a href="http://www.solutionslinux.fr/fr/conferences_detail.php?mode=redhat&id_conference=154">You find the details here</a>.<br />Hopefully I'll see you all in Paris.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-53367390153150149812008-01-10T09:52:00.000-08:002008-12-09T16:46:30.169-08:00ESB Service Node in jBPM jPDL GPD 3.1.2I just released GPD 3.1.2. Obviously a number of bugs are fixed with this release but there is also an interesting novelty. This new addition is an ESB service node that allows you to call a service in the JBoss ESB.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZmYOrcR5R7T6qxaIhlxHEPlPGEkHThlKC5iO5EHB5SF2GkxRS9tgwsGj1jU9oNfQqldISJwIkoloTCn3a40v1qP3g8Icb3LeijE_MuNDQyNVQwA_rV1grE4p4Wo9d_EQHmSBXlmob66PJ/s1600-h/esb-general.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZmYOrcR5R7T6qxaIhlxHEPlPGEkHThlKC5iO5EHB5SF2GkxRS9tgwsGj1jU9oNfQqldISJwIkoloTCn3a40v1qP3g8Icb3LeijE_MuNDQyNVQwA_rV1grE4p4Wo9d_EQHmSBXlmob66PJ/s320/esb-general.png" alt="" id="BLOGGER_PHOTO_ID_5153907540304261122" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj9DsgXhnzO_my1ACOK7Z1TwPIAO2CspS9xjcCQhA9OYN013y4a1qmjDyxytIYuLCnFqn6mLfDzo6a93E5zAhzk2in3uLzsBeqe8pXo-DDlVnr8tvwyvAgKymPf4xCQnaZMrEnEa0Bn2bd/s1600-h/esb-input.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj9DsgXhnzO_my1ACOK7Z1TwPIAO2CspS9xjcCQhA9OYN013y4a1qmjDyxytIYuLCnFqn6mLfDzo6a93E5zAhzk2in3uLzsBeqe8pXo-DDlVnr8tvwyvAgKymPf4xCQnaZMrEnEa0Bn2bd/s320/esb-input.png" alt="" id="BLOGGER_PHOTO_ID_5153907656268378130" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-F9lUVL0S8odFQXKO_MaDF6vHw_EIvd0mOhgoe73_1CZEcQG-4HEBYHFqXNGkyDt-Fw2pzR5aUUV6-aLnNEevDbbWiGbTetmiozZ1nstzsOFvwdqChWNCW0ipBFPUz9AKUaVavDb9woZ-/s1600-h/esb-output.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-F9lUVL0S8odFQXKO_MaDF6vHw_EIvd0mOhgoe73_1CZEcQG-4HEBYHFqXNGkyDt-Fw2pzR5aUUV6-aLnNEevDbbWiGbTetmiozZ1nstzsOFvwdqChWNCW0ipBFPUz9AKUaVavDb9woZ-/s320/esb-output.png" alt="" id="BLOGGER_PHOTO_ID_5153907750757658658" border="0" /></a>The three screenshots above show how this node is laid out and configured on the graphical view. The screenshot below shows the XML that is generated in the source view.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG5q8of74e2WemOFhguyGOzIEN4b2VIlsjsLL-9Aq54UmMCsunHfphajDVOFyUh61BGun5neXKxOA7_JN9hLtzO2JgpHkONVmaI-tmrusbbxpj7owEnmxYgyz26dFVEbJj93Bo_nx9jo42/s1600-h/esb-source.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiG5q8of74e2WemOFhguyGOzIEN4b2VIlsjsLL-9Aq54UmMCsunHfphajDVOFyUh61BGun5neXKxOA7_JN9hLtzO2JgpHkONVmaI-tmrusbbxpj7owEnmxYgyz26dFVEbJj93Bo_nx9jo42/s320/esb-source.png" alt="" id="BLOGGER_PHOTO_ID_5153908725715234882" border="0" /></a>This release will be included in the upcoming release of the JBoss SOA platform. The details are found in the <a href="http://sourceforge.net/project/shownotes.php?release_id=567514">release notes</a>. You can download it at the <a href="http://labs.jboss.com/jbossjbpm/downloads/">usual spot</a>.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-75550976560414571852007-12-03T07:54:00.000-08:002007-12-03T13:47:57.470-08:00jBPM jPDL GPD 3.1.1 ReleasedLast week I released the GPD 3.1.1. It resolves several of the nasty problems with XML synchronization in the editor's source tab. This release will be included in the upcoming GA release of the Red Hat Development Studio (RHDS). I encourage you all to <a href="http://labs.jboss.org/jbossjbpm/downloads/">download</a> and try it. As usual feedback is welcome on our <a href="http://www.jboss.com/index.html?module=bb&op=viewforum&f=217">forum</a> and bugs can be reported in <a href="http://jira.jboss.org/jira/browse/GPD">JIRA</a>.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-33657097934670090192007-11-04T04:32:00.000-08:002007-11-04T04:41:51.163-08:00jBPM @ NovajugI was contacted by Gray Herter last week because he had seen that I was doing some talks at the EclipseWorld conference in Reston, VA. Gray is one of the officers of the North Virginia Java User's Group and he asked me if I was interested in doing a presentation about jBPM on their meeting of November 7th. As I am always interested in spreading the word about jBPM, this was an offer that I couldn't refuse. So if you are in the neigbourhood, don't hesitate to drop by. You'll find the details about the meeting on the <a href="http://www.jroller.com/novajugblog/entry/nov_7th_from_java_to">Novajug Blog</a>.<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-81213823315667227512007-11-04T04:11:00.000-08:002007-11-04T04:44:56.873-08:00Second JBUG Benelux meetingLast Friday, me and a number of other JBossians were present at the second JBUG meeting. It is still a rather small user's group with some 30 attendees, but Nicolas Leroux and Peter Hilton who organized the event told me they did not send out any invitations anymore during the last week because they feared not to have enough chairs. So there is definitely a big potential for growth.<br /><br />The event itself was much like the first time very well organized, with lots of food and drinks and of course some interesting presentations. The first presentation was a talk given by Bruno Georges about the JBoss Enterprise Service Bus (ESB). He showed the audience by means of an example use case in what ways an ESB should be used. The presentation was topped with a demo that demonstrated the ease of setting up an ESB project in the Red Hat Development Studio.<br /><br />The second presentation was a joint effort of Peter Hilton and Nicolas Leroux about their experiences with Seam development. The presentation was both very funny as informative. They talked some kind of a very JBossian language by situating their example in a pub and relating the very technical Seam concepts such as conversations and dependency injection to this metaphor. It made their presentation easy to follow and the sometimes complicated topics they treated very easy to understand. I really hope they will be able to spread the word about Seam in this way at other occasions in the future (JavaPolis? Are you listening Stephan?). In any case, well done Peter and Nicolas!<br /><br />Cheers,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-20031807843956898512007-10-26T07:00:00.000-07:002007-10-26T07:42:06.149-07:00jBPM @ EclipseWorldThe Red Hat/JBoss crowd will be present at the upcoming <a href="http://www.eclipseworld.net/">EclipseWorld</a> conference in Reston, VA. Marshall Culpepper will be talking about our Red Hat Development Studio (of which the jBPM designer is a part) (Thursday, Nov. 8th, 2:00 pm - 3:15 pm). I have two talks, one about the Eclipse GEF (Wednesday, Nov. 7th, 11:00 am - 12:15 pm) and one about our own baby jBPM (Thursday, Nov. 8th, 8:30 am - 9:45 am).<br /><br />For those who will be attending the conference, you are of course all invited to come to our talks or hang out at our booth to have a talk with us. For those of you who live in the neighbourhood and who want to have a beer with us in the evening, don't hesitate to drop me a line!<br /><br />Regards,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-24368534403151285472007-09-14T09:13:00.000-07:002007-09-14T10:26:32.452-07:00GA Release of jBPM Graphical Process Designer!Being late with important announcements is becoming a bad habit of mine. The plan was to do a final release mid August right before I went to the beach in Croatia. But as always, right before it had to happen, a number of annoying bugs were reported that I wanted to fix first. These fixes were complete last week, so I was able to release the jBPM jPDL GPD on Friday September 7th. As mentioned earlier, the GPD now fully supports the jPDL language as well as a fair bit of the Seam pageflow language.<br /><br />So now you should ask yourself why I didn't provide the download links for this new release. Well that is because this week, we managed to do the 3.2.2 release of the core jBPM jPDL platform and the suite. The purpose of course was that this new suite bundle would include the new GPD. But alas, Tom detected a minor glitch that nevertheless had to be fixed before including it. So last Wednesday, September 12th, I released <a href="http://sourceforge.net/project/downloading.php?group_id=70542&filename=jbpm-jpdl-designer-3.1.0.sp1.zip">jBPM jPDL GPD 3.1.0 SP1</a>. Yes that is quite a mouthful ;-) This GPD is bundled in the <a href="http://sourceforge.net/project/downloading.php?group_id=70542&filename=jbpm-jpdl-suite-3.2.2.zip">latest jBPM jPDL suite</a> which was released on the same day.<br /><br />I encourage you to try out both products. Comments and feedback is welcome on <a href="http://www.jboss.com/index.html?module=bb&op=viewforum&f=217">our forum</a>. Feature requests and bugs can be filed in <a href="http://jira.jboss.com/jira/browse/GPD">JIRA</a>.<br /><br />Regards,<br />Koen<br /><br />P.S. You are probably wondering what happened to my series of jPDL construct discussions. It will certainly continue, but not until after next week as I leave on a hiking trip ;-)Koen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.comtag:blogger.com,1999:blog-1773670038909854503.post-40227805089700304192007-07-30T06:47:00.001-07:002008-12-09T16:46:31.443-08:00Configuring Tasks in the jBPM jPDL Graphical Process DesignerSo here I am again with a continuation of my promised series of articles. I have been occupied last month, fixing bugs and cleaning out some of the code of the jBPM jPDL Graphical Process Designer (GPD), resulting in the release of a second beta last weekend. Particularly interesting about this release is the reintroduction of Seam pageflow.<br />For this entry, I want to focus on the jBPM task support. Tasks are in fact one of the strong features of jBPM and it will take more than one article to treat them fully. For now, let's keep things simple and start with a slightly modified version of the process we used in the previous entry.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmZgftKI_sbxMGFx0TirpALW7wSNEeL9h4uSEIdz51Cw7Fhb_zPg9dIqoGPJsGWKi88-O7KPe9sqhbcWuzgfkjN4_Rg1gWGHXGIrZZB7j20pA1QOIEPirBBH740x9p3xB6orcM823-gMme/s1600-h/overview.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmZgftKI_sbxMGFx0TirpALW7wSNEeL9h4uSEIdz51Cw7Fhb_zPg9dIqoGPJsGWKi88-O7KPe9sqhbcWuzgfkjN4_Rg1gWGHXGIrZZB7j20pA1QOIEPirBBH740x9p3xB6orcM823-gMme/s320/overview.png" alt="" id="BLOGGER_PHOTO_ID_5092988651306120722" border="0" /></a>As you can see, the process definition contains three nodes: a start state, a task node and an end state. The focus of the discussion will be on the task node. This type of node is actually a special kind of wait state. The difference with a normal wait state is that the execution engine will create task instances when it enters a task node. The number and type of task instances that are created depend on the task definitions that are configured on the task node. You can inspect these configured task definitions by selecting the 'Task' tab in the tabbed properties view when a task node is selected.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcunAozdaqIX5vzOruUQ-bHEU2L6O_09FgGDTW8yTHf90AqfZN6RMVr9nD3SwUdqynQAhjHVW3iy5Wau7HsXlHBXk_bjT_PjbTnhORyPBJzHT0eqvctnUve4VXxTxiiJxELKF-5VtzUxDm/s1600-h/popup.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcunAozdaqIX5vzOruUQ-bHEU2L6O_09FgGDTW8yTHf90AqfZN6RMVr9nD3SwUdqynQAhjHVW3iy5Wau7HsXlHBXk_bjT_PjbTnhORyPBJzHT0eqvctnUve4VXxTxiiJxELKF-5VtzUxDm/s320/popup.png" alt="" id="BLOGGER_PHOTO_ID_5092989020673308194" border="0" /></a>In order to create a task definition, either use the popup menu shown above or the button on the property views action bar. A task has a fair number of configuration possibilities. You can either select the target task definition directly in the outline page of the editor and access the properties through the tabbed properties view or else select the target task in the treeview of the 'Task' tab of the containing node. If you do the latter an embedded tabbed form will appear, with tab pages for the different categories of properties.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXUThYgydGjlbZDbUawHPjJtkom_Vr14RB5Gcel8E74yXzS3jRUhSExFDTn-7wlaR414nY0sfImWtsN1kZdwIY1JvDU_dMF_0CsARir8P-Cd9ioW8d7gpkcmaKgMaIGWdFwEGX7zsEzkVZ/s1600-h/general.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXUThYgydGjlbZDbUawHPjJtkom_Vr14RB5Gcel8E74yXzS3jRUhSExFDTn-7wlaR414nY0sfImWtsN1kZdwIY1JvDU_dMF_0CsARir8P-Cd9ioW8d7gpkcmaKgMaIGWdFwEGX7zsEzkVZ/s320/general.png" alt="" id="BLOGGER_PHOTO_ID_5092989458759972402" border="0" /></a>On the 'General' page, you can specify a name for the task as well as a description.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxB924OLRbLU6MnINPZLFOZF4iVoOKnArvyskrFtEsy94mEYVAgegvIK-6pl6KRrVLx5LvJlosR2TklbUNob2nJa-vz9490xnUTv_9S9eR4eq9g58sCQ0aYhv3gqvcLYdPxYNxwh6KPpFn/s1600-h/details.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxB924OLRbLU6MnINPZLFOZF4iVoOKnArvyskrFtEsy94mEYVAgegvIK-6pl6KRrVLx5LvJlosR2TklbUNob2nJa-vz9490xnUTv_9S9eR4eq9g58sCQ0aYhv3gqvcLYdPxYNxwh6KPpFn/s320/details.png" alt="" id="BLOGGER_PHOTO_ID_5092989810947290690" border="0" /></a>The 'Details' page is already somewhat more complicated. The due date is a mandatory property for the task. All the other ones are optional. The due date is of course the date on which the task should be accomplished. For this example, the set due date is 2 business days. The priority is set to high and the signalling and notification attributes are set to true. This means respectively that the process will continue when the task is accomplished and that the assignee will be notified by email when the task is assigned. The blocking attribute indicates that the process will not be able to continue if this task is still unaccomplished. The purpose of the 'Generate Form...' button on this page is to create a simple task form that can be rendered by the jBPM console. Form generation and customization will be treated in another article.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFNYRbhumZzVD4WXXpZkKIK5HFfAK57n5EnU6IYLz2ye_s2RNywo62QRoGNblYdzA7nZnj6d9vPSRR9cXhCBMty1O6WCSC7rlK55IaeAVnsaZL4V09A0HDduzlJWk_ghHFp0SiJ_o_ZCnb/s1600-h/assignment.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFNYRbhumZzVD4WXXpZkKIK5HFfAK57n5EnU6IYLz2ye_s2RNywo62QRoGNblYdzA7nZnj6d9vPSRR9cXhCBMty1O6WCSC7rlK55IaeAVnsaZL4V09A0HDduzlJWk_ghHFp0SiJ_o_ZCnb/s320/assignment.png" alt="" id="BLOGGER_PHOTO_ID_5092992624150869586" border="0" /></a>The 'Assignment' page allows to specify how this task should be assigned. We will talk about the details of assigning tasks and swimlanes in a later article and for now simply assign this task to the actor id 'Bruce'.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0G60Bn9IkjZ9e2kNjX-8kDW_RL_r8ZB6Mogsvm-9uCmu0WmzlosBfJujSE3VlRIKcZ6DTnbgcRQ4p3L1NjZ0vvWhU6LCGtoUQ73BrvjPA2gofpt-mwrQ8iw_vAFHkhWTuWLuFnup9U4h3/s1600-h/reminder.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0G60Bn9IkjZ9e2kNjX-8kDW_RL_r8ZB6Mogsvm-9uCmu0WmzlosBfJujSE3VlRIKcZ6DTnbgcRQ4p3L1NjZ0vvWhU6LCGtoUQ73BrvjPA2gofpt-mwrQ8iw_vAFHkhWTuWLuFnup9U4h3/s320/reminder.png" alt="" id="BLOGGER_PHOTO_ID_5092993006402958946" border="0" /></a>The 'Reminder' page is the place where you can specify whether the assignee will be reminded of the task that awaits him. In this particular example the assignee will receive an email after 2 business hours and this email will be resent every business hour after that.<br />So what does all this configuring do behind the scenes? It creates a bunch of xml of course, that you are able to see in the final screenshot below.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBE7EwfhZQk1_nzouHUlH8pg7fnOLb6LP96fPW0WkOUp7UiVNHNcC9e9gw7wJEe9ZH8_80sfItdLAE_Se-0chJMhyphenhyphenDvSOu5Dm2SvDH9l7NvvFGLHzOMlMD0DapafS9y1UzutHjXTFX5-VK/s1600-h/source.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBE7EwfhZQk1_nzouHUlH8pg7fnOLb6LP96fPW0WkOUp7UiVNHNcC9e9gw7wJEe9ZH8_80sfItdLAE_Se-0chJMhyphenhyphenDvSOu5Dm2SvDH9l7NvvFGLHzOMlMD0DapafS9y1UzutHjXTFX5-VK/s320/source.png" alt="" id="BLOGGER_PHOTO_ID_5092993264100996722" border="0" /></a>So far for this second article. If you are eager to try our new release <a href="http://sourceforge.net/project/downloading.php?groupname=jbpm&filename=jbpm-jpdl-designer-3.1.0.beta2.zip">download it here</a>. As always, we welcome comments and ideas on <a href="http://www.jboss.com/index.html?module=bb&amp;amp;op=viewforum&f=217">our forum</a> and bugreports and feature requests in <a href="http://jira.jboss.com/jira/browse/GPD">our JIRA</a>. Also note that this latest release has been built with Eclipse 3.3 which you also might want to <a href="http://www.eclipse.org/downloads/moreinfo/classic.php">download</a>.<br /><br />Have fun,<br />KoenKoen Aershttp://www.blogger.com/profile/11639205559213912954noreply@blogger.com