服务模型是在对企业进行业务角色分析、业务流程分析、关键性能指标评价等一系列业务分析之后,抽取出来的可以为企业创造价值的不同层次的业务活动或功能,这些业务活动或功能可以作为一种可重用的资源——服务“存储”在企业服务仓库中。
服务模型有以下几种:
(1)、功能服务:可以单独提供具体业务功能的服务;
(2)、流程服务:用于编排到流程中的服务;
(3)、人工服务:人工实现的服务;
(4)、规则服务:用于表示业务规则的服务。
(5)、其他服务。
对服务模型的操作有三种:标识(identification)、描述(specification)、实现(implementation)。在这篇文档中,我们要涉及到对服务模型的标识(服务模型的分析)和描述(服务模型的设计)操作。
对服务模型的标识也称为“服务发现”,IBM 的SOMA(Service-Oriented Modeling and Architecture)的方法能够为服务发现提供强大的方法论支持。SOMA是IBM用于服务建模和架构设计的方法学,SOA IF是支持SOMA的工具,业务组件、一级业务流程和业务目标是服务建模的三种主要输入。下面我们来看一下SOMA是如何进行“服务发现”的:
第一步:从一级业务流程逐步分解为各个层次的服务候选者,如下图:
<v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1026" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 216.75pt"><v:imagedata src="file:///C:%5CDOCUME%7E1%5Crushboy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.emz" o:title=""></v:imagedata></v:shape>
其中,产品销售流程是一级流程,而其下面所有的子节点都是由这个以及流程逐层分解出来的。第一步的工作必须基于之前对企业业务流程的分析之上。
第二步:通过关键性能指标(KPI)分析来验证已有服务候选者以及发现遗漏的服务候选者,如下图:<o:p></o:p>
<v:shape id="_x0000_i1027" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 238.5pt"><v:imagedata src="file:///C:%5CDOCUME%7E1%5Crushboy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.emz" o:title=""></v:imagedata></v:shape><o:p></o:p>
这一步也可以叫做“目标服务建模(Goal Service Modeling)”。这一步的思想是这样的:从企业的业务目标出发,目标分解为子目标,子目标再分派给相关的服务来实现,这样,就形成了一颗“目标服务树”,处于叶子节点上的每个服务都能回溯到具体的业务目标。第一步的工作必须基于之前对企业关键性能指标的分析之上。
第三步:通过对已有系统的分析发现遗漏的服务候选者,并为服务实现提供依据,如下图:
<v:shape id="_x0000_i1025" type="#_x0000_t75" style="WIDTH: 414.75pt; HEIGHT: 257.25pt"><v:imagedata src="file:///C:%5CDOCUME%7E1%5Crushboy%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.emz" o:title=""></v:imagedata></v:shape>
这一步也可以叫做“遗留资产分析”,它的主要思想是:通过建立已有系统所具有的功能模块目录列表,我们可以方便的发现那些在不同的系统中被重复实现的功能模块以及我们可以复用的功能模块,从而将这些模块包装成服务发布出来。遗留资产分析的来源一般是原有系统的分析和设计文档。遗留系统分析的结果是可以重用的服务列表。
服务的描述是对发现及标识出来的服务的名称、服务的提供者、服务的消费者,服务所依赖的其他服务、服务的接口(输入参数以及输出参数)等服务属性做一个全面的描述。描述格式大致如下表:
服务名称<o:p></o:p> | 服务消费者<o:p></o:p> | 服务提供者<o:p></o:p> | 依赖的其他服务<o:p></o:p> | 输入参数<o:p></o:p> | 输出参数<o:p></o:p> | 服务描述<o:p></o:p> |
<o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> |
<o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> | <o:p> </o:p> |