Java琐事

-I am not alone
posts - 54, comments - 30, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

把jbpm3整合进ssh中

Posted on 2011-04-26 11:30 石子路口 阅读(2145) 评论(0)  编辑  收藏 所属分类: 工作流
     网上有好多关于jbpm独立部署的资料,但好多人是在已有的系统的部署jbpm,这里就说下如何在ssh框架的基础上配置jbpm3。
1. 环境:jbpm3.2.3+struts2+spring3+hibernate    工具:myeclipse6.5
2. 环境和工具都准备好,开始新建数据库,前面jbpm3数据库表的创建与解释有说明
3. 使用spring配置数据源,applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    
<bean id="dataSource"
        class
="org.apache.commons.dbcp.BasicDataSource">
        
<property name="driverClassName"
            value
="com.mysql.jdbc.Driver">
        
</property>
        
<property name="url"
            value
="jdbc:mysql://localhost:3306/eteares">
        
</property>
        
<property name="username" value="root"></property>
        
<property name="password" value="root"></property>
    
</bean>

    
<bean id="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="dataSource">
            
<ref bean="dataSource" />
        
</property>

        
<property name="hibernateProperties">
            
<props>
                
<prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLInnoDBDialect
                
</prop>
                
<!-- 是否根据需要每次自动创建数据库 -->
                
<prop key="hibernate.hbm2ddl.auto">update</prop>
                
<!-- 显示hibernate持久化操作时产生的SQL -->
                
<prop key="hibernate.show_sql">true</prop>
                
<!-- 将SQL格式化后再输出 -->
                
<prop key="hibernate.format_sql">true</prop>
            
</props>
        
</property>

        
<property name="mappingLocations">
            <list>
                <value>classpath*:/cn/edu/ujn/wsjx/model/*.hbm.xml</value>
                <value>classpath*:/org/jbpm/**/*.hbm.xml</value>
            </list>
        </property>
    </bean>
</beans>
上面代码的红色部分,<value>classpath*:/org/jbpm/**/*.hbm.xml</value> 是jbpm需要的所有映射文件,*为通配符。
4. 使用eclipse的jbpm插件图形化定义流程,把生成的三个文件打包成work.zip
5. 在spring中配置jbpm,applicationContext-jbpm.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 指定Spring配置文件的DTD信息 -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
    "http://www.springframework.org/dtd/spring-beans-2.0.dtd"
>
<!-- Spring配置文件的根元素 -->

<beans>

    
<!-- 通过启动服务自动发布流程 -->
    
<bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
        
<property name="sessionFactory" ref="sessionFactory"/>
        
<property name="configuration" value="classpath:jbpm.cfg.xml"/>
        
        
<property name="processDefinitions">
            
<list>
                
<ref local="workWorkflow"/>
            
</list>
        
</property>
        
<property name="createSchema" value="false"/>

    
</bean>
    
    
<bean id="workWorkflow" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
        
<property name="definitionLocation" value="classpath:jbpm/work/work.zip"/>
    
</bean>
    

    
<bean id="workTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
        
<constructor-arg index="0" ref="jbpmConfiguration"/>
        
<constructor-arg index="1" ref="workWorkflow"/>
    
</bean>
    
    
</beans>
可以看出,这里配置的是通过启动服务器,自动加载流程的发布。
6. 很重要的是,在web.xml中添加spring启动时加载文件
    <context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>
            /WEB-INF/classes/spring/applicationContext.xml,/WEB-INF/classes/spring/applicationContext-*.xml,/WEB-INF/classes/spring/daoContext.xml
        
</param-value>
    
</context-param>

这里用到了重新编译后的spring-modules-jbmp31.jar包,更改后支持发布zip格式的定义,文件包含在后面的链接中,可以下载下来参考WebRoot
后面会继续更新 手动发布流程定义 的文章

只有注册用户登录后才能发表评论。


网站导航: