`

OS_Workflow集成Spring问题

阅读更多

目前,部门技术脚手架prophet集成了OSWorkflow的工作流开源框架,OSWorkflow比起JBPM是比较低级的工作流,很多功能需要开发,

 

但是非常灵活,对于我们部门的比较简单的流程,如绩效考核中的帐户归属流程、定性考核流程是比较适合的。

 

    在使用过程中,项目组发现了一些问题,现总结如下,请大家讨论。

 

 

1、集成到spring中的事务问题

 

OS_Workflow中的没有直接集成IBatis的数据操作类,因此需要自己写一个数据操作类,prophet采用同一datasource的JDBCTemplate,确保

 

与为同一事务,Spring声明式事务采用AOP,默认动态代理的方法抛出Unchecked Exception或者Error才进行回滚, 如果方法中抛出异常中的

 

为检查异常,默认将不再回滚,当然也可以进行配置回滚的CheckedException (详见spring 参考手册 回滚)

 

例如:

<tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
         <tx:method name="get*" read-only="false" />
         <tx:method name="*" rollback-for="WorkflowException"/>
  </tx:attributes>
</tx:advice>
由于Osworkflow中抛出的异常WorkflowException为CheckedException 即检查异常,所以默认不会回滚,因此可按照上述配置advice。


2、HISTORYSTEP历史记录中的流程状态配置问题
配置文件中result的 属性status 分别插入OS_CURRENTSTEP中,old-status 会插入OS_HISTORYSTEP中,但是由于流程的转向当前流程的状态不一定是唯一的,
如oldstatus不一定是为"待评分",也可能为"被打回",所以插入到历史表中的status需要动态从OS_CURRENTSTEP中取,才能保证历史表中的status是正确的。
 <results>
      <unconditional-result id="19" old-status="待评分" status="待审核" step="3" />
  </results>
重新配置:
<results>
      <unconditional-result id="19" old-status="${oldStatus}" status="待审核" step="3" />
  </results>


3、工作流程的转发并发性
由于流程的操作即doaction可能并发,因此,每当进行流程转发doAction,需要进行判断,流程的所属人owner是否仍为当前的操作人,流程是否已经转到其他人。
即OS_CURRENTSTEP中的owner是否为操作人。
getCurrentStep得到SimpleStep得到owner进行判断。


4、流程的状态
OS_WFENTRY中工作流的状态有 KILLED、SUSPENDED、ACTIVATED、COMPLETED、CREATED,当完成后会自动为COMPLETED,并清除OS_CURRENTSTEP,当前step
move到OS_CURRENTSTEP,
因此,当流程结束需要设置action 的属性finish=“true”,保证清空当前OS_CURRENTSTEP,并移到历史表中。
 

1
0
分享到:
评论

相关推荐

    OSWorkflow开发指南

    - `org.opensymphony.workflow.spring`: 与Spring框架集成相关的类和配置。 #### OSWorkflow数据库的描述 为了存储工作流实例的状态信息,OSWorkflow使用了一系列数据库表。这些表的设计旨在满足不同应用场景下的...

    《OSWorkflow开发指南》电子版

    1. **易于集成**:OSWorkflow设计之初就考虑到了与现有系统的兼容性问题,能够方便地与Spring、Hibernate等框架结合使用。 2. **灵活性高**:用户可以根据需要自定义工作流的状态转换逻辑、动作和条件判断。 3. **轻...

    osworkflow文档

    OSWorkflow能够无缝集成到多种框架中,如Spring和Hibernate,这极大地扩展了其在企业级应用中的适用范围。Spring通过其支持为OSWorkflow提供了依赖注入和事务管理的能力,而Hibernate则提供了持久化服务,使得工作流...

    osworkflow 开发指南

    - **OSWorkflow可选包**:用于增强特定功能的扩展包,如与Spring或Hibernate集成的包。 - **与Spring和Hibernate的集成**: - **与Spring联用所需包**:提供Spring容器管理OSWorkflow所需的配置文件和依赖包。 - ...

    web-flash-eclipse安装

    web-flash-eclipse安装的知识点涵盖了Spring Boot与Vue.js结合的开发环境搭建,以及如何在eclipse集成开发环境中安装相关的开发组件。首先,需要了解Spring Boot和Vue.js的简要介绍:Spring Boot作为Java平台的开源...

    OSWorkflow中文手册.pdf

    - 集成了Spring框架,利用其强大的依赖注入功能,简化了工作流组件的管理和配置。 ### 理解OSWorkflow #### 3.1 工作流程描述 - 解释了如何通过XML文件描述工作流程,包括节点、分支、动作等元素。 #### 3.2 ...

    SAP PA PLM220

    - IBM®、DB2®、OS/2®、DB2/6000®、Parallel Sysplex®、MVS/ESA®、RS/6000®、AIX®、S/390®、AS/400®、OS/390® 和 OS/400® 为 IBM Corporation 的注册商标。 - ORACLE® 为 Oracle Corporation 的注册商标...

    工作流引擎-选型 (各工作流对比)

    Camunda不仅能够与多种工作流技术兼容,还支持与其他多种工作流引擎进行集成,包括但不限于: - Active BPEL - Alfresco Activiti - Appian BPM - Bonitasoft - JBoss jBPM - IBM WPS / IBM BPM / IBM MQ Workflow /...

    OpenAccountsAutomation:OAWF自动化凭证

    OAWF,全称为Open Accounts Workflow Framework,是该项目的核心组件,它为财务流程提供了一种高效、可扩展的工作流管理解决方案。 在Java编程环境中,OpenAccountsAutomation利用了Java的强大功能和丰富的库来构建...

    Opencmw的Java

    OpenCMW(Open Configuration Management Workflow)是一个开源的配置管理与工作流平台,主要用于软件开发过程中的版本控制、配置管理和协作。它利用Java技术构建,因此对于理解OpenCMW的Java实现至关重要。Java作为...

Global site tag (gtag.js) - Google Analytics