对于我们的实际例子,我们最终建立如下的几个SCA模块:
1 购车贷款审批流程模块
这个模块完全是一个流程模块,它实现贷款的流程,调用其他的SCA服务或者Java服务组件来完成功能。其中包括一个子流程:信用评估流程模块。
2 信用评估流程模块
将信用评估子流程独立出来是希望将来灵活的变化或者根据地区进行定制的时候使得影响面尽量的小。
3 中介模块
我们抽象出一个中介模块,暴露出后台系统的服务接口,对于不同的客户请求,可能需要路由到不同的后台系统进行不同形式的业务操作,该模块实现了一个中介组件。因为后台系统基于CICS,我们使用MQ CICS Adapter实现调用的服务组件。
4 贷款系统包装
对于无法直接集成的现有系统,需要单独实现SCA模块,这样便于测试,模拟,也便于集成时隔离和发现问题,同样有利于后台系统地方变更和迁移。视功能情况的分配可能需要分配多个这样的模块。因此我们有一个对贷款系统的包装模块和一个外部保险担保系统的包装模块。
5 保险担保系统包装
保险担保系统包装模块主要实现了对保险担保系统的包装,提供了担保信息查询的服务。
6 汽车价格查询模块
汽车价格查询模块是一个新建服务模块。新建服务的模块主要是针对我们服务建模的时候新发现的服务而言的。对于新的汽车报价查询模块,银行希望自己实现一个简单的数据库查询系统,从某服务提供商处获取数据,每周更新一次。
通过对模块组成和服务调用的分析,我们可以清晰了解到从服务的角度看,系统将要实现的物理结构。此时,关于各个模块的接口,实现方式,逻辑功能,以及一些规约等都要归档,作为下一步开发的基础。
根据以上的分析,我们会得出表7,将服务映射到SCA模块中实现。
表7:服务与模块映射关系。

该结果将作为进一步分析的依据,成为服务集成模型的重要元素。