首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

调整SSH(Struts2、Spring、Hibernate)和JBPM4.4

2012-08-27 
整合SSH(Struts2、Spring、Hibernate)和JBPM4.4第一步:导入所需jar包:?具体所需jar包见附件图片?第二步:修改

整合SSH(Struts2、Spring、Hibernate)和JBPM4.4

第一步:导入所需jar包

?

具体所需jar包见附件图片

?

第二步:修改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" 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" 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" 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" /></property></bean><bean id="sessionFactory" /></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" ref="sessionFactory" /></bean><!--事务配置--><bean id="transactionInterceptor" /></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" 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。控制台出现以下内容:

?

processEngine:org.jbpm.pvm.internal.processengine.SpringProcessEngine@2553861repositoryService:org.jbpm.pvm.internal.repository.RepositoryServiceImpl@22b044eexecutionServcie:org.jbpm.pvm.internal.svc.ExecutionServiceImpl@220d12etaskService:org.jbpm.pvm.internal.svc.TaskServiceImpl@22d9289historyService:org.jbpm.pvm.internal.svc.HistoryServiceImpl@2257b64identityService:org.jbpm.pvm.internal.svc.IdentityServiceImpl@223f277
?

?

?3、可以进一步进行事务测试,建立自己的Service类,添加测试方法,可以看到事务已由Spring统一管理,这里就不提供代码了

?

附件:所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理):

调整SSH(Struts2、Spring、Hibernate)和JBPM4.4

热点排行