流程设计的过程中,应当考虑流程的复用性,因此,流程设计应该符合松耦合、高内聚、业务导向以及适应变化。
因此应当借鉴SOA的理念,在流程设计的时候,就考虑到流程的聚合,在流程中,通过打包一些活动的方式,构建可以复用,方便重新组装的流程模块。
那么,活动应该怎样打包呢?
首先,这组被打包的活动,应该是互相联系比较紧密的,而打包后的模块之间联系不甚紧密。
其次,降低因流程对资源的依赖而产生的不确定性,在打包后,集中在少数的业务服务中,这样当资源发生变化时,不会影响太多的服务正常提供服务,流程就能够更加高效的应对变化。
方丁等介绍了一种基于QFD的建模方式,定义流程的竞争要素和活动依赖关系,提出一种“竞争-活动-依赖结构”(Competition Activity-dependency Structure,CAS)矩阵,描述流程的竞争要素和流程活动间的依赖关系,并在CAS矩阵的基础上,采用基于聚类的方法来设计流程服务模块。[3]
设计方式如下:
先将流程的每个活动都定义为一个独立的流程模块。
1、计算流程的初始内部依赖度
2、随机选择一个活动计算该活动与每个流程模块之间的依赖性
3、将此活动临时加入与之依赖性最高的流程模块,对比模块化后的整体流程内部依赖性和初始流程内部依赖性,4、如果更低,则将此活动正式加入流程模块,否则重复上一步
5、重复第二步,如果流程模块设置发生变化,则删除重复的模块、空模块,以及被包含的模块,
6、重复多次后,如果整体内部依赖性保持不变,则系统稳定,得到分模块的结果。
但是可能存在几个问题。
首先,资源依赖并不是绝对的,尤其是和人相关的依赖,因为很多的工作,都是可以换个人、换个部门去做的。
当然,任务的依赖关系也不是不可以调,比如说有前后关系的串联任务,有时候也可以通过并行赶工的方式加快进度,这时候流程依赖关系就从前后依赖变成了互相依赖了。
但是即便存在以上这些问题,这种模块化思路仍具有合理性,可以沿着这一思路继续细化。
当信息系统走向SOA的时候,流程设计可能也要SOA化。

原 文 
评 论