osworflow+spring

最近一直忙于研究开源工作流osworkflow,该工作流还可以,虽然比起现在流行的jbpm来说暂时还是有一定的差距,主要表现在可视化GUI方面的差距上,但是jbmp是要jboss支持的,其可视化也是作为eclipse插件形式来应用的,所以对于没有采用jboss和eclipse的同志来说可能就不太方便,再者osworkflow的灵活性非常好。
     在最近经常上网查关于osworkflow2.8的资料,但不管是官方提供的资料和实例,还是网上很多同事发布的资料(和多都只是对官方资料的翻译和直接应用),很少能够按其配置而能够运行的,特别是对采用spring架构而在持久层没有采用hibernate的人来说将很麻烦(本人采用的是ibatis,所以只能采用jdbc),其jdbcstore里面有depercation的方法,所以继承了之后编译也有问题,需要调整编译方式。再者直接采用spring+jdbc直接在applicationcontent里面配置的是后将更加麻烦,所以本人最后还是将其osworkflow的源文件编译之后添加到osworkflow2.8的jar里面,然后写了一个类继承jdbdstore类。
 <bean id="workflowStore" class="com.framework.controller.MyJDBCWorkflowStore">
 <property name="ds"><ref bean="dataSource"/></property>
    <property name="entrySequence" value="SELECT seq_os_wfentry.nextVal from dual"/>
    <property name="stepSequence" value="SELECT seq_os_currentsteps.nextVal from dual"/>
    <property name="entryTable" value="OS_WFENTRY"/>
    <property name="entryId" value="ID"/>
    <property name="entryName" value="NAME"/>
    <property name="entryState" value="STATE"/>
    <property name="historyTable" value="OS_HISTORYSTEP"/>
    <property name="currentTable" value="OS_CURRENTSTEP"/>
    <property name="historyPrevTable" value="OS_HISTORYSTEP_PREV"/>
    <property name="currentPrevTable" value="OS_CURRENTSTEP_PREV"/>
    <property name="stepId" value="ID"/>
    <property name="stepEntryId" value="ENTRY_ID"/>
    <property name="stepStepId" value="STEP_ID"/>
    <property name="stepActionId" value="ACTION_ID"/>
    <property name="stepOwner" value="OWNER"/>
    <property name="stepCaller" value="CALLER"/>
    <property name="stepStartDate" value="START_DATE"/>
    <property name="stepFinishDate" value="FINISH_DATE"/>
    <property name="stepDueDate" value="DUE_DATE"/>
    <property name="stepStatus" value="STATUS"/>
    <property name="stepPreviousId" value="PREVIOUS_ID"/>
    <!--<property name="jdbcPropertySet"><ref local="jdbcPropertySet"/></property>-->
  </bean>
该bean是在spring里面配置jdbc的配置,里面的MyJDBCWorkflowStore类是我自己写的一个非常简单的类。该类继承自JDBCWorkflowStore。
<bean id="workflowFactory" class="com.opensymphony.workflow.spi.hibernate.SpringWorkflowFactory" init-method="init">
    <property name="resource"><value>workflow/workflows.xml</value></property>
    <property name="reload"><value>true</value></property>
  </bean>
该bean为osworkflow的factory。
<bean id="osworkflowConfiguration" class="com.opensymphony.workflow.config.SpringConfiguration">
    <property name="store"><ref local="workflowStore"/></property>
 <property name="factory"><ref local="workflowFactory"/></property>
  </bean>
该bean为osworkflow的configuration,configuration是osworkflow里面非常重要的组建。
<bean id="workflowTypeResolver" class="com.opensymphony.workflow.util.SpringTypeResolver">
  </bean>
<bean id="workflow" class="org.springframework.aop.framework.ProxyFactoryBean">
 <property name="singleton">
  <value>false</value>
 </property>
 <property name="proxyInterfaces">
  <value>com.opensymphony.workflow.Workflow</value>
 </property>
 <property name="interceptorNames">
  <list>
   <value>transactionInterceptor</value>
   <value>workflowTarget</value>
  </list>
 </property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource">
      <ref local="dataSource"/>
    </property>
  </bean>
  <!--定义事务管理的拦截器-->
  <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager">
      <ref local="transactionManager"/>
    </property>
    <property name="transactionAttributes">
      <props>
        <prop key="*Transaction">PROPAGATION_REQUIRED</prop>
      </props>
    </property>
  </bean>
<bean id="workflowTarget" class="com.opensymphony.workflow.basic.BasicWorkflow" singleton="false">
 <constructor-arg><value>test</value></constructor-arg>
 <property name="configuration"><ref local="osworkflowConfiguration"/></property>
 <property name="resolver"><ref local="workflowTypeResolver"/></property>
</bean>
其他的这几个bean只是几个非常简单的配置,只要用过spring框架及其aop代理的人应该都知道,在这里就不再介绍了。
其次,大家需要注意的就是osuser.xml和持久化的propertyset.xml一定要放在classes里面,而不能放在classes里面的子文件夹。
配置好了之后其他的都和官方自带的东西一样。不过在osworkflow2.8带的例子里面用户登录注册的user和group之间没有联系,所以不能直接应用。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值