4 Replies Latest reply: Feb 8, 2011 10:30 AM by Kris Verlaenen RSS

jBPM 5.0 released

Kris Verlaenen Master
  • 1. jBPM 5.0 released
    HUI LIU Newbie

    Bravo, Kris!

    But I have a question about the execution of BPMN processes.

    In jbpm5, the rule flows (ResourceType.DRF) are transformed to drools rules (Drools Rule Language) for execution, BPMN processes (ResourceType.BPMN2) are also transformed to drools rules just before their execution?

    Waiting for your response.


  • 2. jBPM 5.0 released
    Mauricio Salatino Master

    Hi Hui,

    The processes are not transformed to rules for the execution. Neither of them are transformed (DRF or BPMN files).


  • 3. Re: jBPM 5.0 released
    HUI LIU Newbie

    Hi Mauricio

    I read the source code of JBPM5.0 (krisv-jbpm-5.0-CR1-35-gc7bef4e.zip), in \jbpm-flow-builder\src\main\java\org\jbpm\compiler\ProcessBuilderImpl.java.

    In this file, it transforms rule flows into rule languages.

    However according to what you said, jbpm doesn't transform rule flows into rule languages, so I am confused.


    The following is a piece of the code in ProcessBuilderImpl.java.

    Can you tell me what is the function of the file "ProcessBuilderImpl.java".


    public void buildProcess(final Process process, Resource resource) {
            if ( resource != null && ((InternalResource)resource).hasURL() ) {
                ((org.jbpm.process.core.Process) process).setResource( resource );
            boolean hasErrors = false;
            ProcessValidator validator = processValidators.get(((Process)process).getType());
            if (validator == null) {
                System.out.println("Could not find validator for process " + ((Process)process).getType() + ".");
                System.out.println("Continuing without validation of the process " + process.getName() + "[" + process.getId() + "]");
            } else {
                ProcessValidationError[] errors = validator.validateProcess( (WorkflowProcess) process );
                if ( errors.length != 0 ) {
                    hasErrors = true;
                    for ( int i = 0; i < errors.length; i++ ) {
                        this.errors.add( new ParserError( errors[i].toString(),
                                                          -1 ) );
            if ( !hasErrors ) {
                // generate and add rule for process
                String rules = generateRules( process );
  • 4. Re: jBPM 5.0 released
    Kris Verlaenen Master

    The jBPM5 engine does not translate processes into rules (and neither did Drools Flow).  It uses a simple state machine to represent the current state and signal next states, etc.  The section you are referring to however allows you to combine this with rules if you want.  For example, if you want to use complex rule constraints (using the Drools DRL) in your exclusive gateway, we will generate the rules for you.  Similarly, if you use a condition start event, we will generate a rule that will trigger your process if that condition is met.

    The normal control flow however does not use rules or a rules engine, it works by having different state nodes trigger each other.