Thursday 9 April 2009

jBPM 4.0.0.Beta1 Released

jBPM 4.0.0.Beta 1 is out. Go get it here. We've added task management capabilities like candidates and swimlanes. More details in our JIRA.

37 comments:

  1. Still nice on track for GA in July. Keep up the great work!

    ReplyDelete
  2. Nice... leaves me wondering what beta2 will bring

    ReplyDelete
  3. The installation instructions in user guide say that there are these two files in the root installation directory:

    jbpm.jar
    jpdl.xsd

    However, I could not find these files there. Can you please check this and repackage the installer with these or any other missing files? Thanks.

    ReplyDelete
  4. I did find the jpdl.xsd file in src directory as mentioned in the user guide. Sorry for the confusion.

    jbpm.jar is the one that I cannot find, which according to user guide should be in the root installation directory.

    ReplyDelete
  5. Thanks, Anonymous!

    after introducing the installer, the jbpm.jar was not yet recreated. the workaround is that you take the jbpm-* jars from the lib folder.

    jbpm-api.jar
    jbpm-log.jar
    jbpm-pvm.jar
    jbpm-test-base.jar
    jbpm-jpdl.jar

    i've created jira https://jira.jboss.org/jira/browse/JBPM-2159 for this

    The xsd is in the api jar. Probably we need to ship that separately in the distro as well.

    ReplyDelete
  6. Dear Tom,

    Congratulations for the new release! Would you please tell me if there is a transition roadmap from jBPM version 3.x to 4.x? Is there any docs on it?

    ReplyDelete
  7. Sherry,

    How exactly the migration support will look like is still being discussed. At least we'll have a process file conversion tool.

    regards, tom.

    ReplyDelete
  8. Dear Tom,

    I installed this version per instructions in user guide and imported the examples into Eclipse. When I run any of the examples, I get errors similar to:

    java.lang.IllegalArgumentException: Cannot obtain 'target/test-libs/jbpm-ConcurrencyGraphBasedTest.jpdl'.
    at org.jbpm.test.enterprise.IntegrationTestHelper.getTestArchiveFile(IntegrationTestHelper.java:213)
    at org.jbpm.test.enterprise.IntegrationTestHelper.getTestArchiveURL(IntegrationTestHelper.java:193)
    at org.jbpm.test.JbpmTestCase.localDeploy(JbpmTestCase.java:216)
    at org.jbpm.test.JbpmTestCase.deploy(JbpmTestCase.java:132)
    at org.jbpm.examples.concurrency.graphbased.ConcurrencyGraphBasedTest.setUp(ConcurrencyGraphBasedTest.java:40)
    at junit.framework.TestCase.runBare(TestCase.java:125)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)


    Can you please let me know if I am missing something? I super simple step-by-step would be nice for running a basic process.

    Thanks in advance for your help.

    Best regards,
    Kamal

    ReplyDelete
  9. thanks. that will be fixed in the next release: https://jira.jboss.org/jira/browse/JBPM-2162

    ReplyDelete
  10. Hi,

    Can you please give me a small POJO code example (not jUnit example) that embeds jBPM and executes a process with persistence to PostgreSQL (or any DB)? I cannot find such example and your help is much appreciated if you can provide one.

    Thanks and regards

    ReplyDelete
  11. I see many people talk about embedding jBMP. However, there are no examples to follow to how to do so. A clear and concise example of embedding jBMP, free of any JBoss references, would be nice.

    ReplyDelete
  12. Hello

    I'm trying to setup working environment using latest version of jBPM 4.0.0.beta1. I followed instructions found in community document: .

    Everything is fine until I try to create a new Proces Project. Eclipse 3.4.2 is unable to find location of jBoss JBPM runtime that I installed in folder C:\jbpm-4.0.0.Beta1\ The error message is: This location does not contain a valid JBoss jBPM runtime .

    I did the same thing with version jBPM 3.2.6 SP1 and it works. I suspect there is a problem with Eclipse configuration. Does anyone has a clue or a work-around for this problem!

    ReplyDelete
  13. Communitity document is jBPM USER GUIDE and is published @ http://docs.jboss.com/jbpm/v4.0/userguide/html_single/

    ReplyDelete
  14. Dejan,

    There is no create project wizard in the 4.0 branch of the GPD. If you are using the 3.1.x branch, this will not work with jBPM 4.0. If you have problems using the GPD, please report it in the user forum and/or in JIRA.

    Thanks,
    Koen

    ReplyDelete
  15. How can I send an email using jBPM4?

    ReplyDelete
  16. Anonymous,

    email should be arriving in the next beta 2 release.

    ReplyDelete
  17. It seems that PvmEnvironmentFactory is missing from jBPM 4 libs. Also, it'd be great if we can fine a simple of using jBPM in persistent mode and in a separate project rather than examples.

    --Sherry

    ReplyDelete
  18. PvmEnvironmentFactory is not part of the public api. That means basically you have to know what you're doing and you don't get any compatibility guarantees. So the advice is to stick within the api as documented in the javadocs. You can also recognize internal classes since they have ...internal... in the package name.

    ReplyDelete
  19. hi Kamal
    you can open the source file JbpmTestCase.java ,find method localDeploy and modify as follow:
    public void localDeploy(String archive) {
    try {
    long deploymentDbid = repositoryService.createDeployment().addResourceFromClasspath(archive).deploy();
    registerDeployment(deploymentDbid);
    } catch (Exception e) {
    throw new RuntimeException("local deploy failed", e);
    }
    }
    then ,modify deploy("org/jbpm/examples/sql/process.jpdl.xml");

    ReplyDelete
  20. hi Kamal
    method deploy is in your TestCase

    ReplyDelete
  21. Hi Tom,

    I have set up the eclipse as stated in the document. I am not able to set the properties for the nodes as i did in jbpn3.2.x. The node properties only contain the Name.

    Am i missing anything.

    Thanks
    Regards
    GN

    ReplyDelete
  22. Hi GN,

    Don't worry, the rest of the properties are coming ;-)

    Cheers,
    Koen

    ReplyDelete
  23. Looking forward for the release.
    Will this vesion be available on the JBoss Maven repo?

    ReplyDelete
  24. Ophir,

    We're almost releasing beta 2 (may 4th). I'll make sure that version is uploaded to the maven repository.

    regards, tom.

    ReplyDelete
  25. Hi Tom,

    i'm trying to migrate from jbpm 3.x to 4.1 beta. Some of the things i noticed are a) very few tables being used in 4.x. Are there any features being removed b) Whats the best way to get process definition from a given jpdl xml file? I saw the api but mostly could find for a given process name. c) How can Execution and ProcessDefinition be related to each other, like from execution i would like to get the related process definition.

    Thanks,
    Sridhar

    ReplyDelete
  26. Sridhar,

    It is still too early to migrate. We'll have process conversion tool for GA. And maybe some more migration support later on. That still has to be decided.

    regards, tom.

    ReplyDelete
  27. I may have confused you. I'm not trying to migrate existing process definitions .. but the feature available in 3.x to get the process definition from an xml file isn't available in 4.x. I'm just trying to find the latest process definition from an xml file.

    Method1:
    List processInstances = historyService.createHistoryProcessInstanceQuery(). processDefinitionId (processDefinition.getId()). execute();

    Method2:
    Parse parse = new JpdlParser().createParse();
    parse.setInputSource(new InputSource(this.getClass(). getResourceAsStream (processDef)));
    parse.execute();
    JpdlProcessDefinition processDefinition = (JpdlProcessDefinition) parse.getDocumentObject();
    return processDefinition;

    I thought RepositoryService would have cleaner to perform the same.

    -Sridhar

    ReplyDelete
  28. now i get you.

    that feature won't be available in the same way as it was in jbpm 3 through the public api. JpdlParser is in the internal classes. use at your own risk and its not properly documented as it is considered internal.

    just for my info: what your use case for parsing the process file and obtaining the process definition object model programmatically ?

    ReplyDelete
  29. Basically on application startup, we would like to check the latest processdefinition in database against the process def xml's we have. With jBPM 3.x, we had a property file which consisted of process def xml and version corresponding to it. Code would first convert xml to process definition, get the latest version of it from database and then compare it with version defined in property file to take appropriate action.

    We also want to verify process def xml against the database record. Is there any scope to improve JpdlWriter?

    -Sridhar

    ReplyDelete
  30. We do not use the Web Console to manage our process definitions. Whenever we edit our process definition files(xml files) we deploy them manually as part of a startup event from within our own web application, which basically does the following:
    1.) reads the processdefinition.xml (this will be an array property in the system pointing to all the locations where process definitions exist.)
    2.) Also reads in the properties related to each of the process definition. If we have added a new one, it is annotated as a new one and the code deploys it into the database. If this is an update, we also annotate the property with a version number, if the version number provided matches the one in the database, then we redeploy. Otherwise skip it.
    This is done because there is no way to control the deployment of process definitions except via the Web Console. Even there, it could be prone to manual errors.

    What are the other ways of doing this, other than using the web console? We are usually not in charge of our deployment environments, and ideally unless we QA the process once, we do not push things to production. So we do not mind adding it to our application startup code.

    ReplyDelete
  31. Hi Tom,

    Just to bring to your notice, a strange behavior of jBPM 3.x and Hibernate posted in forums.

    https://forum.hibernate.org/viewtopic.php?f=1&t=996570&p=2411098#p2411098


    -Sridhar

    ReplyDelete
  32. This comment has been removed by the author.

    ReplyDelete
  33. The issue i posted is resolved with beta2 update thanks

    ReplyDelete
  34. In JBPM 3.1 we have an option to create process project. How we can create a process process project in 4.1. I have followed the user guide to setup the environment.

    ReplyDelete
  35. Robin, just create a plain Java project and then define the jBPM Libraries as described in the userguide.

    ReplyDelete
  36. Hi Tom , can you help me solving this problem?

    I have a process in that process I have a task name sendEmail.

    I have wlfullclient.jar for java mail.

    when I run examples code it works with mail.jar
    but when I run with wlfullclient.jar I get the following error

    Exception in thread "main" java.lang.NoSuchFieldError: line
    at javax.mail.internet.InternetHeaders.setHeader(InternetHeaders.java:430)
    at javax.mail.internet.MimeMessage.setHeader(MimeMessage.java:1768)
    at javax.mail.internet.MimeMessage.setSubject(MimeMessage.java:793)
    at javax.mail.internet.MimeMessage.setSubject(MimeMessage.java:757)
    at org.jbpm.pvm.internal.email.impl.MailProducerImpl.fillSubject(MailProducerImpl.java:244)
    at org.jbpm.pvm.internal.email.impl.MailProducerImpl.produce(MailProducerImpl.java:80)
    at org.jbpm.jpdl.internal.activity.MailListener.notify(MailListener.java:56)
    at org.jbpm.pvm.internal.model.op.ExecuteEventListener.perform(ExecuteEventListener.java:81)
    at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:656)
    at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:616)
    at org.jbpm.pvm.internal.model.ExecutionImpl.fire(ExecutionImpl.java:563)
    at org.jbpm.pvm.internal.model.ExecutionImpl.fire(ExecutionImpl.java:553)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
    at org.jbpm.pvm.internal.model.ExecutionImpl$$EnhancerByCGLIB$$975d5939.fire()
    at org.jbpm.pvm.internal.job.TimerImpl.execute(TimerImpl.java:97)
    at org.jbpm.pvm.internal.job.TimerImpl.execute(TimerImpl.java:52)
    at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:76)
    at org.jbpm.pvm.internal.cmd.ExecuteJobCmd.execute(ExecuteJobCmd.java:42)
    at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
    at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:54)
    at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53)
    at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40)
    at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
    at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43)
    at org.jbpm.pvm.internal.svc.ManagementServiceImpl.executeJob(ManagementServiceImpl.java:37)


    thanks
    Vasishta

    ReplyDelete