`
grid.qian
  • 浏览: 57603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初学JBPM遇到的几个问题

    博客分类:
  • jbpm
阅读更多
   刚开始学习JBPM,按照陈刚的博客跑了跑,碰到了几个问题。写在这里,给自己提个醒。
我用的是JBPM3.3,server是JBOSS AS 4.2.3,数据库是mysql。
   陈刚的博客是
http://www.blogjava.net/chengang/category/12967.html
   按着他的例子作,遇到了以下几个问题:
   1 包引用的问题
   利用JBOSS TOOLS开发平台开发JBPM项目,很容易。不用这个TOOLS,也可以下载JBPM的ECLIPSE的插件包,自己安装也行。
   创建一个初始的JBPM项目,会有问题。主要是有的JAR包没有引入。
   要用mysql,需要引入mysql的驱动包。
   还有jboss-j2ee.jar包(从jboss as中找)
   跑测试用例时,会出现:
java.lang.NoClassDefFoundError: javax/transaction/Synchronization
	at org.hibernate.impl.SessionImpl.<init>(SessionImpl.java:213)
	at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:473)
	at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:497)
	at org.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:505)
	at org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:117)
	at org.jbpm.persistence.db.DbPersistenceService.getGraphSession(DbPersistenceService.java:351)
	at org.jbpm.JbpmContext.getGraphSession(JbpmContext.java:639)
	at org.jbpm.JbpmContext.deployProcessDefinition(JbpmContext.java:173)
	at com.sample.DeployProcessTest.testDeployProcessDefinition(DeployProcessTest.java:66)
	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:585)
	at junit.framework.TestCase.runTest(TestCase.java:154)
	at junit.framework.TestCase.runBare(TestCase.java:127)
	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)


    2 记得加一个服务到jbpm.cfg.xml中
    <service name="tx" factory="org.jbpm.tx.TxServiceFactory"/>
    如果不加它,会出现下面的错误。
    好像是在jbpmContext.close()时,去处理hibernate事务。
org.jbpm.JbpmException: no jbpm tx service configured
	at org.jbpm.persistence.db.DbPersistenceService.isRollbackOnly(DbPersistenceService.java:405)
	at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:217)
	at org.jbpm.svc.Services.close(Services.java:236)
	at org.jbpm.JbpmContext.close(JbpmContext.java:136)
	at com.sample.DeployProcessTest.testDeployProcessDefinition(DeployProcessTest.java:70)
	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:585)
	at junit.framework.TestCase.runTest(TestCase.java:154)
	at junit.framework.TestCase.runBare(TestCase.java:127)
	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)

    3 参考我的提问,发现每次部署流程,总会删除数据库中的所有数据,然后再部署。
    http://jbpm.group.iteye.com/group/topic/9078
    后来发现是hibernate.cfg.xml中
    <property name="hibernate.hbm2ddl.auto">update</property>的值不同引起的。这个属性有四个值可供选择。网上查了下:
    它包含4个属性:

    * create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变


    * create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除


    * update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行。则在运行应用程序时(第一次),会自动建立起表的结构(前提是先建立好数据库)。要注意的是,当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会


    * validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值





分享到:
评论

相关推荐

    jbpm 下载链接资源

    为了充分利用JBPM的强大功能,建议开发者们从以下几个方面入手: 1. **熟悉BPMN规范**:了解BPMN的基本概念和符号,这将有助于更好地设计和理解业务流程图。 2. **研究官方文档**:JBPM的官方文档是学习的重要...

    jbpm 入门及帮助文档

    这个压缩包包含了几个关键的学习资源,可以帮助初学者快速掌握jBPM的基础知识和实践应用。 首先,"jBPM 开发入门指南"提供了一个系统性的引导,涵盖了jBPM的基本概念、安装配置、工作流设计、任务管理和事件处理等...

    jbpm3 入门项目-环境搭建(1)

    环境搭建的步骤通常包括以下几个部分: 1. **Java环境**:jbpm3要求Java运行环境(JRE)和Java开发工具集(JDK)的安装。确保你的系统上已经安装了JDK 1.4或更高版本,并设置了正确的`JAVA_HOME`环境变量。 2. **...

    JBPM实例讲解+源码+视图+流程

    如果遇到问题,可以利用JBPM提供的调试工具来进行故障排查。 #### 七、总结 通过这个报销申请实例的学习,我们不仅了解了JBPM的基本使用方法,还掌握了如何利用JBPM来实现一个完整的业务流程。这对于日后在实际工作...

    jBPM-side流程设计器所有资料

    手册也可能包含故障排查和优化技巧,帮助用户解决在实际应用中遇到的问题。 总的来说,jBPM-side流程设计器提供的资料是全面且深入的,无论是初学者还是经验丰富的开发者,都能从中受益。通过系统学习和实践,你...

    JBPM各种文档

    文档中可能涵盖了以下几个关键知识点: 1. **jbPM介绍**:jbPM的基本概念、架构和设计原理,以及它在业务流程管理中的作用。理解jbPM如何通过BPMN(Business Process Modeling Notation)模型来表达复杂的业务流程...

    jBPM4 user guide

    - 鼓励用户在遇到问题时及时反馈,提供了一个官方的渠道用于提交bug报告或功能请求。 - 有助于社区及时了解并解决各种问题,从而推动项目的持续发展。 #### 二、安装配置 - **2.1 发布包介绍** - 描述了jBPM4的...

    jBPM4 developer guide

    jBPM4 的架构设计考虑到了灵活性和可扩展性,主要包括以下几个方面: **5.1 API** API 是 jBPM4 的核心,提供了与流程交互的各种接口。 **5.2 Activity API** Activity API 是用于处理活动的核心 API。 **5.3 ...

    JBPM与Spring集成开发指导书.doc

    **参考资料**\n对于初学者,可以通过官方文档、教程和社区论坛获取更多关于JBPM和Spring集成的信息,包括示例代码、最佳实践和常见问题解答。\n\n总之,JBPM与Spring的集成开发为构建高效、灵活的业务流程管理系统...

    JBoss下载与JBoss安装.doc

    JBoss是一款开源的应用服务器,由Red Hat公司开发并维护,它基于Java EE(Enterprise Edition)标准,支持多种服务和框架,包括Servlet、...在实际操作中,可能还会遇到其他问题,建议查阅官方文档或社区论坛寻求帮助。

    新手如何学习编程.doc

    本文将根据给定的文件信息,详细阐述几个关键的学习步骤,并深入探讨.NET与Java这两种编程语言的学习路径。 #### 1. 确定兴趣与目标 在开始学习编程之前,最重要的是确定自己是否对这一领域感兴趣以及是否有明确的...

Global site tag (gtag.js) - Google Analytics