bobmazelin的流程管理系统介绍和概念性设计(二)
最近一年多的时间我都在流程管理系统领域工作,虽然现在该项目处于停滞状态,但我仍然对流程管理领域充满希望.这一系列的随笔由bobmazelin和他的同事这段时间工作的经验积累而成,同时也是我们流程管理系统的介绍,如果有志同道合者随意发表自己的想法,同时我们也需要新的活力来再次使项目推进.
从这篇开始我会首先介绍流程资源的设计, 这篇主要介绍资源的基本概念以及资源在流程生命周期设计阶段需要完成的工作.
资源描述了流程中使用的数据, 它是数据库表结构的业务表现.我还是用一个实例来说明, 我们来看一个简单的场景:订单.
上图是设计器的一张截图(不是VS).在流程生命周期中,认识和设计阶段都是通过设计器来完成的.我们为资源提供了资源图,大家在右边的solutiion视图中看到我建立了两个资源图,我只贴了OrderResources,其中UserResources比较简单只建立了Customer资源;OrderResources(见图)建立了Order,OrderItem,Product3个核心资源类型以及一个Customer引用资源类型(橘红色).
在资源图中你可以建立两大类型的资源: 核心资源以及引用资源.
核心资源描述了当前中的资源实体, 比如上图中的订单资源,它处于订单资源图中,并描述了订单本身的结构.你可以为核心资源添加资源属性同时设置名称,类型等.订单资源我添加了下订单的时间和总价,系统自动添加一个Id作为资源系统标识符(类似主键).
引用资源描述了其他图中的资源实体,比如上图中的客户资源,实际上客户资源处于客户资源图中,而在订单资源图需要和客户资源图建立关系(关系下面会介绍),由此需要通过引用资源来联系不同的资源图.注:引用资源引用的资源类型不限制在当前solution下.引用资源不需要添加资源属性,同时在单部署(这个概念在部署阶段我会详细描述)方式下被系统忽略.
在资源图中你可以在两个资源之间建立包含关系.这里的包含关系比UML类之间的包含关系要来的广泛一点, 比如:订单资源包含了订单项资源,而订单项资源由产品资源来进一步解释(这里的解释关系也归入包含的一种),订单资源属于某个用户资源(属于关系也被视为包含的一种).你可以为包含关系设置是否反转(Reverse)属性,这个属性主要是指明了资源关系的导航方向是否反转.比如:订单项资源和产品资源之间的包含关系就应该被设计为反转,主要是由于从订单项导航到产品的使用场景要比反之的导航多,设置反转可以增加导航的效率.
资源的概念就这么多,也比较简单容易理解.下面我主要介绍一下设计资源的基本原则:
1. 从业务中提取资源,使资源充分体现业务含义;
2. 仔细推敲资源关系的业务意义并谨慎设置反转,正确使用反转可以提高资源导航的效率(反转是双刃剑);
3. 为不同种类的资源建立不同的资源图,切忌包含在一个资源图中;
4. 尽量避免一个流程一个资源图,应该从业务全局考虑资源的设计,增加资源在不同流程中的复用可以有效的发现流程复用性.
这次就说这么多,下次我会介绍资源的部署,版本控制以及再设计.最后,还是请大家多提意见,不恰之处还请包涵.