目前,部门技术脚手架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,并移到历史表中。
分享到:
相关推荐
(3)im_workflow_prog_guide_v70
programming_windows_workflow_foundation 入门级
windows_workflow开发案例
Data_Science_With_R_Workflow.pdf
(1)im_workflow_spec_v70
JIRA_Workflow JIRA 使用手册 简单易用
JIRA_Workflow\Jira工作流制定 对工作流制定的详解
Data_Science_With_Python_Workflow
Data_Science_With_R_Workflow
这是一个关于工作流Windows Workflow Foundation 的一个实例
DWS_Interactive_Project_Workflow.pdf
apple_aperture_2_a_workflow_guide_for_digital_photographers
Data_Science_With_Python_Workflow.pdf
CRM_workflow 研究文档,供大家参考与学习.
TMS_Workflow_Studio_2.11.0.1_D2007-XE10.2_Downloadly.ir
Workflow and BPM 实践,本文详细的说明了jbpm工作流的概念,配置及工作流程和在开发的过程中应注意的问题
技術分享_Workflow_Installation1
alfred_shortener_workflow-源码.rar
main_workflow.sh
redmine_workflow_viz2 Redmine_workflow_viz2 是 redmine 的插件。 它与 redmine 版本 2.6.0.stable 兼容该插件为工作流配置提供了可视化。 改编自插件 redmine_workflow_viz 以与 Redmine 2.x 一起使用。 ========...