Osworkflow
作者:ahxu 时间:
由于osworkflow与spring及hibernate3的集成不是很完善,网上也很鲜见有成功配置的文章及例子,加上osworkflow的文档帮助有限,为了方便其它开发人员学习和使用,ahxu将把osworkflow
测试环境安装
1. Netbeans 5简体中文版集成的Tomcat5.5
2. Mysql
3. Osworkflow
4. hibernate
5. spring
应用配置
由于受项目所采用的技术影响,这里只提供了一种常见的配置形式(仅供测试,未必准确,各项目具体详细的配置安装请参见各项目的安装说明文档)。
1. %Application%/ WEB-INF/lib下需要放置的库文件有:
a) Osworkflow的支持包
包名 |
文件来源 |
commons-logging.jar |
%osworkflow解压包%/lib/core |
propertyset-1.4.jar |
|
oscore- |
|
propertyset-hibernate-1.4.jar |
%osworkflow解压包%/lib/optional |
bsf.jar |
|
bsh-1.2b7.jar |
|
ehcache.jar |
|
osuser-1.0-dev-2Feb05.jar |
|
osworkflow- |
%osworkflow解压包%/ |
b) Srping的支持包
包名 |
文件来源 |
spring.jar |
%spring解压包%/dist |
c) Hibernate的支持包
包名 |
文件来源 |
antlr.jar |
%hibernate解压包%/lib |
cglib.jar |
|
asm.jar |
|
asm-attrs.jars |
|
commons-collections.jar |
|
commons-logging.jar |
|
hibernate3.jar |
|
jta.jar |
|
dom4j.jar |
|
log4j.jar |
2. %Application%/ WEB-INF/classes下需要放置的配置文件:
a) workflows.xml
内容略,与OSWF自带例子同。
b) example.xml
内容略,与OSWF自带例子同。
c) osuser.xml
内容略,与OSWF自带例子同。
d) propertyset.xml
<?xml version="1.0" encoding="UTF-8"?> <propertysets> <propertyset name="hibernate3" class="ahxu.workflow.hibernate3.HibernatePropertySet"> <arg name="hibernate.connection.datasource" value="jdbc/DefaultDS" /> <arg name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> </propertyset> </propertysets> |
注:hibernate.dialect的值取决于你使用的数据库。
e) log4j.properties
内容略,与OSWF自带例子同。
3. %Application%/ WEB-INF/下需要放置的配置文件有:
a) web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-osworkflow.xml</param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>SOAPWorkflow</servlet-name> <servlet-class>com.opensymphony.workflow.soap.SOAPWorkflowServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SOAPWorkflow</servlet-name> <url-pattern>/soap/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app> |
b) spring-osworkflow.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"><value>java:comp/env/jdbc/DefaultDS</value></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true"> <property name="dataSource"><ref local="dataSource"/></property> <property name="mappingResources"> <list> <value>com/opensymphony/workflow/spi/hibernate3/HibernateCurrentStep.hbm.xml</value> <value>com/opensymphony/workflow/spi/hibernate3/HibernateHistoryStep.hbm.xml</value> <value>com/opensymphony/workflow/spi/hibernate3/HibernateWorkflowEntry.hbm.xml</value> <value>ahxu/workflow/hibernate3/PropertySetItemImpl.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">create-drop</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" > <ref local="sessionFactory"/> </property> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"><ref local="transactionManager"/></property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean>
<bean id="workflow" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="singleton"> <value>false</value> </property> <property name="proxyInterfaces"> <value>ahxu.osworkflow.example.WebWorkflow</value> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> <value>workflowTarget</value>
|