11 Replies Latest reply on Jul 1, 2008 9:04 AM by Thomas Diesler

    Defining a public API for jBPM

    Thomas Diesler Master

      The situation with jbpm-3.2.3.GA and below is that there is no stable public API defined for it. As a result, application code depends on implementation detail that might change without prior notice between the versions.

      To fix this we are going to define a BPM API which is going to bee the standard of how you work with BPM in JBoss.

      http://jbws.dyndns.org/jbpmwiki/index.php?title=JBPM3-Public-API

      #1 What does the API cover?

      The API is going to cover all valid use cases we know of. To monitor progress and to add your requirements you can go to http://jira.jboss.org/jira/browse/JBPM-1250

      #2 What is expected to be stable, what is not?

      Application code that uses the API will not be effected by jBPM updates. Minor versions of the API are backward compatible. The API has support for a number of process descriptor formats, which are also backward compatible between minor versions.

      Code that has dependencies on jBPM implementation classes might break. We do however not intend to change the jBPM3 code base (unless necessary) until we reach API completeness. Database layout is considered implementation detail that might change between minor versions.

      #3 How is the correctness of the API verified?

      We ship a set of samples that are based on the API. Functionality that is available through the API is covered by a sample, documented in the wiki and integrated in automated testing. We verify that all samples run as expected in all supported target containers with all supported JDKs.

      In parallel we work on jBPM4 (a.k.a. the Process Virtual Machine). For every API construct there must be a mapping against the jBPM3 and the jBPM4 code base. Hence, the jBPM4 code base goes lock-step with jBPM3 in terms what is provided through the API. As a result, users can switch to jBPM4 when we reach API completeness with their application code unaffected.

      #4 What are the supported target containers?

      We support the lasts three releases of the JBossAS and Apache Tomcat in a given version.

      #5 How can I participate on API design?

      The entry point is http://jira.jboss.org/jira/browse/JBPM-1250. Here we create individual issues that are then cross-linked with forum threads.

      How to get started with the jBPM3 codes base is documented here
      http://jbpm.dyndns.org/jbpmwiki/index.php?title=JBPM3BuildingFromSource