OSWorkflow比起JBPM是比较低级的工作流,很多功能需要开发,但是非常灵活,对比较简单的流程,如商业银行绩效考核中的帐户归属流程、定性考核流程是比较适合的。
在使用过程中,项目组发现了一些问题,现总结如下,请大家讨论。
1、集成到spring中的事务问题
OS_Workflow中没有直接集成IBatis的数据操作类,因此需要自己写一个数据操作类,可采用同一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,并移到历史表中。
分享到:
相关推荐
标题“osworkflow成功案例后的总结和升级方案”表明了这篇内容是关于osworkflow在实际项目中的应用经验分享,以及对于未来系统升级或优化的规划。osWorkflow是一个开源的工作流引擎,用于管理应用程序中的业务流程。...
《OSWorkflow:Java开发人员和架构师集成开源业务流程管理指南》是一本全面而实用的参考书,它不仅介绍了OSWorkflow的基本原理和使用方法,还深入探讨了如何将其应用于复杂的业务场景之中。无论您是初学者还是经验...
通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!
- **结语**:总结了 OSWorkflow 的设计理念和发展方向,并提到未来可能会提供的 GUI 工具以帮助开发者更方便地编辑流程。 通过上述内容可以看出,**OSWorkflow** 是一个功能强大但相对复杂的工作流管理工具,适合...
osWorkflow 是由 James Helzer 开发的,其设计目标是为 Java 应用程序提供一个轻量级、易于使用的流程管理框架。osWorkflow 支持动态流程更改、事件驱动的流程控制以及多种持久化机制,如 JNDI、XML 文件和数据库...
总结,OSWorkflow 是一款强大的工作流管理工具,它为开发者提供了构建复杂业务流程的手段。通过理解其核心概念、配置流程、管理任务以及利用 API 进行交互,开发者可以构建出满足各种需求的工作流应用。在实际项目中...
总结一下,Osworkflow2.8 工作流是一个强大而灵活的工具,它简化了业务流程的管理,让开发者可以专注于业务逻辑,而不是流程的细节。通过学习这个入门级的例子,你可以掌握如何定义流程、启动流程实例、处理任务,...
总结,osWorkflow2.8在Spring+Hibernate环境中的整合涉及多个层面,包括配置Spring Bean、使用Hibernate进行持久化、设计服务层接口、监听工作流事件以及测试和优化。理解并掌握这些知识点,对于开发出高效、可靠且...
总结来说,这个例子提供了一个完整的解决方案,展示如何在Tomcat 6环境中使用OSWorkflow,并将工作流状态持久化到MySQL数据库。开发者可以以此为基础,根据实际需求调整和扩展工作流定义,从而实现更复杂的企业级...
1. **易于集成**:OSWorkflow设计之初就考虑到了与现有系统的兼容性问题,能够方便地与Spring、Hibernate等框架结合使用。 2. **灵活性高**:用户可以根据需要自定义工作流的状态转换逻辑、动作和条件判断。 3. **轻...
总结,OsWorkFlow作为一个强大的工作流引擎,提供了丰富的功能来帮助我们绘制和管理流程图。通过对源码的学习,我们可以深入了解其内部机制,更好地适应和满足各种业务场景的需求。无论是初学者还是经验丰富的开发者...
总结来说,"LIFERAY + JAVA WEB START + OSWORKFLOW设计器"是一个将Liferay门户、Java Web Start技术和OSWorkflow工作流引擎相结合的创新实践,旨在提供一个集成的工作流设计和管理解决方案,提高企业内部的协作效率...
总结一下,OSWorkflow 是一个强大的工作流管理工具,可以配合 MySQL 实现高效的数据持久化。然而,这个特定的示例由于存在未知问题,可能不适用于学习或开发。为了正确理解和使用 OSWorkflow,建议寻找官方文档或无...
#### 五、总结 OSWorkflow作为一款高级的工作流引擎,不仅提供了强大的灵活性和可定制性,还通过其丰富的功能集和API,使得开发者能够在各种复杂的业务场景中构建和管理高效、智能的工作流程。尽管入门门槛相对较高...
**osworkflow请假系统** ...总结来说,osworkflow请假系统是一个综合的学习资源,涵盖了工作流引擎的使用、数据库设计、Web应用部署等多个IT领域的关键知识点,对于想深入理解工作流管理及其实现的开发者极具价值。
在OSWorkflow中,我们可以使用条件分支(Conditional Branches)和会签(Parallel Joins)来实现动态会签。 1. **条件分支**:条件分支允许我们在满足特定条件时,跳转到不同的流程步骤。开发者可以通过自定义条件...
总结起来,这个压缩包包含的内容涵盖了 OSWorkflow 的基本配置、工作流定义、数据库集成以及实际应用场景的演示,对于想要深入理解和使用 OSWorkflow 的开发者来说,是非常有价值的参考资料。通过学习和实践,你可以...
在 OSWorkflow 中,我们可以使用图形工具来设计工作流流程图,通常采用 PNG 图片格式保存。PNG 图片应包含各个状态(活动)和它们之间的转移(过渡)。状态通常用圆角矩形表示,而转移则通过带有箭头的线段连接。每...
#### 总结 通过本文档的学习,我们可以了解到OSWorkFlow作为一款强大且灵活的工作流管理系统,在实际开发中具有广泛的应用价值。无论是在企业内部流程管理还是在更复杂的业务场景中,OSWorkFlow都能够提供有效的...