目前,部门技术脚手架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,并移到历史表中。
分享到:
相关推荐
在本项目"workflow_springbootworkflow_workflowdemo_workflowspringBoot_work"中,开发者采用Spring Boot框架集成Activiti工作流引擎,构建了一个工作流的示例应用。接下来,我们将深入探讨这个项目的相关知识点。 ...
标签中涉及的"wwf工作流"、"foundation workflow"、"workflow foundation"以及"workflow_javascri",进一步强调了主题与WWF的关联,并暗示可能涉及到JavaScript的交互,因为JavaScript经常用于前端与后端服务(如...
`shub_workflow`库是用于简化持续集成和部署流程的工具,特别适用于使用`Shub`(Selenium Hub)的项目。Selenium Hub是Selenium WebDriver的一部分,它作为一个中心服务器,可以管理多个WebDriver实例,允许并行测试...
6. **灵活性与扩展性**:由于其模块化设计,`pyams_workflow` 容易与其他Python库集成,如ORM框架(如SQLAlchemy)、Web框架(如Django或Flask),以及权限管理库等。 **安装与使用** 要使用`pyams_workflow`,...
**jbpm3.rar_bpm_bpm jbpm_jbpm3_workflow_workflow process bpm** **jbpm3** 是一个基于Java的企业级工作流引擎,是**BPM(Business Process Management)**领域的重要工具。它允许开发者设计、执行和管理业务流程...
Python库`git_workflow`可能提供了诸如自动化提交消息格式化、分支管理、合并策略、代码审查集成等功能,以提高开发流程的效率和一致性。 标签"git Python库"表明这个软件包是用Python语言编写,并且专注于Git工作...
**Python库 django_workflow_fsm**是针对Django框架的一个强大工具,专为实现工作流管理而设计。这个库的版本为3.1.1,适用于Python 2和Python 3环境,其whl文件名为"django_workflow_fsm-3.1.1-py2.py3-none-any....
【标题】"js.rar" 是一个包含JavaScript代码的压缩文件,特别关注的是 "ccorrect_btn.js" 和 "js_workflow" 这两个部分。"ccorrect_btn.js" 可能是一个用于实现特定功能(如修正按钮)的JavaScript脚本,而 "js_...
**XiorkFlow-workflow.rar** 是一个包含JavaScript工作流实现的压缩包,主要关注的是**js_workflow**,也就是使用JavaScript来构建工作流管理系统。工作流(Workflow)在信息技术领域指的是自动化处理任务、审批流程...
"ide"可能是指集成开发环境(Integrated Development Environment),暗示jupyter_workflow可能是一个与Jupyter集成的工具或扩展。"python"表示这是与Python语言相关的资源。"Python库"意味着jupyter_workflow可能是...
main_workflow.sh
Alfred是一款强大的Mac OS X效率工具,它允许用户通过快捷键、热键、关键字等方式来执行各种操作,包括搜索本地文件、控制音乐播放、执行系统命令等。而Workflow则是Alfred的扩展功能,让用户可以自定义一系列复杂的...
结合"spring"这个标签,我们可以理解这是关于如何在Spring框架中集成和实现工作流管理的示例项目。Spring是一个广泛使用的Java企业级应用开发框架,它提供了丰富的功能来简化应用程序的构建和管理。 首先,让我们...
将Workflow集成到CRM系统中,可以提升企业的运营效率和客户满意度。 CRM Workflow的研究主要涉及以下几个核心知识点: 1. **工作流设计**:CRM Workflow的设计通常基于业务流程,如销售机会管理、客户服务请求或...
redmine_workflow_viz2 Redmine_workflow_viz2 是 redmine 的插件。 它与 redmine 版本 2.6.0.stable 兼容该插件为工作流配置提供了可视化。 改编自插件 redmine_workflow_viz 以与 Redmine 2.x 一起使用。 ========...
"Data_Science_With_Python_Workflow.zip"这个压缩包文件很可能是关于如何使用Python进行数据科学工作流程的教程或指南,它可能涵盖了数据获取、预处理、建模、可视化和部署等关键步骤。 首先,数据获取是数据科学...
标题和描述均提到了"im_workflow_prog_guide_v70",这显然指的是Intra-mart Web Platform App Framework Version 7.0的《工作流编程指南》。这份文档提供了详细的指导和示例,帮助开发者理解并实施工作流程在Intra-...
"Data_Science_With_Python_Workflow.pdf"这份文档显然是关于如何使用Python进行数据科学工作流程的指导,它涵盖了从数据输入到输出、数据处理、可视化、建模以及沟通结果的整个过程。 首先,数据输入(Data I/O)...
bossa引擎是一款开源的轻量级的工作流引擎,他是基于petri net的,不需要后台数据库系统的支持,他通过叫prevaler的系统来维护自身的持久化,所谓prevaler系统是基于sun的Serializable接口的。
6. **集成能力**:它可以轻松地与其他系统集成,如Java应用服务器、数据库、Web服务等,实现企业级的工作流解决方案。 开发者使用OpenWFE时,可以从以下几个方面受益: - **敏捷开发**:OpenWFE支持快速迭代和适应...