Monday, December 12, 2011

jBPM 5.2 released

The team is proud to present the next release of jBPM. jBPM is an open-source business process engine, supporting BPMN2. I think we have a few very nice new features in this release, with for example
A full list of features is added below.

You can download the artefacts here.
Documentation can be found here.

To get started, it is probably best to download the full installer and follow the installer documentation, to guide you through the tools with a simple example. You can also import the examples module to have look at the numerous examples included in there.

We'll be updating some of the documentation and adding some quick starts and more examples in the next few weeks, so stay tuned!

Have fun!


Release notes

On top of some optimizations, bug fixes and small improvements, these are the most important new features in jBPM 5.2.0.Final.

Core engine
  • domain-specific service repository: the ability to import domain-specific services from a repository so you can immediately use them in your processes, e.g. twitter integration, FTP, web or REST service, etc. This is ideal for non-technical users to integrate with external services
  • improved persistence support for multiple databases and backwards compatibility
  • jbpm-test: new module that offers improved support for JUnit testing of processes, including the automatic setup of the necessary datasources and services on the fly
  • support for Java7

Installer

  • added support for JBoss AS7, which is now used as the default application server in the jbpm-installer

Web-based designer
  • Integration with the domain-specific service repository
  • Visual Process Validation: new features allows users to visually validate their processes at edit time
  • Ability to view the process in ERDF, JSON, PDF, PNG, BPMN2, and SVG formats
  • New Process Information section: contains information about the process, such as name, creation date, version, etc
  • jBPM 3.2 Process Migration: new feature allows users to migrate existing jBPM 3.2-based processes to BPMN2
  • Ability to import existing bpmn2 processes straight into designer
  • Ability to create "sharable" process image, PDF, and ability to generate code for embedding designer in custom applications
  • Support four boundary events
  • Visual support for Text Annotations, Groups, and Lanes
  • Support for sub-processes
  • Update to latest Guvnor

Human task service
  • introduction of the task service interface, and interface to interact with the (default) human task service (independent of the underlying communication pattern and technology)
  • user group callback: easily integrate with your own service for user / group validation and user-group-management (which users are part of which groups)
  • local task service: a local implementation of the task service that runs locally, next to the process engine, and (re)uses the same transaction of the core engine
  • human task service war: deploy the human task service as a service on your application server

jBPM console
  • updated to latest version of the JBoss BPM console
  • console synchronizes with the process definitions (and other assets) from all packages in the Guvnor repository
  • updated BIRT reporting to latest version

Eclipse plugin
  • jBPM perspective: Eclipse perspective that simplifies workspace configuration
  • more advanced jBPM project wizard

Friday, November 18, 2011

Executable BPMN 2.0

Bruce Silver did a blog recently, wondering whether any tools already exist that truly support executable BPMN 2.0. He defines supporting executable BPMN 2.0 as not just following the graphical notation guidelines (that are probably not that different from BPMN 1.x), but also supporting the underling XML serialization. And not just the basic high-level elements, but also the details that are necessary to come to executable processes, like process data, data mappings, service interfaces, etc.

I believe that jBPM satisfies these requirements!

As of jBPM 5.0, we are now using the BPMN 2.0 specification, not just for the visual representation, but also as the underlying XML serialization. And it's more than an import/export format, it is the representation that our tools use to communicate with each other (instead of using yet another proprietary model for that). This means that you can round-trip your processes between your developers (using the Eclipse-based editor integrated in their development environment) and your business users (using the web-based designer) based on the BPMN 2.0 XML.

And yes, unlike some other vendors, we're following the BPMN 2.0 specification as close as possible, and avoid using custom extensions (whenever not necessary). This for example means that we use BPMNDI for storing the diagram information (i.e. location and size of the nodes etc.), like this (click here to see the full process):
  <bpmndi:BPMNDiagram>
    <bpmndi:BPMNPlane bpmnElement="Minimal" >
      <bpmndi:BPMNShape bpmnElement="_1" >
        <dc:Bounds x="15" y="91" width="48" height="48" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="_2" >
        <dc:Bounds x="95" y="88" width="83" height="48" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="_3" >
        <dc:Bounds x="258" y="86" width="48" height="48" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="_1-_2" >
        <di:waypoint x="39" y="115" />
        <di:waypoint x="75" y="46" />
        <di:waypoint x="136" y="112" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="_2-_3" >
        <di:waypoint x="136" y="112" />
        <di:waypoint x="240" y="240" />
        <di:waypoint x="282" y="110" />
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>

Process data and input/output mappings are also defined using the (sometimes rather verbose) ioSpecification (full example here):
  <ioSpecification>
    <dataInput id="_4_employeeIdInput" name="employeeId" />
    <inputSet>
      <dataInputRefs>_4_employeeIdInput</dataInputRefs>
    </inputSet>
    <outputSet>
    </outputSet>
  </ioSpecification>
  <dataInputAssociation>
    <sourceRef>employee</sourceRef>
    <targetRef>_4_employeeIdInput</targetRef>
  </dataInputAssociation>

Or, if you want to invoke a service (a Java service in this case), the service is modeled like this:
  <itemDefinition id="_2_InMessageType" structureRef="java.lang.String" />
  <message id="_2_InMessage" itemRef="_2_InMessageType" />
  <interface id="_2_ServiceInterface" name="org.jbpm.examples.junit.HelloService">
    <operation id="_2_ServiceOperation" name="hello">
      <inMessageRef>_2_InMessage</inMessageRef>
    </operation>
  </interface>
and to invoke the service (full example here):
  <serviceTask id="_2" name="Hello" operationRef="_2_ServiceOperation" implementation="Other" >
    <ioSpecification>
      <dataInput id="_2_param" name="Parameter" />
      <dataOutput id="_2_result" name="Result" />
      <inputSet>
        <dataInputRefs>_2_param</dataInputRefs>
      </inputSet>
      <outputSet>
        <dataOutputRefs>_2_result</dataOutputRefs>
      </outputSet>
    </ioSpecification>
    <dataInputAssociation>
      <sourceRef>s</sourceRef>
      <targetRef>_2_param</targetRef>
    </dataInputAssociation>
    <dataOutputAssociation>
      <sourceRef>_2_result</sourceRef>
      <targetRef>s</targetRef>
    </dataOutputAssociation>
  </serviceTask>

jBPM already supports a significant subset of nodes (and other elements) that you can use to model executable processes. To get an idea of what this looks like using BPMN 2.0 XML, simply browse through the examples module. A full list of supported elements and attributes (which is very similar to the Common Executable subclass, but extended with a few more elements) is added as part of the documentation here.

And finally, our new Eclipse-based editor is almost ready, and that supports the full BPMN 2.0 specification, and uses the BPMN 2.0 XML to store these process models. You can for example download the BPMN 2.0 examples (that are included as part of the specification) and open them up, as shown in this screencast.

So who says there's no tool that supports executable BPMN 2.0 ? :)

Tuesday, October 18, 2011

Slides from JBoss One Day Talk 2011

I have uploaded my slides on my jBPM5 presentation on the JBoss One Day Talk last week. Enjoy!

Monday, October 10, 2011

Introducing the service repository

(If you want to help out and contribute to jBPM, read this blog all the way to the end, as we're looking for community assistance here!)

Using jBPM5, you can introduce your own domain-specific services in your processes. By defining your own services, they show up as custom service tasks in the graphical process editor. For example, if you would like to send tweets inside your business processes, a special twitter service task can be defined, as shown in the following screenshot.


Configuring domain-specific services has become even easier now, as we now allow you to import services like this from a service repository. You can just browse such a service repository and import the services you would like to use inside your processes. These will then automatically be added to your palette. You can also import a default handler that will be used to execute the service (although you're always free to override the defaults, for example for testing).

The import wizard is created as part of the latest version of the jBPM Eclipse plugin (and will be part of the next release, or you can already try it out by installing the latest plugin from the latest update site). It supports both repositories that are on your file system, or URL-based.

Click on the image below to see a screencast where we import the twitter service in a new jBPM project and create a simple process with it that sends an actual tweet.


[Note that you need the necessary twitter keys and secrets to be able to programatically send tweets to your twitter account. How to create these is explained here, but once you have these, you can just drop them in your project using a simple configuration file.]

We're building a service repository that contains predefined services that people can use out-of-the-box if they want to: http://people.redhat.com/kverlaen/repository. Currently it only contains a few services but we will migrate all existing services there over time.

And this is where we are looking for contributions! There are tons of interesting services and excellent projects that we would like to integrate with. We would like to offer out-of-the-box integration with a lot of those, by defining them as domain-specific services and adding them to the service repository, so people can import them in their processes. So if you would like to contribute integration with a service like that (e.g. facebook, google maps, etc.), or even your own project, let us know!

Thursday, October 6, 2011

A lot is happening ...

There's just too much happening to blog about it all myself, but here are some interesting blog entries out there!

  • There will be a Drools & jBPM boot camp in San Francisco end of this month. It's free but you need to register. For people that are attending the RulesFest conference, definitely a must. There's one day dedicated to healthcare even. I personally won't be able to attend unfortunately, but other core developers will be. And I'll do a remote presentation on Clinical Decision Support on the healthcare day.
  • The jBPM form designer is coming along nicely! A new video, showing some of the more advanced UI components, is available here.
  • Eric Schabell put a version of the jBPM migration tooling in the cloud. This migration project helps you converting your jPDL processes into BPMN2, and they're looking for input and feedback.
  • If you live in Argentina and if you're interested in working with jBPM and Drools, there's a job opening there with one of our partners that might interest you.

Thursday, September 29, 2011

JUDCon London, Oktober 31st - November 1st

After the success of previous JUDCon conferences in for example Boston and Berlin, JUDCon is now visiting London! JBoss developers will be coming to London at Park Plaza Victoria on October 31st and November 1st. The first day, there is a "Rules, Workflow, SOA and EAI" track, including for example:

If you want to come and listen to the presentation, have a chat in between or do some real work in during the hack fest, register now!

The conference will actually be co-located with the JAX London conference, so you'll have the opportunity to attend both.

Friday, September 9, 2011

JBoss One Day Talk 2011

Registration for the JBoss One Day Talk, on October 13th, in Munich, is now open !

http://onedaytalk.org/

I'll be speaking about jBPM5, but there will be a lot of other interesting presentations about a ton of different JBoss technologies as well, given by core developers themselves.