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工作流 osworkflow工作流 osworkflow工作流 osworkflow
OSWorkFlow demo 资料 OSWorkFlow demo 资料
OSWorkflow中文手册OSWorkflow中文手册OSWorkflow中文手册OSWorkflow中文手册 pdf 50页
通过osworkflow项目的学习和实践,总结出的一套osworkflow工作流引擎的学习笔记,供需要使用osworkflow系统的同学们借鉴,谢谢!
osworkflow会议室使用申请DEMO.rar
osworkflow中文入门指南,osworkflow+hibernate+spring集成配置,osworkflow-2.8.0.jar
OSWorkflow中文手册OSWorkflow-chinese-manual-2.8.pdf Packt.Publishing.OSWorkflow.A.Guide.for.Java.Developers.and.Architects.Aug.2007.pdf 工作流普及风暴—基础概念.doc 用osworkflow写一个请假例子.rar
OSWORKFlow流程开发教程
在编写企业应用的时候,时时会遇到有关事物状态的管理。开始的时候,我们习惯于使用硬编码来解决...而他在翻译之外,总结自己学习的经验和方法原创编写了《OSWorkflow开发指南》,更是毫无保留的奉献了自己多年的心得。
OSWorkflow 2.8 API 文档
osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程,osworkflow教程osworkflow教程osworkflow教程,osworkflow教程,osworkflow教程...
这是一个简单的osworkflow的web应用,比较适合初学或入门者,或想研究osworkflow的人,如果有任何问题,可以联系我.
OsWorkflow与CMS集成,将OsWorkflow安装到OpenCms,采用MySQL数据库
OSWorkflow中文手册.pdf OSWorkflow中文手册.pdf OSWorkflow中文手册.pdf
osworkflow2.8.rar 工作流引擎
spring+hibernate+osworkflow,服务器为Tomcat6.0,数据库为Mysql 把viewlivegraph2.jsp改为viewlivegraph.jsp. 其中把wf的获得修改为 ApplicationContext cxt = WebApplicationContextUtils.get...
osworkflow 中文文档,内容详尽。