级别: 高级 王 夕宁 (wangxn@cn.ibm.com), 高级软件工程师, IBM 何 蕾 (heleihl@cn.ibm.com), 资深软件工程师, IBM
2009 年 2 月 19 日
本系列基于电信行业中的实例应用,针对业务模型的生命周期治理展开讨论,本篇是该系列中之二,侧重于如何定义生命周期,并重点讨论如何基于策略实现生命周期的治理,并且通过一个示例讲述如何基于定制的用户界面进行生命周期的治理。在前一篇文章中,已经讲述了如何定义 WSRR 中支持的基于本体的业务模型,并以此定制自定义用户 Web 界面,从而更好地展示业务数据。
基于定制后的 Web 界面创建业务对象
切换到 Sample End User 透视图,并点击导航树中的“服务供应商”项,右边出现服务供应商集合列表。点击“新建服务供应商”按钮,进入如 图 1 所示的创建服务供应商界面。
图 1 创建服务供应商界面
为新服务供应商指定如下属性信息:
- 名称:信息内容供应商 A;
- 描述:信息内容供应商 A 的详细介绍;
- 唯一标识:InfoProviderA;
- 规模(人数):100(必须为整数,否则不能完成创建);
- 所属城市:北京(从下列列表中选择);
- 是否上市:否;
- 网站:http://info.providera.com
点击 Finish 按钮提交,进入新建服务供应商的详细界面,如 图 2 所示。在本系列的前一篇文章中,定义了服务供应商的的网站属性为 URI 数据类型,因此如 图 2 所示可以点击网站文本框的 URL 打开对应的网址。
图 2 新建服务供应商的详细界面
按照上述步骤添加其他服务供应商,如 表 1 所示列出了所有供应商的列表内容。
表 1 所有供应商的列表内容
| 名称 | 描述 | 唯一标识 | 规模(人数) | 所属城市 | 是否上市 | 网站 |
|---|
| 通信供应商 A | 通信供应商 A 的详细介绍 | CommProviderA | 2800 | 北京 | true | http://comm.providera.com |
|---|
| 通信供应商 B | 通信供应商 B 的详细介绍 | CommProviderB | 3200 | 广州 | true | http://comm.providerb.com |
|---|
| 信息内容供应商 A | 信息内容供应商 A 的详细介绍 | InfoProviderA | 100 | 北京 | false | http://info.providera.com |
|---|
| 信息内容供应商 B | 信息内容供应商 B 的详细介绍 | InfoProviderB | 2000 | 上海 | true | http://info.providerB.com |
|---|
| 娱乐内容供应商 A | 娱乐内容供应商 A 的详细介绍 | EntProviderA | 200 | 其他 | false | http://ent.providera.com |
|---|
| 娱乐内容供应商 B | 娱乐内容供应商 B 的详细介绍 | EntProviderB | 300 | 广州 | false | http://ent.providerb.com |
|---|
按照上述步骤添加数据增值业务示例,下载列表中的 示例文件 ValueAddSample.txt 列出了所有数据增值业务的集合列表内容。
接下来,将服务供应商和它能提供的增值业务相关联。打开信息内容供应商 A 的详细页面,点击“Edit Relationships”链接。在新打开的界面中,点击“Add 数据增值业务”链接,可以添加要关联的增值业务。在该添加界面中,可以允许通过名称和类型进行查询。例如,在名称输入域中输入星号、类型中选择数据增值业务,则表示要查询所有的数据增值业务。
点击查询按钮后,出现如 图 3 所示的页面。从列表中选择要添加关联关系的数据增值业务,然后点击“Apply Selected Targets”按钮。
图 3 添加要关联的增值业务
返回到信息页面后,点击右侧的图形视图链接,即可看到如 图 4 所示的关联关系。
图 4 关联关系
生命周期定义
对于每个受治理的实体,都会定义状态机,用来描述该实体可能的生命周期状态、这些状态之间的转换、发生转换所需要的条件以及执行转换时需要采取的操作。
WSRR 管制 API 允许用户请求对受治理的实体执行变迁;如果实体处于不允许变迁的状态,请求将被拒绝。否则将检查变迁条件;这些变迁条件可以包括使请求者无法执行变迁的访问控制限制,或者它们可以指定要执行变迁必须成功运行的验证器(例如,通过检查将出现在受治理的实体集合中的某些文档)。如果通过了检查,就会执行变迁和相关操作;这些操作可以包括创建用于报告变迁的通知事件,或对受治理的实体的可视性更改进行更新。
WSRR 自身已提供了一个默认的生命周期,如果需要添加新的生命周期,则必须先删除掉默认的生命周期。这是因为 WSRR 只能运行使能一个生命周期定义文件。
定义生命周期文件的最好方式可能就是使用 IBM?WebSphere?Integration Developer 集成开发平台开发一个状态机。WebSphere?Integration Developer 可以产生用于描述状态机的基于 SACL 的文件。
生命周期是跟业务需求息息相关的,针对增值业务服务的具体特点,运营商的管理平台应提供统一的接口,完成服务供应商的业务申请、开通、变更、注销以及业务资费的统一管理。单从服务供应商的注册新业务角度分析,应需要经过一系列的流程,例如登录申请业务界面,身份认证、填写业务类别、资费信息等,新业务测试、测试通过以及更新业务信息等。本案例分析中假设服务供应商和数据增值业务存在如下的生命周期:
- 服务供应商具有以下状态:注册、审核、批准、运营、注销;
- 数据增值业务具有以下状态:注册、开发、测试、变更、上线、下线;
如 图 5 所示,在 WebSphere?Integration Developer 中开发了一个状态机用于描述服务供应商和数据增值业务的生命周期。该状态机产生的 SACL 文件可以从下载列表中的 Life Cycle 目录下得到。
图 5 用于描述服务供应商和数据增值业务的生命周期
切换到配置(Configuration)视图,点击左侧导航树中的 Active Configuration Profile-> Life Cycle 菜单项,选中右侧页面中的生命周期配置文件 Life Cycle Configuration (LifecycleDefinition),并点击右侧页面中的 Replace Life Cycle Configuration 按钮,导入下载列表中的生命周期配置文件 LifecycleDefinition.sacl(位于 / Life Cycle 目录下)。可以使用省略后缀的文件名作为生命周期配置项的名称。
定义与生命周期相对应的分类系统
WSRR 支持的生命周期定义内容,除了需要定义上一部分提及到的 SACL 文件之外,还需要提供与之相对应的分类系统。该分类系统与本系列上一篇文章中提到的业务模型定义文件一样,都是基于 OWL 本体的。具体的定义内容可以从下载列表中的生命周期分类文件 Lifecycle.owl(位于 / Classifications 目录下)中得到。
切换到配置(Configuration)视图,点击左侧导航树中的 Active Configuration Profile-> Classification Systems 菜单项,并点击右侧页面中的 Load Classification System 按钮,导入下载列表中的生命周期分类文件 Lifecycle.owl(位于 / Classifications 目录下)。
如 图 6 所示描述了电信行业中的数据增值业务生命周期治理对应的分类系统。
图 6 生命周期治理对应的分类系统
基于策略实现生命周期治理
治理策略是跟业务需求息息相关的,本案例分析中假设存在如下的策略:
1)确保每个业务对象只能启动各自的生命周期,即服务供应商实例对象只能启动服务供应商生命周期、数据增值业务实例对象只能启动数据增值业务生命周期。
2)数据增值业务的状态应与服务供应商的状态紧密相关,具体表现为:
- A ) 当服务供应商的运营状态为注册时,数据增值业务应当未启动生命周期、或状态为注册;
- B)当服务供应商的运营状态为注销时,数据增值业务应当结束生命周期、或状态为下线;
- C)当数据增值业务的状态为上线时,服务供应商的状态才可能为审核、批准、运营中的之一;
3)对于不支持个性化订阅的数据增值业务,收费价格应限制于某一范围,例如不大于 100(元);
4)对于支持个性化订阅的数据增值业务,收费价格则应限制于某一范围,例如 100-1000(元)之间的范围;
治理验证器简介
WSRR 提供了治理验证器的框架,用于基于发布到 WSRR 的文档元数据(属性、关系、分类等)以及文档内容本身的验证操作,如 图 7 所示描述了治理验证器的架构。
治理验证器能够控制何种操作(例如,发布 Publish、删除 Delete、更新 Update 等)可以被施加到相应的文档实体上,而这些文档实体可以通过分类 Classification 进行筛选。
特别地,治理验证器还用于控制状态变迁时的验证操作,以便于确保从一个状态变迁到另外一个状态时所必须的约束得到保证。
而所有的这些验证均以规则的形式(即 Governance Policy)写在 XML 文档中,并被装载到 WSRR 的策略库 Governance Policy Library 中执行生效。
图 7 治理验证器的架构
启用治理验证器
切换到配置(Configuration)视图,点击左侧导航树中的 Active Configuration Profile-> Plug-ins 下的 Validation Properties 菜单项,并点击右侧页面中的 Validation properties plug-in (ValidationProperties) 链接,在文本框中添加启用治理验证器的代码。修改的内容应当如 清单 1 代码所示:
清单 1 视图查询定义代码
# These validators are called for all document types
validators = com.ibm.sr.api.SRTemplateValidator,
com.ibm.sr.api.SRBusinessModelValidator,
com.ibm.sr.uddi.validator.UDDIImgValidator,
com.ibm.sr.governance.validator.GovernancePolicyValidator
# These validators are called for governed objects only
governanceValidators = com.ibm.sr.governance.api.SRGovernanceValidator,
com.ibm.sr.governance.validator.GovernancePolicyValidator |
切换到配置(Configuration)视图,点击左侧导航树中的 Active Configuration Profile-> Plug-ins 下的 Governance Policies 菜单项,并点击右侧页面中的 Load Governance Policy 按钮,导入下载列表中的治理策略文件(位于 / Governance Policy 目录下)。可以使用省略后缀的文件名作为治理策略配置项的名称。如果你需要详细了解治理策略的内涵,请参阅下一部分中将会详细介绍的如何编写治理策略内容。
编写治理策略
生命周期初始化策略
确保每个业务对象只能启动各自的生命周期,即服务供应商实例对象只能启动服务供应商生命周期、数据增值业务实例对象只能启动数据增值业务生命周期。
首先定义实体定义实体断言,指定该断言名称为 SampleProfileLifecycleInitializationPolicy.ProviderLifecycleEntityAssertion,实体类型为
http://www.ibm.com/xmlns/telecom/sample/SampleBusinessModel#Service_Provider 的普通对象 GenericObject。该实体断言的含义是指用于说明要约束的实体类型。
如 清单 2 代码所示:
清单 2 生命周期初始化策略代码 - 定义实体断言
<wsp:Policy xmlns:wsp = "http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu = "http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsrrgp = "http://www.ibm.com.policy/GovernancePolicyDomain"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
wsu:Id = "uuid:sampleProfileThing"
Name = "SampleProfileLifecycleInitiationPolicy" >
......
<!-- 定义实体断言 -->
<wsrrgp:EntityAssertion wsrrgp:entityType = "GenericObject"
wsrrgp:name = "SampleProfileLifecycleInitializationPolicy
.ProviderLifecycleEntityAssertion"
wsrrgp:id = "ProviderLifecycleEntityAssertion" >
<wsrrgp:ClassificationAssertion
wsrrgp:combinationCode = "false"
wsrrgp:name = "SampleProfileLifecycleInitializationPolicy
.ProviderLifecycleEntityAssertion" >
<!-- 指定类型为 http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#Service_Provider 的普通对象 -->
<wsrrgp:Classification>
http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#Service_Provider
</wsrrgp:Classification>
</wsrrgp:ClassificationAssertion>
</wsrrgp:EntityAssertion>
......
</wsp:Policy> |
然后,定义生命周期初始化变迁对应的策略,包括通过 XPath 表达式选择实施策略的对象、指定策略对应的操作、生命周期初始化变迁操作以及指定该策略对应的实体断言等。如 清单 3 代码所示,
指定了实施策略的对象为 /WSRR/OriginalObject,策略对应的操作为变迁,生命周期初始化变迁操作为 http://www.ibm.com/xmlns/prod/serviceregistry/sample/SampleProfileLifecycle#InitiateServiceProviderLifecycle。
清单 3 生命周期初始化变迁对应的策略
<wsrrgp:ValidatorPolicy
wsrrgp:name = " ProviderLifecycle - Initiate Transition Policy” >
<wsp:Policy>
<!-- 通过 XPath 表达式选择实施策略的对象 -->
<wsrrgp:ContentApplicabilityFilter
wsrrgp:targetXPath = "/WSRR/OriginalObject" />
<!-- 指定策略对应的操作 -->
<wsrrgp:WSRROperationFilter>
<wsrrgp:WSRROperation> TRANSITION </wsrrgp:WSRROperation>
</wsrrgp:WSRROperationFilter>
<!-- 生命周期初始化变迁操作 -->
<wsrrgp:TransitionOperationFilter>
<wsrrgp:TransitionOperation>
http://www.ibm.com/xmlns/prod/serviceregistry/sample/
SampleProfileLifecycle#InitiateServiceProviderLifecycle
</wsrrgp:TransitionOperation>
</wsrrgp:TransitionOperationFilter>
<!-- 指定该策略对应的实体断言 -->
<wsrrgp:EntityAssertionPolicy
wsrrgp:name = "SampleProfileLifecycleInitializationPolicy
.ProviderLifecycleEntityAssertion_eap" >
<wsp:Policy
Name = "SampleProfileLifecycleInitializationPolicy
.ProviderLifecycleEntityAssertion_eap_policy" >
<wsrrgp:EntityAssertion
wsrrgp:entityType = "OriginalObject"
wsrrgp:name =
"SampleProfileLifecycleInitializationPolicy
.ProviderLifecycleEntityAssertion" >
<wsrrgp:AssertionRef
wsrrgp:ref
= "ProviderLifecycleEntityAssertion" />
</wsrrgp:EntityAssertion>
</wsp:Policy>
</wsrrgp:EntityAssertionPolicy>
</wsp:Policy>
</wsrrgp:ValidatorPolicy>
|
业务对象状态变迁相关性策略
数据增值业务的状态应与提供该业务的服务供应商的状态紧密相关,我们从中列出如下可能存在的两种情况作为案例进行分析。第一种情况为:当数据增值业务的状态由变更变迁为上线状态时,它所属的服务供应商的状态应当为运营状态;
另外一种情况则是:当服务供应商的状态为由运营变迁为注销时,它所包含的数据增值业务应当处于结束生命周期(状态为下线)。下面以第一种情况作为示例讲述如何编写其对应的策略。首先,通过 XPath 表达式选择实施策略的对象为
/WSRR/GenericObject[ classifiedByAnyOf( 'http://www.ibm.com/xmlns/telecom/sample/SampleBusinessModel#ValueAddedService' )];指定策略对应的操作为变迁 TRANSITION;并确保数据增值业务的状态由变更变迁为上线状态。
策略部分代码如 清单 4 代码所示:
清单 4 业务对象状态变迁相关性策略代码
<wsp:Policy ...... >
<!-- 业务对象状态变迁相关性策略 -->
<wsrrgp:ValidatorPolicy
wsrrgp:name = "StateCorrelationPolicy_Service" >
<wsp:Policy wsrr:policyClass = "ValidatorPolicyContent"
wsrr:policyClassDomain = "http://www.ibm.com.policy/
GovernancePolicyDomain"
wsp:Name = "urn:StateCorrelationPolicy_Service" >
<!-- 通过 XPath 表达式选择实施策略的对象 -->
<wsrrgp:ContentApplicabilityFilter
wsrrgp:targetXPath
= " /WSRR/GenericObject[classifiedByAnyOf(
'http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#ValueAddedService')]" >
</wsrrgp:ContentApplicabilityFilter>
<!-- 指定策略对应的操作 -->
<wsrrgp:WSRROperationFilter>
<wsrrgp:WSRROperation>TRANSITION</wsrrgp:WSRROperation>
</wsrrgp:WSRROperationFilter>
<!-- 数据增值业务的状态由变更变迁为上线状态 -->
<wsrrgp:TransitionOperationFilter>
<wsrrgp:TransitionOperation>
http://www.ibm.com/xmlns/prod/serviceregistry/sample/
SampleProfileLifecycle#TransitionOnline
</wsrrgp:TransitionOperation>
</wsrrgp:TransitionOperationFilter>
</wsp:Policy>
</wsrrgp:ValidatorPolicy>
</wsp:Policy> |
然后,确保当数据增值业务的状态由变更变迁为上线状态时,它所属的服务供应商的状态应当为运营状态。指定类型为 http://www.ibm.com/xmlns/telecom/sample/SampleBusinessModel
#ValueAddedService 的普通对象,确保至少对应一个所属的服务供应商即 wsrrgp:minCardinality = "1",并确保所属的服务供应商状态为运营状态即分类为 http://www.ibm.com/xmlns/prod/serviceregistry/sample/SampleProfileLifecycle#ProviderRun。
策略部分代码如 清单 5 代码所示:
清单 5 确保所属的服务供应商的状态应当为运营状态策略代码
<wsrrgp:EntityAssertionPolicy>
<wsp:Policy wsrr:policyClass = " EntityAssertionClass"
wsrr:policyClassDomain = "http://www.ibm.com.policy
/GovernancePolicyDomain" >
<wsrrgp:ClassificationAssertion
wsrrgp:combinationCode = "Any" >
<!-- 指定类型为 http://www.ibm.com/xmlns/telecom/
sample/SampleBusinessModel
#ValueAddedService 的普通对象 -->
<wsrrgp:Classification>
http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#ValueAddedService
</wsrrgp:Classification>
</wsrrgp:ClassificationAssertion>
<!-- 确保至少对应一个所属的服务供应商 -->
<wsrrgp:RelatedToByAssertion
wsrrgp:relationshipName = "
telco_Service_Provider_Relationship_Service"
wsrrgp:minCardinality = " 1" >
<wsrrgp:EntityAssertion
wsrrgp:entityType = " GenericObject" >
<wsrrgp:ClassificationAssertion
wsrrgp:combinationCode = " All" >
<!-- 确保所属的服务供应商状态为运营状态 -->
<wsrrgp:Classification>
http://www.ibm.com/xmlns/prod/serviceregistry/
sample/SampleProfileLifecycle#ProviderRun
</wsrrgp:Classification>
<wsrrgp:Classification>
http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#Service_Provider
</wsrrgp:Classification>
</wsrrgp:ClassificationAssertion>
</wsrrgp:EntityAssertion>
</wsrrgp:RelatedToByAssertion>
</wsp:Policy>
</wsrrgp:EntityAssertionPolicy> |
业务相关的策略
业务相关的策略与实际的业务需求紧密相关,我们也选取可能存在的两种情况作为案例进行分析。第一种情况为:对于不支持个性化订阅的数据增值业务,收费价格应限制于某一范围,例如不大于 100(元);
另外一种情况则是:对于支持个性化订阅的数据增值业务,收费价格则应限制于某一范围,例如 100-1000(元)之间的范围。首先,通过 XPath 表达式选择实施策略的对象为 /WSRR/GenericObject[classifiedByAnyOf(
'http://www.ibm.com/xmlns/telecom/sample/SampleBusinessModel#ValueAddedService' )];指定策略对应的操作为创建 CREATE。这部分策略代码如 清单 6 代码所示:
清单 6 业务相关的策略
<wsp:Policy ...... >
<wsrrgp:ValidatorPolicy
wsrrgp:name = " ValueAddedServicePricePolicy" >
<wsp:Policy wsrr:policyClass=" ValidatorPolicyContent"
wsrr:policyClassDomain="
http://www.ibm.com.policy/GovernancePolicyDomain"
wsp:Name=" urn:ValueAddedServicePricePolicy" >
<!-- 通过 XPath 表达式选择实施策略的对象 -->
<wsrrgp:ContentApplicabilityFilter
wsrrgp:targetXPath=
" /WSRR/GenericObject[classifiedByAnyOf(
'http://www.ibm.com/xmlns/telecom/sample/
SampleBusinessModel#ValueAddedService')
and @telco_Service_Property_Customization='false']" >
</wsrrgp:ContentApplicabilityFilter>
<!-- 指定策略对应的操作即创建 -->
<wsrrgp:WSRROperationFilter>
<wsrrgp:WSRROperation>CREATE</wsrrgp:WSRROperation>
</wsrrgp:WSRROperationFilter>
......
</wsp:Policy>
</wsrrgp:ValidatorPolicy>
</wsp:Policy> |
此外,还要确保对于不支持个性化订阅的数据增值业务,收费价格应限制于某一范围,例如不大于 100(元)。策略部分代码如 清单 7 代码所示:
清单 7 业务相关的策略
<wsrrgp:EntityAssertionPolicy>
<wsp:Policy wsrr:policyClass=" EntityAssertionClass"
wsrr:policyClassDomain=" http://www.ibm.com.policy/GovernancePolicyDomain" >
<wsrrgp:PropertyAssertion wsrrgp:propertyName
=" telco_Service_Property_Price" propertyType=" xsd:integer" >
<wsrrgp:NotNullConstraint />
<!-- 对于不支持个性化订阅的数据增值业务,收费价格应限制于某一范围,例如不大于 100(元)-->
<wsrrgp:RangeConstraint wsrrgp:minValue="0" wsrrgp:maxValue="100" />
</wsrrgp:PropertyAssertion >
</wsp:Policy>
</wsrrgp:EntityAssertionPolicy> |
通过示例探究治理策略的执行
生命周期初始化策略执行
打开信息内容供应商 A 的详细页面,点击 Governance 选项卡进入治理状态页。从列表中选择启动增值业务生命周期,点击 Govern 按钮启动生命周期。因为该操作将会为信息内容供应商 A 启动增值业务的生命周期,显然不符合生命周期初始化的策略。因此会出现如 图 8 所示的错误提示界面。
图 8 生命周期初始化策略执行
返回 Governance 选项卡后,选择 Default Transitions 进行治理,进入生命周期选择状态。如果仍然选择了启动增值业务生命周期,并点击 Transition 按钮进行状态变迁,将会得到如上 图 8 所示的同样的错误提示界面。
业务对象状态变迁相关性策略执行
数据增值业务的状态应与提供该业务的服务供应商的状态紧密相关,如上述策略定义所述,当数据增值业务的状态由变更变迁为上线状态时,它所属的服务供应商的状态应当为运营状态。如 图 9 所示,信息内容供应商 A 的状态为审核,而与它相关联的体育新闻增值业务的当前状态为变更。
图 9 业务对象的状态
如果将体育新闻增值业务变迁为上线状态,则会出现如 图 10 所示的错误提示界面。这是因为它所属的服务供应商的状态不是期望的运营状态。
图 10 错误提示界面
此时需要将信息内容供应商 A 的状态变迁为运营状态,然后将体育新闻增值业务变迁为上线状态。
假设需要再将信息内容供应商 A 的状态变迁为注销,此时需要考虑另外一个状态变迁的策略,即当服务供应商的状态为由运营变迁为注销时,它所包含的数据增值业务应当处于结束生命周期(状态为下线)。
如 图 10 所示点击 Transition 按钮变迁信息内容供应商 A 的状态为注销时,将会出现如 图 11 所示的错误提示界面。这是因为与它相关联的体育新闻增值业务的状态不是期望的下线状态。
图 10 变迁信息内容供应商 A 的状态为注销
图 11 错误提示界面
业务相关的策略执行
切换到 Sample End User 透视图,并点击导航树中的 " 数据增值业务 " 项,右边出现服务供应商集合列表。右边出现如图所示的数据增值业务集合列表。
点击 " 新建数据增值业务 " 按钮,进入如 图 12 所示的创建数据增值业务界面。
为新服务供应商指定如下属性信息:
- 名称:体育新闻;
- 描述:及时报道国内外的重大体育新闻;
- 唯一标识:SportNews;
- 服务内容:国内外的重大体育新闻;
- 收费价格:288;
- 是否支持个性化订阅:否;
- 生效时间:2008 年 8 月 28 日星期四下午 10 时 24 分 51 秒;
- 失效时间:2009 年 8 月 28 日星期五下午 10 时 24 分 58 秒
图 12 创建数据增值业务界面
点击 Finish 按钮提交,出现如 图 13 所示的错误提示界面。这是因为它违反了上述中的业务相关的策略,即对于不支持个性化订阅的数据增值业务,收费价格应限制于某一范围,例如不大于 100(元)。本实例指定了收费价格为 288,超过了最大限值 100。
图 13 业务相关的策略执行
修改为支持个性化订阅,收费价格变为 2899,重新提交。出现如 图 14 所示的错误提示界面,这是因为它违反了上述中的业务相关的第二条策略,即对于支持个性化订阅的数据增值业务,收费价格则应限制于某一范围,例如 100-1000(元)之间的范围。
图 14 业务相关的第二条策略执行
此时修改为支持个性化订阅,收费价格变为 200,重新提交,成功创建一个数据增值业务。
结束语
本系列基于电信行业中的实例应用,针对业务模型的生命周期治理展开讨论,在前一篇文章中,已经讲述了如何定义 WSRR 中支持的基于本体的业务模型,并以此定制自定义用户 Web 界面,从而更好地展示业务数据。本篇是该系列中之二,侧重于如何定义生命周期,并重点讨论如何基于策略实现生命周期的治理,并且通过一个示例讲述如何基于定制的用户界面进行生命周期的治理。
声明:本文仅代表作者个人的观点,与 IBM 公司的立场无关。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| 生命周期定义文件 | LifeCycle.zip | 2KB | HTTP |
|---|
| 治理策略文件 | GovernancePolicy.zip | 5KB | HTTP |
|---|
| 分类系统文件 | Classifications.zip | 2KB | HTTP |
|---|
| 示例列表文件 | ValueAddSample.txt | 2KB | HTTP |
|---|
参考资料
作者简介  | 
|  | 王夕宁:IBM 中国软件开发实验室 SOA (中国)设计中心的高级软件工程师,目前从事于 SOA Policy 及 SOA Governance 相关的工作,并参与了 WSRR 产品开发及其相关客户项目。他的主要技能和专长包括 SOA、Web 服务、J2EE、业务流程、模型驱动技术以及 Eclipse 开发等领域。可以通过 wangxn@cn.ibm.com 联系他。 |
 | 
|  | 何蕾,IBM 中国软件开发实验室 SOA 设计中心资深软件工程师。参与了 IBM 在全球的第一个 SOA Reference 案例(美国汽车零售巨头 Pep Boys SOA 解决方案),主要负责企业级商务流程的设计与实现,负责了多个 SOA 项目的设计与实施。同时对 IBM 产品有丰富经验,负责了 Tivoli Deploy Planner 产品的早期设计与开发;负责 Rational Asset Management 产品的设计与开发。对 SOA、ESB、SCA、Web Service、J2EE、MDA、ABD 有深入了解。 |
对本文的评价
|