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

在grails中应用jbpm4

阅读更多

 

Grails 底层是 spring 的 mvc, jbpm4 也内置了 与 spring 集成的支持,因此 在 Grails 中集成进 jbpm4 还是比较简单的。

 

  1. 拷贝jbpm4.jar 及 依赖包 到 应用的 lib 下
  2. 将 jbpm.defaut.xml 改名为 jbpm.cfg.xml 拷贝到 grails-app/conf 目录下(可以是任意其它文件名)
  3. 在 resources.groovy(grails-app/conf/spring目录下,如果没有则新建一个) 中添加
    	jbpmConfiguration(org.jbpm.pvm.internal.cfg.SpringConfiguration, "jbpm.cfg.xml"){
    	}
     
  4. 同样预先配置好需要用的service  
        processEngine(org.jbpm.api.ProcessEngine){ bean ->
    	    bean.factoryBean = "jbpmConfiguration"
    	    bean.factoryMethod = "buildProcessEngine"
        }
        repositoryService(org.jbpm.api.RepositoryService){ bean->
    	    bean.factoryBean = "processEngine"
    	    bean.factoryMethod = "getRepositoryService"
        }
        executionService(org.jbpm.api.ExecutionService){ bean->
    	    bean.factoryBean = "processEngine"
    	    bean.factoryMethod = "getExecutionService"
        }
        commandService(org.jbpm.pvm.internal.cmd.CommandService, org.jbpm.pvm.internal.cmd.CommandService.class){ bean->
            bean.factoryBean = "processEngine"
            bean.factoryMethod = "get"
        }
    
        taskService(org.jbpm.api.TaskService){ bean->
            bean.factoryBean = "processEngine"
            bean.factoryMethod = "getTaskService"
        }
    
        historyService(org.jbpm.api.HistoryService){ bean->
            bean.factoryBean = "processEngine"
            bean.factoryMethod = "getHistoryService"
        }
    
        identityService(org.jbpm.api.IdentityService){ bean->
            bean.factoryBean = "processEngine"
            bean.factoryMethod = "getIdentityService"
        }
        managementService(org.jbpm.api.ManagementService){ bean->
            bean.factoryBean = "processEngine"
            bean.factoryMethod = "getManagementService"
        }
     
  5. 在jbpm.cfg.xml 中 标准事务拦截器修改为 spring 的事务拦截器
          <!--
          <standard-transaction-interceptor />
          -->
          <spring-transaction-interceptor current="true" />
     
  6. 同样在jbpm.cfg.xml 中,将 原来 transaction-context 中的 transaction 改为 hibernate session
        <!--
        <transaction />
        -->
        <hibernate-session current="true" close="false"/>
     
  7. 在hibernate.cfg.xml中(grails-app/conf/hibernate目录下,没有则新建一个),添加 jbpm 的 cfg 文件
    <!DOCTYPE hibernate-configuration SYSTEM
      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <mapping resource="jbpm.execution.hbm.xml" />
            <mapping resource="jbpm.repository.hbm.xml" />
            <mapping resource="jbpm.jpdl.hbm.xml" />
            <mapping resource="jbpm.task.hbm.xml" />
            <mapping resource="jbpm.history.hbm.xml" />
        </session-factory>
    </hibernate-configuration>
  8. 注释掉对jbpm 对 hibernate 的配置
        <!--
        <hibernate-configuration>
          <cfg resource="jbpm.hibernate.cfg.xml" />
        </hibernate-configuration>
    
        <hibernate-session-factory />
        -->
     

配置完成

这样配置完后,jbpm不再采用自己的事务,而是采用 spring 管理的事务,即要求 事务必须已经存在,因此在 grails中使用时,对 jbpm service 调用 必须在 grails 的 service 中进行。

 

完整的 参考 jbpm.cfg.xml 内容如下

<?xml version="1.0" encoding="UTF-8"?>

<jbpm-configuration>
  <import resource="jbpm.jpdl.cfg.xml" />
  <import resource="jbpm.identity.cfg.xml" />

  <!-- Job executor is excluded for running the example test cases. -->
  <!-- To enable timers and messages in production use, this should be included. -->
  <!--
  <import resource="jbpm.jobexecutor.cfg.xml" />
  -->
    <!--
  <import resource="jbpm.mail.templates.examples.xml" />
    -->


  <process-engine-context>

    <repository-service />
    <repository-cache />
    <execution-service />
    <history-service />
    <management-service />
    <identity-service />
    <task-service />
<!--
<hibernate-configuration>
<cfg resource="jbpm.hibernate.cfg.xml" />
</hibernate-configuration>

<hibernate-session-factory />
-->

<command-service> <retry-interceptor /> <environment-interceptor />
<!--
<standard-transaction-interceptor />
-->
<spring-transaction-interceptor current="true" />

</command-service> <script-manager default-expression-language="juel" default-script-language="juel" read-contexts="execution, environment, process-engine" write-context=""> <script-language name="juel" factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" /> </script-manager> <authentication /> <id-generator /> <types resource="jbpm.variable.types.xml" /> <address-resolver /> <business-calendar> <monday hours="9:00-12:00 and 12:30-17:00"/> <tuesday hours="9:00-12:00 and 12:30-17:00"/> <wednesday hours="9:00-12:00 and 12:30-17:00"/> <thursday hours="9:00-12:00 and 12:30-17:00"/> <friday hours="9:00-12:00 and 12:30-17:00"/> <holiday period="01/07/2008 - 31/08/2008"/> </business-calendar> <mail-template name='task-notification'> <to users="${task.assignee}"/> <subject>${task.name}</subject> <text><![CDATA[Hi ${task.assignee}, Task "${task.name}" has been assigned to you. ${task.description} Sent by JBoss jBPM ]]></text> </mail-template> <mail-template name='task-reminder'> <to users="${task.assignee}"/> <subject>${task.name}</subject> <text><![CDATA[Hey ${task.assignee}, Do not forget about task "${task.name}". ${task.description} Sent by JBoss jBPM ]]></text> </mail-template> </process-engine-context> <transaction-context> <repository-session /> <db-session /> <message-session /> <timer-session /> <history-session /> <mail-session> <mail-server> <session-properties resource="jbpm.mail.properties" /> </mail-server> </mail-session>
<!--
<transaction />
-->
<hibernate-session current="true" close="false"/>

</transaction-context> </jbpm-configuration>
分享到:
评论
2 楼 phoenix.clt 2010-01-22  
写这个时候是4.0 刚出来的时候, 以后的更新还没看呢。
1 楼 weihong0427 2010-01-07  
这种配置适用于jbpm 4.1,4.3就不是这种配置方式

相关推荐

    grails中文参考手册

    Grails兼容广泛的Java应用服务器,包括但不限于Apache Tomcat、Jetty、Resin等,这使得Grails应用能在不同的环境中无缝运行。 8. **创建工件** Grails提供了多种命令用于生成模型类、控制器、服务等工件,如`...

    Grails中文参考手册

    在 Grails 中,MVC 模式用于组织应用程序的结构。Model 负责业务逻辑和数据管理,View 负责显示用户界面,Controller 处理用户请求并协调 Model 和 View 的交互。 **GORM (Grails Object-Relational Mapping)** ...

    Grails 中文参考手册

    - **部署**:讲解了在各种Java EE容器中部署Grails应用的方法。 2. **配置**: - **基本配置**:讨论了Grails的基础配置选项,包括内置选项和日志设置。 - **数据源**:详细介绍了数据源的配置,包括与环境的...

    grails中文入门简介

    此外,还可以配置自动数据库移植功能,它会在应用启动时根据域类(domain class)结构自动创建数据库表。 Grails的命令行工具非常强大,它支持创建Gant脚本来自动化重复的构建任务。用户可以创建可复用的Grails脚本...

    Grails企业web应用开发与部署

    本篇文章将深入探讨Grails在企业Web开发中的应用以及部署策略。 一、Grails简介 Grails是一种模型-视图-控制器(MVC)框架,其设计理念是“约定优于配置”,大大简化了开发流程。它构建在Spring Boot之上,内置了...

    grails 中文文档+grails-fckeditor-0.9.5.zip插件

    4. 版本兼容:虽然grails-fckeditor-0.9.5是较旧的版本,但理解其工作原理有助于我们理解如何集成第三方库,以及在更新到新版本时需要注意的问题。 总结,Grails框架及其中文文档为开发者提供了强大的工具和丰富的...

    使用Grails快速开发Web应用

    - **环境搭建**:首先,需下载Grails程序并设置环境变量`GRAILS_HOME`,同时将`%GRAIS_HOME%\bin`添加至系统PATH变量中。 - **创建应用**:使用`grails create-app Contact`命令可快速生成名为“Contact”的应用框架...

    使用 Grails 快速开发 Web 应用程序

    同时,由于Groovy运行在Java虚拟机(JVM)上,Grails应用可无缝集成Java平台,利用Java的成熟库和应用服务器,确保了系统的稳定性和扩展性。 Grails遵循经典的MVC设计模式,其组件包括: 1. **Domain Class**:...

    grails中文API

    在Grails中,领域模型是应用程序的核心,它代表了业务数据和逻辑。通过定义Groovy类并使用Grails的GORM(Grails Object Relational Mapping)来与数据库交互,可以轻松实现数据持久化。 4. **控制器(Controllers...

    Grails1.1中文文档

    Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,Grails是构建在现有的像Spring、Hibernate这样的Java技术之上。 Grails是个一栈式开发框架,它尝试通过核心技术...

    grails ajax

    描述中的"javascript and ajax using in grails"强调了JavaScript在Grails应用中的重要性。JavaScript是实现Ajax交互的主要语言,通常用于处理用户交互和动态更新页面。Grails提供了与jQuery等流行JavaScript库集成...

    Grails1.1中文文档(CHM)

    Grails1.1最新 中文 文档 当今的Java Web开发技术...Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,Grails是构建在现有的像Spring、Hibernate这样的Java技术之上。

    Eclipse下搭建Grails项目

    - 在Eclipse的classpath variable中设置`GRAILS_HOME`变量,指向Grails的安装目录,避免在创建或导入项目时手动添加库文件。 - 在`Windows -&gt; Preferences -&gt; Groovy`中,勾选"Disable Groovy Compiler Generating...

    Grails Grails Grails

    4. **命令行工具**:Grails 提供强大的命令行工具,支持创建项目、运行应用、生成代码等任务,大大提升了开发效率。 5. **构建工具**:Grails 使用Gradle作为其构建工具,允许自定义构建流程和依赖管理。 **Grails...

    grails中的上传,下载

    在Grails框架中,文件的上传与下载是常见的功能需求,尤其在开发涉及大量文档、图片或媒体文件处理的应用程序时。以下是对Grails中上传和下载操作的深入解析,包括其实现机制、代码示例及注意事项。 ### 文件上传 ...

    Grails+快速开发+Web+应用程序.pdf

    - **运行应用**:通过`grails run-app`启动应用,在浏览器中查看结果。 #### 七、Grails与Java生态系统的整合 - **与Spring框架集成**:利用Spring管理依赖注入,简化对象管理。 - **与Hibernate集成**:通过...

    Grails 和 jQuery开发实例

    在本文中,我们将深入探讨如何使用Groovy on Grails(简称Grails)和jQuery来构建一个功能丰富的Web日历应用程序。Grails是一个基于Java平台的全栈式框架,它简化了Web应用的开发过程,而jQuery则是一款强大的...

Global site tag (gtag.js) - Google Analytics