码迷,mamicode.com
首页 > 其他好文 > 详细

SSH整合JBPM4.4

时间:2014-10-15 13:00:00      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   使用   ar   

第一步:导入所需jar包

具体所需jar包见附件图片

bubuko.com,布布扣

第二步:修改jbpm配置文件:

1、src目录下建立jbpm.cfg.xml(注意注释部分)

<?xml version="1.0" encoding="UTF-8"?>     
<jbpm-configuration>     
    <process-engine-context>     
        <string name="spring.cfg" value="applicationContext.xml" />     
    </process-engine-context>    
    <import resource="jbpm.default.cfg.xml" />     
    <import resource="jbpm.tx.spring.cfg.xml" />     
    <import resource="jbpm.jpdl.cfg.xml" />     
    <import resource="jbpm.bpmn.cfg.xml" />     
    <import resource="jbpm.identity.cfg.xml" />     
    <import resource="jbpm.businesscalendar.cfg.xml" />     
    <import resource="jbpm.console.cfg.xml" />    
    <import resource="jbpm.spring.default.cfg.xml"/>    
    <!--      
    <import resource="jbpm.jobexecutor.cfg.xml" />    
    -->     
</jbpm-configuration> 

2、src目录下建立jbpm.spring.default.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>     
     
<jbpm-configuration>     
     
  <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 />     
-->     
    <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-context>     
     
</jbpm-configuration>    

第三步:修改Spring配置文件

1、applicationContext.xml中加入springHelper配置,作为jbpm processEngine的factory bean

<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">  
        <property name="jbpmCfg" value="jbpm.cfg.xml" />  
    </bean>  

2、applicationContext.xml中加入processEngine配置,并以此为factory bean创建JBPM本身的各种Service

<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine"  />  
       
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>  
    <bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService"/>  
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>  
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>  
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>  

3、applicationContext.xml的hibernate配置中加入jbpm所需的hbm.xml配置

<property name="mappingLocations">  
       <list>  
                <value>classpath:jbpm.execution.hbm.xml</value>  
                <value>classpath:jbpm.history.hbm.xml</value>  
                <value>classpath:jbpm.identity.hbm.xml</value>  
                <value>classpath:jbpm.repository.hbm.xml</value>  
                <value>classpath:jbpm.task.hbm.xml</value>  
       </list>  
</property>  

4、完整的applicationContext.xml(包括其余DataSource、SessionFacotry、事务控制等)

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"  
    xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"  
    default-lazy-init="true">  
    <import resource="serviceContext.xml" />  
  
    <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">  
        <property name="jbpmCfg" value="jbpm.cfg.xml" />  
    </bean>  
  
    <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine"  />  
       
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>  
    <bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService"/>  
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"/>  
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"/>  
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"/>  
       
    <bean id="mainDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">  
        <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />  
        <property name="jdbcUrl" value="jdbc:oracle:thin:@XXXXX:1521:XE" />  
        <property name="username" value="jbpm4" />  
        <property name="password" value="jbpm" />  
        <property name="idleConnectionTestPeriod" value="60" />  
        <property name="idleMaxAge" value="240" />  
        <property name="maxConnectionsPerPartition" value="60" />  
        <property name="minConnectionsPerPartition" value="20" />  
        <property name="partitionCount" value="3" />  
        <property name="acquireIncrement" value="10" />  
        <property name="preparedStatementCacheSize" value="50" />  
        <property name="statementsCachedPerConnection" value="30" />  
        <property name="releaseHelperThreads" value="3" />  
    </bean>  
    <bean id="dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">  
        <property name="targetDataSource">  
            <ref local="mainDataSource" />  
        </property>  
    </bean>  
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
        <property name="dataSource">  
            <ref bean="dataSource" />  
        </property>  
        <property name="hibernateProperties">  
            <props>  
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>  
                <prop key="hibernate.show_sql">true</prop>  
            </props>  
        </property>  
        <property name="mappingLocations">  
            <list>  
                <value>classpath:jbpm.execution.hbm.xml</value>  
                <value>classpath:jbpm.history.hbm.xml</value>  
                <value>classpath:jbpm.identity.hbm.xml</value>  
                <value>classpath:jbpm.repository.hbm.xml</value>  
                <value>classpath:jbpm.task.hbm.xml</value>  
            </list>  
        </property>  
        <property name="annotatedClasses">  
            <list>  
                <value>com.fish119.jssh.pojo.Test</value>  
            </list>  
        </property>  
    </bean>  
  
    <!-- 事务配置开始 -->  
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean>  
    <!--事务配置-->  
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">  
        <property name="transactionManager">  
            <ref bean="transactionManager" />  
        </property>  
        <!-- 配置事务属性 -->  
        <property name="transactionAttributes">  
            <props>  
                <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>  
                <prop key="delete*">PROPAGATION_REQUIRED</prop>  
                <prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="*Save*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="exchange*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="set*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="Test*">PROPAGATION_REQUIRED,-Exception</prop>  
                <prop key="*Test">PROPAGATION_REQUIRED,-Exception</prop>  
            </props>  
        </property>  
    </bean>  
    <bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        <property name="beanNames">  
            <list>  
                <value>*Service</value>  
            </list>  
        </property>  
        <property name="interceptorNames">  
            <list>  
                <value>transactionInterceptor</value>  
            </list>  
        </property>  
    </bean>  
    <!-- 事务配置结束 -->  
    <bean id="testDAO" class="com.fish119.jssh.dao.TestDAO" autowire="byType">  
        <property name="sessionFactory">  
            <ref bean="sessionFactory" />  
        </property>  
    </bean>  
</beans>  

第四步:配置Struts2(使用了convention plugin)

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC   
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
    "http://struts.apache.org/dtds/struts-2.0.dtd">  
  
<struts>  
    <constant name="struts.objectFactory" value="spring" />  
    <!--  
        <constant name="struts.objectFactory.spring.autoWire" value="type"/>  
    -->  
  
    <constant name="struts.devMode" value="true" />  
    <constant name="struts.convention.classes.reload" value="true" />  
  
  
    <!-- 结果资源所在路径 -->  
    <constant name="struts.convention.result.path" value="/" />  
    <!-- 默认action所在的包 -->  
    <constant name="struts.convention.default.parent.package"  
        value="myPackage" />  
    <!-- 不被convention组件扫描的包  -->  
    <!-- <constant name="struts.convention.exclude.packages" value=""/>  -->  
  
    <package name="myPackage" extends="json-default">  
       
        <global-results>  
            <result name="exception">/error.jsp</result>  
            <result name="error">/error.jsp</result>  
            <result name="none">/error.jsp</result>  
            <result name="login">/login.jsp</result>  
        </global-results>  
  
        <global-exception-mappings>  
            <exception-mapping result="exception" exception="java.lang.Exception">  
            </exception-mapping>  
        </global-exception-mappings>  
  
    </package>  
</struts>  

第五步:测试

1、建立action类:IndexAction

public class IndexAction extends BaseAction{   
  
    private static final long serialVersionUID = 1L;   
  
    ProcessEngine processEngine;   
    RepositoryService repositoryService;   
    ExecutionService executionService;   
    TaskService taskService;   
    HistoryService historyService;   
    IdentityService identityService;   
  
    public ProcessEngine getProcessEngine(){   
        return processEngine;   
    }   
  
    public void setProcessEngine(ProcessEngine processEngine){   
        this.processEngine = processEngine;   
    }   
  
    public RepositoryService getRepositoryService(){   
        return repositoryService;   
    }   
  
    public void setRepositoryService(RepositoryService repositoryService){   
        this.repositoryService = repositoryService;   
    }   
  
    public ExecutionService getExecutionService(){   
        return executionService;   
    }   
  
    public void setExecutionService(ExecutionService executionService){   
        this.executionService = executionService;   
    }   
  
    public TaskService getTaskService(){   
        return taskService;   
    }   
  
    public void setTaskService(TaskService taskService){   
        this.taskService = taskService;   
    }   
  
    public HistoryService getHistoryService(){   
        return historyService;   
    }   
  
    public void setHistoryService(HistoryService historyService){   
        this.historyService = historyService;   
    }   
  
    public IdentityService getIdentityService(){   
        return identityService;   
    }   
  
    public void setIdentityService(IdentityService identityService){   
        this.identityService = identityService;   
    }   
  
  
    public String execute(){   
            System.out.println("processEngine:" + this.getProcessEngine());   
            System.out.println("repositoryService:"  
                    + this.getRepositoryService());   
            System.out   
                    .println("executionServcie:" + this.getExecutionService());   
            System.out.println("taskService:" + this.getTaskService());   
            System.out.println("historyService:" + this.getHistoryService());   
        return SUCCESS;   
    }   
}  

2、启动tomcat,访问http://localhost:8080/ProjectName/index。

本文转自:http://blog.csdn.net/yjboy1982/article/details/6043379

SSH整合JBPM4.4

标签:des   style   blog   http   color   io   os   使用   ar   

原文地址:http://www.cnblogs.com/dreammyle/p/4025746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!