在本系列文章中我们将介绍WSCTI项目实现的电信业务场景,数据模型和业务流程,如何实现应用系统的集成和业务流程的整合。本文首先介绍WSCTI项目的业务场景,用例以及系统架构。
本系列文章将基于WSCTI(WPS Scenarios for China
Telecom Industry)项目的经验。WSCTI项目使用WebSphere Integration
Developer V6(WID V6)和WebSphere Process Server V6(WPS
V6) 实现电信行业的典型业务场景,集成了多个异构的业务系统,提供了一系列完整的端到端的业务流程,展现了WID和WPS进行应用集成(Application
Integration)和流程整合(Process Integration)的功能和特性。
在电信行业,业务支撑系统如何实现应用集成和业务流程整合一直是电信运营商们关注的焦点。为了适应竞争日益激烈和客户需求快速变化的环境,电信行业需要能够灵活快速的调整业务模型和业务流程,需要将分布在多个业务系统中的数据资源和业务流程整合起来。
WebSphere Process Server是新一代的业务集成平台,它基于面向服务的体系架构(SOA),支持J2EE规范和开放的标准,提供了统一的服务调用模型和统一的数据表现模型。WPS不仅支持传统的对企业应用的集成,还支持自动化的业务流程以及人参与的工作流,并提供对业务流程的管理。WebSphere
Integration Developer是基于Rational Application Developer的开发环境,使用它可以可视化的快速的开发WPS应用和模块,主要面向的是集成开发人员。
在本系列文章中我们将介绍WSCTI项目实现的电信业务场景,数据模型和业务流程,如何实现应用系统的集成和业务流程的整合。本文首先介绍WSCTI项目的业务场景,用例以及系统架构。
基于对国内电信运营业务流程的调研,电信运营的核心业务流程包括客户管理,计费和帐务管理等流程,而大部分的业务都是围绕客户开通电信服务。一个典型的例子如下:
1. 电信运营商推出一个电话和ADSL服务套餐优惠的产品;
2. 客户在电信营业厅提交了开通此套餐的订单;
3. 操作员在网页上输入订单,确认电信资源可用;
4. 由客户进行选号等资源预占;
5. 客户确认订单,操作员提交订单;
6. 电信运营商为客户进行施工,先后开通电话和ADSL业务;
7. 电信运营商为此客户实占所用资源,开始计费,并电话通知客户;
8. 客户使用服务,按周期缴费,并查询账单;
9. 如果客户没有按期缴费,电信运营商停止其服务,直到其缴费完成后重新启用服务。
为了实现这样端到端的完整的业务场景,WSCTI中包含的业务流程主要包括:
1. 业务发布:创建新的电信产品,将其发布到各个业务系统中。
2. 订单处理:提交客户订单,开通订单中包含的一个或多个服务,开通成功后增加计费信息并通知客户;在订单完成之前可以查询订单状态,修改订单内容或者取消订单。
3. 计费管理:查询客户某月账单;查询客户欠费信息;客户如果欠费达一段时间后自动停止其业务服务;缴费等。
为了提供场景中的业务功能,并展示WPS灵活和强大的应用集成的能力,WSCTI中集成了多个电信业务系统,我们使用了与许多实际系统相同的技术类型开发的原型系统进行功能模拟,包括:
- 计费系统(Billing System),它管理客户的计费信息,对服务计费,产生账单以及欠费信息。它的实现是基于WebSphere
MQ的消息通信方式的Java应用系统。
- 客户关系管理系统(Customer Relationship Management,
CRM),管理客户基本信息和订单信息。它的实现是EJB应用系统,提供了Web Services接口;
- 业务开通系统(Service Provisioning System),它完成服务开通,工单管理的功能,类似于国内普遍运行的97系统的部分功能。它的实现是一个数据库(Database)应用系统,实际使用了IBM
DB2。
- 资源管理系统(Resource Provisioning System),它管理电信系统资源。它是一个基于Microsoft
.NET技术的应用系统,提供了Web Services接口。
另外,WSCTI提供了Web界面的用户接口,它面向电信业务的操作员和管理员。
下面列出部分上面的业务场景会包含的用例(Use Case):
C1. 产品发布
C2. 提交订单
C3. 处理订单
C4. 取消订单
C5. 修改订单
C6. 查询订单状态
C7. 查询客户账单
C8. 查询客户欠费
C9. 欠费停机
C10. 缴费
这里给出处理订单这个典型用例的详细信息:
用例:C3处理订单
参与者:CRM,服务开通系统,计费系统,资源管理系统,操作员前提条件:操作员通过Web客户端提交客户订单,订单中包含一个或者多个业务开通请求,多个业务开通之间可能存在依赖关系,比如ADSL开通要求电话先安装完成。订单所需资源已预占。
基本成功流程:
1. CRM存储订单。
2. 确认是否订单中所有工单都已完成,如果是,跳到第6步;否则,继续。
3. 在订单中的未开始工单中找出未被依赖的工单,比如在ADSL和电话中首先安装电话,交由业务开通系统实施此工单。
4. 业务开通系统首先实施和配置业务,然后进行端到端的测试,然后激活此服务。
开通实施过程的状态变化会更新到CRM,方便客户查询。
5. 业务开通完成后,跳到第2步重新确认是否所有工单都已完成。
6. 所有工单都已完成后,在资料管理系统中实占所有已预占的资源,在计费系统中增加计费项目。订单已完成,在CRM中更新订单状态。
7. 告知操作员客户订单已完成,服务已开通,由操作员向客户通知。
在用例部分可以看到,用例中包含了复杂的业务流程控制以及多个业务系统之间的交互。如果各个系统之间直接进行交互,系统之间必须互相了解接口和数据结构,为了实现这种类型的需求,其复杂度为N*(N-1),随着业务系统的增加呈指数增长。在SOA架构下,为了降低集成业务系统的复杂性,我们通常会引入企业服务总线(Enterprise
Service Bus,ESB)平台,所有的系统接入到这个平台,集成的复杂度降为N,每个应用都成为服务提供者或者服务使用者;另外,ESB平台提供了服务定位,消息路由,数据变换等基本功能;在ESB平台上通常还会提供流程编排(Process
Orchestration),质量保证(QoS)等服务。图1展示了企业应用架构在SOA架构下的演变。
图1 应用集成的演变
WPS V6支持面向服务的应用架构(SCA)和企业服务总线(ESB),含有符合业界标准的业务流程引擎,使用统一的服务调用方式和业务数据表现模型。在WSCTI项目中,我们使用WPS作为应用集成的平台,来集成所有的业务系统,提供业务流程的控制。图2展示了WSCTI项目的系统架构。
图2 WSCTI系统架构
通过下面几点了解这个架构:
1. 在WPS中实现了数据模型以及业务流程的整合。使用业务对象(Business
Objects, BO)实现业务数据的建模,分GBO(General BO)和ASBO(Application-Specific
BO)两种类型,分别用于表示业务数据的抽象和与具体应用相关的数据;使用业务流程(Business Processes),业务状态机(Business
State Machines)组件定义业务流程;使用业务规则(Business Rules)组件灵活定义业务规则;使用人工任务(Human
Tasks)组件将人的参与引入业务流程。
2. Web客户端是JSP/Servlet实现的应用程序,WPS向Web客户端提供服务接口,Web客户端通过SCA(Service
Component Architecture) API向WPS调用服务发起大部分的业务流程(比如提交订单,查询账单等),并在Web界面上展示数据。人工任务也将由Web客户端从WPS中查询获得并展现。
3. WPS通过Web Services调用CRM和资源管理系统提供的服务,Web
Services屏蔽了业务系统实现方式的差异,用与平台无关的XML格式描述数据和操作,实现跨系统的交互。
4. WPS通过WebSphere MQ Adapter与计费系统进行通信,WPS会调用计费系统提供的服务,计费系统也会调用WPS提供的服务,比如欠费停机。
5. WPS通过WebSphere JDBC Adapter V6与数据库系统交互,采用标准的Java
Connector Architecture方式。WPS可以对数据库进行CRUD等操作,也可以侦听数据库的改变,发起对WPS内部的服务调用。
从系统架构中可以看到,WPS提供了多种方式灵活的集成企业的应用系统。这些异构的系统,一旦集成到WPS平台上,就成为一个个接口良好定义的服务,我们可以在WPS这个平台上使用这些服务,进行业务流程的编排和业务逻辑的定义。
使用WID进行WPS集成应用的开发,基本有两种方式:自顶而下和自下而上。如图3所示:
图3 WID开发流程
两种方式的采用取决于此模块(Module)是否引入已有的遗留系统。对于已有的系统,我们通常需要遵循已有系统提供的接口和数据结构,可以通过分析和使用WID的企业服务发现(Enterprise
Service Discovery)等功能为其创建组件,并使用映射将其接口与其它接口进行转换。
在复杂的集成应用项目的开发中,这两种开发方式都会被使用到。应用中通常包含多个逻辑上划分的子系统,一个子系统可以对应一个模块。每个模块向外提供了一到多个接口,模块之间以接口作为契约,通过Import和Export组件进行SCA方式的交互。所有对外的接口和其使用的业务对象都应该被放到共享库(Library)中,这样多个模块只要都依赖于这个库就能够保证接口的一致性。
设计每个模块的时候,首先定义对外的接口和数据对象,然后为集成的遗留系统生成接口,然后通过映射将二者进行连接和转换。为了能够复用映射,常常会从一个接口到另外一个接口出现多次映射的情况。如图4,实现的是一个从CRM系统提供的接口到对用户提供的接口的映射过程。
图4 对外接口与遗留系统接口之间的映射
为了实现业务流程的控制,业务规则的定义等逻辑,则可以使用BPEL描述的业务流程,业务状态机组,业务规则等组件进行开发。例如,图5实现的是一个查询客户信用的业务流程,由Web客户端发起查询,WPS首先访问CRM系统获得客户的信用信息,WPS然后访问计费系统获得客户的欠费信息等,最后将信息合成,返回给Web客户端。在后续的文章中我们对业务流程的开发做更详细的介绍。
图5 查询客户信用的业务流程
本文简单介绍了WSCTI项目的业务场景,用例,设计架构和开发流程。在本系列的后续文章中将继续介绍项目的实现以及WPS的特性。
|