zyskm用梦想丈量人生,用奔跑丈量激情

工作流的价值

之前做过一版工作流引擎,自己开发的。这段时间又以jbpm为内核做了一版流程系统,有些思考就记录下来。
有一句话说的好,如果你手里有一把锤子你就看什么都像钉子。做流程系统的时候也遇到这类现象,因为对流程系统的不熟悉,在开发过程中就想到处都用工作流来处理问题。
其实引入一个新的东西,一定要先搞明白的它的适用场景,有什么价值。把握了这点后结合具体场景,就能很好的使用,而不会乱用。
一、工作流适用场景
以下两种情况需要引入流程系统
1.分散系统整合(企业应用集成)
2.简化业务系统的开发;
工作流的价值
1.业务流程独立化;
2.优化改进流程更容易;
3.提供统一的监控页面。
Ⅰ 、相对于分散系统,提供了统一的操作和监控页面。对用户更友好,过程可监控,业务规则更明确。
1.业务流程独立化,业务规则不仅仅存在与工作人员的头脑中。
2.提供了统一的监控界面,实现业务过程可监控;
3.有明确的规则,可以监控运行情况,为流程的优化提供了便利;
4.对用户更友好;
Ⅱ 、相对于传统业务系统方式
1.业务流程独立化,业务规则不会淹没于业务系统代码中。避免业务系统开发完成后再次改动成本高的情况。
2.提供了统一的监控界面,实现业务过程可监控;原业务系统提供的报表对环节执行时间可能信息不足,一般只是简单反应状态变化。
3.有明确的规则,可以监控运行情况,为流程的优化提供了便利;
4.对于工作人员来讲,这些改进其实是透明的,从用户体验的角度没有什么变化。
 所以对原业务系统的用户来讲,变化不大。引入流程系统更多的是为了监控和优化流程的方便,是从管理的角度考虑问题。
从流程系统提供的待办事项列表进行操作,还是从业务系统的功能菜单进行操作,哪个更友好是UE设计的问题,跟流程系统无关。
业务系统功能菜单的划分可能相对于待办事项列表更直观、定位更准确。(见下图红色箭头对两种方式的表示)
考虑到业务流程的复杂性,对于企业信息化系统引入流程系统可以便于优化流程,对于成熟的业务系统如财务软件引入流程系统完全没有必要。
 
补充说明:
1.当前任务列表方式,需要用户不停的查看有没有新任务到来;优点是在一个页面可以看到全部待办事项。
2.业务系统功能菜单方式,需要用户不停的查询工作进展并作出处理。优点是任务类型划分更明确;
二、业务系统接入方式
1.在jsp页面增加环节信息(环节编号,流程编号...);
2.业务系统aciton不变;
3.在业务系统action完成操作后,流程拦截器处理流程变化并记录到数据库;
4.流程监控页面和待办事项列表,不断从流程数据库查询。
5.对于专业性比价强的的状态值还是在业务系统维护,避免流程系统压力过大。在需要监控改进的业务点交由流程系统调度,其它部分还是由业务系统处理。


--------------------------------------
下边是对struts项目接入流程系统的一个分析
1.业务系统jsp,action调用关系

2.采用拦截器在业务系统action执行完成后,进行流程驱动,并在下一个jsp页面注入流程信息。


主要逻辑都在beforeResult()方法中。
3.数据结构

数据结构说明:
1.对于通用的流程数据可以在beforeResult()方法自动嵌入,为考虑交互效果在jsp自行设置流程信息;
2.jsp页面流程数据应该包括:
1.nodeName
节点名称,环节在流程定义中的名称;
2.transitionNames
流向名称列表,需要作出选择的列表。
3.entityId
实体id,用于查询流程实例ID。
3.在action执行完成后驱动流程所需要的数据:
1.definitionId
流程定义,说明是新启动一个流程。
2.nodeName
节点名称,根据流程实例ID和节点名称查询任务ID,每个节点只能是单任务的,否则jsp页面无法提供taskId.
3.transitionName
流向名称,根据流向选择流程下一步跳转的节点。串行节点不用transitionName 可为空。
4.entityId
实体id,查询流程实例ID用。
4.对与工作流无关的action实行过滤,不做处理
两种过滤方式:
1.在action方法加注解;
2.在数据结构中增加数据项标记。
5.对与工作流无关的jsp页面,不使用工作流tag即可。
 
-----------------------------
上边是我一开始的想法,后来和同事讨论后又做了些调整。编辑web文字比较麻烦,就不合在一起了。
1.对执行业务操作的action和进入jsp页面的初始化action进行分类;

2.参数传递过程补充说明

一个分为三步
倒着说
第三步,功能页面jsp在提交参数时需附加(节点名称、流向名称、工单编号),流程引擎才能驱动流程;
第二步,要能够向第三步提供数据,jsp页面必须包含(节点名称、流向名称列表、工单编号),这些数据有两个来源:1.收到在jsp页面写入;2.从第一步接收。
第一步,有同事建议,提供节点和资源路径的关系表,通过资源路径查找节点名称。减少流程系统对业务系统的侵入。
 
 ----------------------------------
上传的时候图片丢了,重新补一下。
 

posted on 2012-06-19 16:01 zyskm 阅读(1198) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: