级别: 中级 王 夕宁 (wangxn@cn.ibm.com), 高级软件工程师, IBM 刘 昕鹏 (xinpengl@cn.ibm.com), 专职软件工程师, IBM 薛 亮 (xueliang@cn.ibm.com), 资深软件工程师, IBM
2009 年 2 月 09 日
本系列 围绕 WSRR 中的策略的一些高级话题展开讨论。前 4 部分,我们分别向您介绍了 WSRR 业务模型、访问控制、提升的基本概念以及如何在 WSRR V6.2 中使用治理策略框架对 WSDL 文档进行 WS-I 互操作性校验。本文将侧重于介绍 WSRR 中的 SOA 策略及基于策略的治理,并深层次探究 WSRR 背后基于策略的治理理念及应用。
引言
 | |
要阅读更多关于 WSRR 应用系列文章的信息,请访问以下链接:
|
|
作为一种用于创建企业 IT 应用的体系架构样式,面向服务的体系结构(SOA)充分利用了面向服务的原则,以实现业务与支持业务的 IT 技术之间的联系。SOA 通过复用、松耦合、灵活性、互操作性、集成和治理来提供业务灵活性和弹性。通过将服务描述与其实现分离,以及在整个服务生命周期使用该描述元数据来实现这些目标。
IBM® WebSphere® Service Registry and
Repository (以下简称 WSRR )在 SOA 生命周期的端到端治理基础阶段中担当关键的角色。在服务的整个生命周期中,从开发阶段的服务初次发布、部署直至服务管理,WSRR
都支持对服务元数据的治理。服务开发遵循生命周期原则,IBM 将这一生命周期称为 SOA 生命周期。SOA
治理也同样遵循生命周期原则,即 SOA 治理生命周期。这两个生命周期相互配合、同时运行,并且一起被使用来产生
SOA 组合应用程序及其服务。SOA 治理生命周期产生一个治理模型来管理 SOA 生命周期。
如图 1
所示, WSSR 用于治理的生命周期各阶段:
-
计划阶段(Plan)
在该阶段定义治理需求,例如,查看 WSRR 中实现的现有治理功能或为受管实体定义基本生命周期模型。
-
定义阶段(Define)
在该阶段指定治理方法,例如,为负责治理服务交互的服务工件或 SLA 捕获生命周期模型的详细信息。
-
启用阶段(Enable)
这是最重要的阶段,治理策略和流程在该阶段实现,例如,实现服务生命周期模型或元数据验证规则,或为服务元数据定义访问控制。
-
度量阶段(Measure)
在该阶段监控和度量治理需求,并且 WSRR 信息支持监控流程。
图 1 WSSR 用于治理的生命周期各阶段
服务生命周期的治理
WSRR 从以下几个方面提供了对服务生命周期的治理。如图 1 所示, WSSR 用于治理周期的生命周期各阶段:
-
访问控制( Access Control )
WSRR 提供了一种基于角色的访问控制机制,用于控制用户访问服务元数据。在配置视图( Configuration
Perspective )下, WSRR 提供了一个 Web 界面用于编辑角色与访问控制权限的关系。
-
服务分类( Service Classification )
对服务及其相关的元数据进行分类有助于更好地描述企业的领域知识,以此满足企业的特殊需要。使用 WSRR 提供的分类编辑器,可以快速地创建新的分类系统或编辑已存在的分类系统。
-
影响分析( Impact Analysis )
WSRR 提供了对服务及其元数据的创建、删除、修改等操作的影响分析,同时还提供了一个直观的图形显示界面。通过该图形界面,用户可以清晰地看到服务及其元数据之间的关系。
-
服务生命周期( Service Life Cycle )
为满足个性化的业务需要,用户可以自定义所需的业务实体,并可以为其定制特定的服务生命周期。为满足业务需要,用户还可以根据服务生命周期管理的一些最佳实践,来创建 WSRR 支持的验证器来维护服务及其生命周期状态、迁移时的约束。
-
治理概要( Governance Profile )
此外,WSRR 还提供了一个预定义的治理概要( Governance
Profile )。在该概要中,预定义了业务模型、 WSRR 技术模型、角色及视图、生命周期、治理策略及其相应的验证器等。在治理概要激活状态下,切换到治理概要管理员(GP Administrator )视图,如图 2
所示,导航栏列出了预定义的业务元数据及治理生命周期。
图 2 预定义的业务元数据及治理生命周期
SOA 策略及其生命周期
WSRR 提供对策略生命周期的管理,覆盖了各种领域的策略。特别的, WSRR 能够让用户跟踪和监控运行时策略及其相关联的服务之间的关系和状态。使用 WSRR 提供的策略管理,可以有效地确保 SOA 中的服务符合规定的契约,因此使服务更能符合客户的满意度,提高服务的质量。
WSRR 从以下几个方面提供了对 SOA 策略的管理功能:
-
治理 SOA 策略的生命周期
通过治理 SOA 策略的生命周期,可以有效地验证、审核、记录策略的各种变化;还可以确保 SOA 服务符合规定的标准,例如为保证 Web 服务的交互互操作性,应当确保 Web 服务符合 Web
services interoperability (WS-I)规范。
-
使用策略编写工具轻松创建策略
通过策略编写工具可以快速地创建各种领域的策略,并将创建的策略存储到 WSRR 中。同时还可以允许将策略关联到指定的服务上。
-
基于策略库机制
通过策略库机制,可以预定义策略的最佳实践或总结过的策略资产,以此达到复用策略的目的。
-
分发 SOA 策略到运行时环境
WSRR 可以存储用于各种运行时环境的 SOA 策略,这种运行时环境包括 WebSphere
Enterprise Server Bus (简称 WESB )、 WebSphere Message
Broker (简称 WMB )、 WebSphere Data Power 等产品。
WSRR 中的治理策略
WSRR 的治理概要(Governance Profile)提供了一种名叫服务策略(Service
Policy)的业务元数据类型,如图1中的红色矩形框所示。一个服务策略提供了一系列相关策略的集合,可以用于治理该策略文档集合的生命周期。
如下表 1 所示,服务策略包含了以下属性:
表 1 服务策略包含的属性
| 属性名称 | 描述 | 数据类型 |
|---|
| Policy URI | 用于定位服务策略的统一资源标识符 URI | 字符串 |
|---|
| Name | 用于识别服务策略的名字 | 字符串 |
|---|
| Description | 服务策略的相关描述信息 | 字符串 |
|---|
| Version | 服务策略的版本信息 | 字符串 |
|---|
如下表 2 所示,服务策略包含了以下关联:
表 2 服务策略包含的关联
| 关联 | 名称 | 描述 | 类型 | 备注 |
|---|
|
Authoritative Policy Documents
| 授权文档 WSRR tm_authoritativeDocuments | 包含该服务策略定义的文档 | WSDLDocument |或者 PolicyDocument | 可以包含多个授权文档 |
|---|
|
Policy Expression Declarations
| 策略表达 WSRR tm_itPolicies | 引用该服务策略所定义的逻辑策略表达 Policy Expression | PolicyExpression | 可以包含多个策略表达 |
|---|
JK 证券公司案例中,业务模型定义了业务的元数据,其中包含了用于说明安全性的策略元数据。下面的示例中给出了如何创建用于说明安全性且名为如 Security Level I Policy 的服务策略的过程。
如图 3 所示,新建一个名称为 Security Level I Policy 的服务策略,指定 policy
URI 为 http://policy/security/level/basic ,并指定 policy.xml 文档为授权文档(Authoritative
Document)以及指定相应的逻辑策略表达(Policy Expression)。
图 3 新建一个名称为 Security Level I Policy 的服务策略
另外,图 2 中的黑色矩形框所示的 WS Policies 是指基于 WS-Policy 的逻辑策略表达(Policy
Expression),如图 4 所示。通过上面的介绍,已经知道这些 WS Policies 可以被服务策略引用。
图 4 WS Policies 与基于 WS-Policy 的逻辑策略表达
WSRR 中的策略生命周期
WSRR 的治理概要(Governance Profile)提供了一个策略生命周期的范例,如图 5 所示。所有的策略变迁都必须按照基于决策权限的治理,以此确保能够符合相应的最佳实践。
图 5 策略生命周期
策略生命周期的状态分为了以下几种情况:
-
识别(PolicyIdentified)
策略被识别状态是该生命周期的起始状态。WSRR 的治理概要(Governance Profile)定义了从该状态到编写状态的自动变迁,因此用户不会看到该状态的出现。用户可以添加自定义的变迁操作,以此在变迁到编写状态之前进行相应的治理。
-
编写( Author )
在编写阶段,除了策略本身的内容被定义之外,还可能会定义策略的附加规则,即什么的策略可以应用到什么样的服务主体上。
如果策略分析员认为该策略及其应用能够满足业务需要、可以继续开发该策略,状态将会由操作 AuthorizeForDevelopment 变迁为下一状态。WSRR 的治理概要(Governance
Profile)提供了如图 6 所示的状态变迁的操作。
图 6 状态变迁
-
转换(Transform)
在转换阶段,策略的附加规则会被计算,因此可以转换出执行点可以执行的策略形式。该阶段也包含了将策略部署到测试环境的过程。
如果策略架构师认为该策略可以部署到测试环境进行测试,状态将会由操作 ApproveForDeployment 变迁为下一状态。
-
执行(Enforce)
在执行阶段,策略会在一定的上下文环境中被执行,以此检验是否符合用户需求。这一阶段对应于策略运行的服务上下文所在的部署阶段。
一旦策略经过测试,能够正确地运行并满足实际的业务需要,那么该策略可以经过操作 ApproveForProduction 进入下一状态。此时策略将被部署到实际的生产环境中。
而如果经过测试检验策略不能满足业务需要,那么可能需要重新实现该策略。由操作 Repair 返回到转换(Transform)状态。
-
监控(Monitor)
在监控阶段,策略的计算、执行一致性等情况都将被监控。
处于监控状态的策略,经过一段时间的运行后,可能不再满足新业务的需求,策略管理员将会终止该策略。此时由操作 RetireFromUse 变迁为下一退休状态。
另外管理员也可能会因为生产环境中的某些错误,会将策略由操作 Revoke 变迁为执行(Enforce)状态。
-
退休(PolicyRetired)
策略生命周期的最后一个状态就是退休,至此该策略将被终止。
为了能够清晰地查看某状态下的所有被监控的策略,WSRR 的治理概要(Governance
Profile)提供了一个如图 7 所示的导航栏。点击每一个状态可以查看该状态下的所有监控的策略列表。
图 7 治理概要(Governance Profile)提供的导航栏
深层次探究 WSRR 基于策略的治理
WSRR 策略库
WSRR 的治理概要(Governance
Profile)提供了一系列的治理策略用于维护服务在其生命周期内正确地运行。这些治理策略都是基于 WS-Policy 语法的 XML 格式文件,每一个策略文件包含了一系列的策略和断言。这些策略既可以绑定到特定的 WSRR 操作上,又可以限制于特定的工件类型。每一个策略引用了一系列的断言,这些断言可以被多个策略共享使用。每一个断言描述了元数据必须遵循的规则。最后,这些策略被注册到 WSRR 里面的治理验证器(Governance
Validator)执行。
当前,共有 74 个策略文件预存储于 WSRR 策略库中,每一个策略文件包含了用于执行生命周期决策的策略和断言。这些策略可以按照功能的不同分为以下几类:
-
生命周期选择策略(life cycle selection policies)
生命周期选择策略用于决定什么类型的工件可以执行相应的生命周期流程。WSRR 的治理概要提供了以下几种策略:
-
服务生命周期初始策略(ServiceLifecycle – Initiate
policy)
该策略用于约束业务服务、流程以及应用的生命周期管理,包含了应用目标必须为业务服务、流程以及应用的断言 ServiceLifecycleEntityAssertion 。
-
服务接口生命周期初始策略(InterfaceLifecycle –
Initiate policy)
该策略用于约束服务绑定、服务接口、消息模式以及 XSD 文档的生命周期管理,包含了应用目标必须为服务绑定、服务接口、消息模式以及 XSD 文档的断言 ServiceLifecycleEntityAssertion 。
-
服务版本生命周期初始策略(ServiceVersionLifecycle –
Initiate policy)
该策略用于约束那些离散的部署后的服务即服务版本或服务端点的生命周期管理,包含了应用目标必须为服务版本或服务端点的断言 ServiceVersionLifecycleEntityAssertion 。
-
策略生命周期初始策略(PolicyLifecycle – Initiate
policy)
该策略用于约束应用于运行时环境的策略、契约元数据或者 WS-Policy 文档的生命周期管理,包含了应用目标必须为策略、契约元数据或者 WS-Policy 文档的断言 PolicyLifecycleEntityAssertion 。
-
服务生命周期策略(Service life cycle policies)
服务生命周期策略用于决定在服务生命周期中任何给定的变迁都必须对应于相应的元数据。
-
服务接口生命周期策略(Service interface life cycle
policies)
服务接口生命周期策略用于决定在服务接口生命周期中任何给定的变迁都必须对应于相应的元数据。
-
服务版本生命周期策略(Service version life cycle policies)
服务版本生命周期策略用于决定在服务版本生命周期中任何给定的变迁都必须对应于相应的元数据。
-
策略版本生命周期策略(Policy version life cycle policies)
策略版本生命周期策略用于决定在 SOA 策略版本生命周期中任何给定的变迁都必须对应于相应的元数据。
基于策略的生命周期管理
WSRR 的策略库提供了关于 SOA 策略生命周期治理的策略,这些策略用于决定在 SOA 策略生命周期中任何给定的变迁都必须对应于相应的元数据。WSRR 允许三种类型的工件可以应用策略的生命周期管理,分别为:
激活 WSRR 的治理概要,切换到 Configuration 视图,点击导航栏 Active Configuration
Profile->Plug-ins->Governance
Policies ,右侧主界面列出 WSRR 的策略库列表,如图 8 所示的是分别应用于上述三种类型工件的策略。红色矩形框描述的是应用于契约的策略,共有六种类型;蓝色矩形框描述的是应用于 WS-Policy 策略文档的策略,共有六种类型;深绿色矩形框描述的是应用于服务策略的策略,共有六种类型。
图 8 WSRR 的策略库列表
作用于服务策略生命周期的这些策略的作用如下表 3 所述:
表 3 作用于服务策略生命周期的策略
| 策略 | 用途 | 策略库 URI ( Policy library URI ) |
|---|
|
PolicyLifecycle - ServicePolicy -
AuthorizeForDevelopmentPolicy
| 确保迁移到转换状态之前,服务策略元数据是完全的 |
urn:PolicyLifecycle_ServicePolicy_AuthorizeForDevelopmentPolicy
|
|---|
|
PolicyLifecycle - ServicePolicy -
ApproveForDeploymentPolicy
| 确保迁移到执行状态之前,服务策略元数据是完全的 |
urn:PolicyLifecycle_ServicePolicy_ApproveForDeploymentPolicy
|
|---|
|
PolicyLifecycle - ServicePolicy -
ApproveForProductionPolicy
| 确保迁移到监控状态之前,服务策略元数据是完全的 |
urn:PolicyLifecycle_ServicePolicy_ApproveForProductionPolicy
|
|---|
|
PolicyLifecycle - ServicePolicy -
RetireFromUsePolicy
| 确保终止该服务策略前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_ServicePolicy_RetireFromUsePolicy
|
|---|
|
PolicyLifecycle - ServicePolicy - RevokePolicy
| 确保重新调用该服务策略前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_ServicePolicy_RevokePolicy
|
|---|
|
PolicyLifecycle - ServicePolicy - RepairPolicy
| 确保修复该服务策略前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_ServicePolicy_RepairPolicy
|
|---|
作用于服务契约生命周期的这些策略的作用如下表 4 所述:
表 4 作用于服务契约生命周期的策略
| 策略 | 用途 | 策略库 URI ( Policy library URI ) |
|---|
|
PolicyLifecycle -
Contract-AuthorizeForDevelopmentPolicy
| 确保迁移到转换状态之前,服务契约元数据是完全的 |
urn:PolicyLifecycle_Contract_AuthorizeForDevelopmentPolicy
|
|---|
|
PolicyLifecycle - Contract -
ApproveForDeploymentPolicy
| 确保迁移到执行状态之前,服务契约元数据是完全的 |
urn:PolicyLifecycle_Contract_ApproveForDeploymentPolicy
|
|---|
|
PolicyLifecycle - Contract -
ApproveForProductionPolicy
| 确保迁移到监控状态之前,服务契约元数据是完全的 |
urn:PolicyLifecycle_Contract_ApproveForProductionPolicy
|
|---|
|
PolicyLifecycle - Contract - RetireFromUsePolicy
| 确保终止该服务契约前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_Contract_RetireFromUsePolicy
|
|---|
|
PolicyLifecycle - Contract - RevokePolicy
| 确保重新调用该服务契约前,没有任何受到影响的依赖 | urn:PolicyLifecycle_Contract_RevokePolicy |
|---|
|
PolicyLifecycle - Contract - RepairPolicy
| 确保修复该服务契约前,没有任何受到影响的依赖 | urn:PolicyLifecycle_Contract_RepairPolicy |
|---|
作用于策略文档生命周期的这些策略的作用如下表 5 所述:
表 5 作用于策略文档生命周期的策略
| 策略 | 用途 | 策略库 URI ( Policy library URI ) |
|---|
|
PolicyLifecycle-PolicyDocument-AuthorizeForDevelopmentPolicy
| 确保迁移到转换状态之前,服务策略元数据是完全的 |
urn:PolicyLifecycle_ServicePolicy_AuthorizeForDevelopmentPolicy
|
|---|
|
PolicyLifecycle - ServicePolicy -
ApproveForDeploymentPolicy
| 确保迁移到转换状态之前,策略文档元数据是完全的 |
urn:PolicyLifecycle_PolicyDocument_AuthorizeForDevelopmentPolicy
|
|---|
|
PolicyLifecycle - PolicyDocument -
ApproveForProductionPolicy
| 确保迁移到监控状态之前,策略文档元数据是完全的 |
urn:PolicyLifecycle_PolicyDocument_ApproveForProductionPolicy
|
|---|
|
PolicyLifecycle - PolicyDocument -
RetireFromUsePolicy
| 确保终止该策略文档前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_PolicyDocument_RetireFromUsePolicy
|
|---|
|
PolicyLifecycle - PolicyDocument - RevokePolicy
| 确保重新调用该策略文档前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_PolicyDocument_RevokePolicy
|
|---|
|
PolicyLifecycle - PolicyDocument - RepairPolicy
| 确保修复该策略文档前,没有任何受到影响的依赖 |
urn:PolicyLifecycle_PolicyDocument_RepairPolicy
|
|---|
这些策略本身都没有包含任何断言,用户可以根据实际的业务需求自行定制所需的断言。WSRR 的治理概要提供了这些策略的框架,清单 1 描述了策略 Policy Lifecycle - ServicePolicy -
AuthorizeForDevelopment Policy 的定义。
在下一节的示例中,将讲述如何扩展自定义的断言,来校验只有在至少包含了一个授权文档以及一个或多个策略表达的条件下,服务策略才能通过该变迁转换状态。
清单 1 策略 Policy Lifecycle - ServicePolicy -
AuthorizeForDevelopment Policy 的定义
<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns: WSRR gp="http://www.ibm.com.policy/GovernancePolicyDomain"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns: WSRR ="http://www.ibm.com/xmlns/prod/serviceregistry/6/2/wspolicy"
WSRR :policyClass="GPPolicy"
WSRR :policyClassDomain="http://www.ibm.com.policy/GovernancePolicyDomain">
< WSRR gp:ValidatorPolicy
WSRR gp:name="Policy Lifecycle - ServicePolicy
- AuthorizeForDevelopment Policy">
<wsp:Policy WSRR :policyClass="ValidatorPolicyContent"
WSRR :policyClassDomain=
"http://www.ibm.com.policy/GovernancePolicyDomain"
wsp:Name="urn:PolicyLifecycle_ServicePolicy
_AuthorizeForDevelopmentPolicy">
< WSRR gp:ContentApplicabilityFilter
WSRR gp:targetXPath=
"/ WSRR /GenericObject[@primaryType=
'http://www.ibm.com/xmlns/prod/serviceregistry/6/1/
TechnicalModel#ServicePolicy']" />
< WSRR gp: WSRR OperationFilter>
< WSRR gp: WSRR Operation>
TRANSITION</ WSRR gp: WSRR Operation>
</ WSRR gp: WSRR OperationFilter>
< WSRR gp:TransitionOperationFilter>
< WSRR gp:TransitionOperation>
http://www.ibm.com/xmlns/prod/serviceregistry/6/1/
GovernanceProfileLifecycle#AuthorizeForDevelopment
</ WSRR gp:TransitionOperation>
</ WSRR gp:TransitionOperationFilter>
< WSRR gp:EntityAssertionPolicy>
<wsp:Policy WSRR :policyClass="EntityAssertionClass"
WSRR :policyClassDomain=
"http://www.ibm.com.policy
/GovernancePolicyDomain">
< WSRR gp:EntityAssertion
WSRR gp:primaryType=
"http://www.ibm.com/xmlns/prod/
serviceregistry/6/1/TechnicalModel
#ServicePolicy">
<!-- Empty assertion to be extended by the customer to perform -->
<!-- addition checks when a ServicePolicy
[GenericObject] entity is Authorized For Development -->
</ WSRR gp:EntityAssertion>
</wsp:Policy>
</ WSRR gp:EntityAssertionPolicy>
</wsp:Policy>
</ WSRR gp:ValidatorPolicy>
</wsp:Policy>
|

 |

|
通过实例了解如何扩展策略增强治理能力
如上一节所述,JK 证券公司业务模型中定义的策略之一 Policy Lifecycle - ServicePolicy -
AuthorizeForDevelopment
Policy 并没有提供任何断言。也就是说,任何服务策略由 Author 状态经变迁 AuthorizeForDevelopment 转换时,并不会执行任何策略。通过下面的一个示例可以清楚地看到这一点。
打开前文中创建的名称为 Security Level I
Policy 的服务策略,并切换到 Governance 选项,如图 9 所示。
图 9 服务策略 Security Level I Policy
如图 10 所示,从状态变迁列表中,可以看到有5种变迁可供选择,但从前面的介绍中,已经知道只有 Initiate Policy
Life Cycle 对于服务策略来说是合适的。选择 Initiate Policy Life
Cycle ,点击 Govern 按钮。
图 10 状态变迁列表
此时,服务策略 Security Level I
Policy 的状态变为 Author ,可选择的状态变迁变为只有 Authorize For
Development ,如图 11 所示。
图 11 服务策略 Security Level I Policy 处于 Author 状态
确认选中 Authorize For
Development ,点击 Transition 按钮,出现如图所示界面。因为策略 Policy Lifecycle
- ServicePolicy - AuthorizeForDevelopment
Policy 并没有提供任何断言,也就是说,任何服务策略由 Author 状态经变迁 AuthorizeForDevelopment 转换时,并不会执行任何策略。这样服务策略 Security
Level I Policy 的状态成功地变为下一状态 Transform ,如图 12 所示。
图 12 服务策略 Security Level I Policy 处于 Transform 状态
下面为策略 Policy Lifecycle - ServicePolicy -
AuthorizeForDevelopment
Policy 自定义用户所需的断言。该断言策略描述了服务策略只有满足以下两个条件,才能够经变迁 AuthorizeForDevelopment 转变为 Transform 状态:
-
(1)断言一、授权文档 WSRR tm_authoritativeDocuments 包含且只能包含一个 WSDL 或策略文档;
-
(2)断言二、授权文档 WSRR tm_authoritativeDocuments 必须处于开发环境,对应的分类 URI 为 http://www.ibm.com/xmlns/prod/serviceregistry/6/1/
GovernanceProfileTaxonomy# Development ;
-
(3)断言三、策略表达 WSRR tm_itPolicies 至少包含一个 Policy
Expression 逻辑对象;
这些断言表达为清单 2 所示内容。你也可以从下载列表中获取全部内容。
清单 2 策略 Policy Lifecycle - ServicePolicy - AuthorizeForDevelopment Policy 自定义用户所需的断言
......
< WSRR gp:EntityAssertionPolicy>
<wsp:Policy WSRR :policyClass=
"EntityAssertionClass"
WSRR :policyClassDomain=
"http://www.ibm.com.policy/GovernancePolicyDomain">
< WSRR gp:EntityAssertion
WSRR gp:primaryType=
"http://www.ibm.com/xmlns/prod/
serviceregistry/6/1/TechnicalModel#ServicePolicy">
< WSRR gp:RelationshipAssertion
WSRR gp:relationshipName=
"WSRR tm_authoritativeDocuments"
WSRR gp:minCardinality="1" WSRR gp:maxCardinality="1"
WSRR gp:name=
"PolicyLifecyclePolicy.AuthoritativeDocumentsAssertion">
< WSRR gp:EntityAssertion
WSRR gp:entityType="PolicyDocument">
< WSRR gp:ClassificationAssertion>
< WSRR gp:Classification>
http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Development
</ WSRR gp:Classification>
</ WSRR gp:ClassificationAssertion>
</ WSRR gp:EntityAssertion>
</ WSRR gp:RelationshipAssertion>
< WSRR gp:RelationshipAssertion
WSRR gp:relationshipName=" WSRR tm_itPolicies"
WSRR gp:minCardinality="1"
WSRR gp:name="PolicyLifecyclePolicy
.PolicyExpressionDefinitionsAssertion">
</ WSRR gp:RelationshipAssertion>
</ WSRR gp:EntityAssertion>
</wsp:Policy>
</ WSRR gp:EntityAssertionPolicy>
......
|
打开上面创建的名称为 Security Level I
Policy 的服务策略,并切换到 Governance 选项,点击 Remove
Governance 按钮,重新初始化策略生命周期。服务策略 Security Level I
Policy 的状态变为 Author 后,可选择的状态变迁变为 Authorize For
Development ,然后点击 Transition 按钮,出现如图 13 所示界面。错误提示信息描述了服务策略 Security
Level I Policy 的授权文档的状态并不是期望的开发环境,即不满足上述断言的第二条。
图 13 服务策略 Security Level I Policy 的授权文档的状态并不是期望的开发环境
下面将授权文档 policy.xml 的状态修改为开发环境,点击 Edit
Classificaitons 链接进入如图 14 所示的界面。选择分类导航栏中的 Governance Profile
Taxonomy->Environment->Development ,然后点击 Add 按钮。 URI 为 http://www.ibm.com/xmlns/prod/serviceregistry/6/1/
GovernanceProfileTaxonomy#
Development 的类别将被附加到服务策略中,如图 15 所示。
图 14 授权文档 policy.xml 的状态
图 15 将授权文档 policy.xml 的状态修改为开发环境
为测试断言一,可以为服务策略 Security Level I
Policy 添加另外一个授权文档,如图 16 所示 SecurityPolicy.xml 和 policy.xml 都是授权文档。
图 16 为服务策略 Security Level I Policy 添加另外一个授权文档
切换到 Governance 选项,点击 Remove
Governance 按钮,重新初始化策略生命周期。服务策略 Security Level I
Policy 的状态变为 Author 后,可选择的状态变迁变为 Authorize For
Development ,然后点击 Transition 按钮,出现如图 17 所示界面。错误提示信息描述了服务策略 Security
Level I Policy 包含了多于1个的授权文档,即不满足上述断言的第一条。
图 17 服务策略 Security Level I Policy 包含了多于1个的授权文档
结束语
本文首先介绍了 WSRR V
6.2 中的 SOA 策略生命周期,以及在 WSRR 中如何基于 SOA 策略进行治理,最后深层次探究了 WSRR 背后基于策略的治理理念。
声明:本文仅代表作者个人之观点,不代表 IBM 公司之观点。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| 用户自定义的断言 | AuthorizeForDevelopmentPolicy.xml | 4 KB | HTTP |
|---|
参考资料
作者简介  | |  | 王夕宁:IBM 中国软件开发实验室 SOA (中国)设计中心的高级软件工程师,目前从事于 SOA Policy 及 SOA Governance 相关的工作,并参与了 WSRR 产品开发及其相关客户项目。他的主要技能和专长包括 SOA、Web 服务、J2EE、业务流程、模型驱动技术以及 Eclipse 开发等领域。可以通过 wangxn@cn.ibm.com 联系他。 |
 | |  | 刘昕鹏:
IBM专职软件工程师,工作在IBM中国软件开发实验室 - SOA Design Center,从事 SOA Policy 及 SOA Governance 相关的工作,对 J2EE、SOA、MDA/MDD、AOP、语义网等相关技术有浓厚兴趣。作者目前主要负责 SOA Policy Toolkits项目的设计与开发工作,并参与了WSRR V6.2的产品开发。
联系方式:xinpengl@cn.ibm.com。 |
 | |  | 薛 亮:IBM 资深软件工程师,工作在 IBM 中国软件开发实验室 - SOA Design Center,从事 SOA Policy 及 SOA Governance 相关的工作,对 J2EE、SOA、WSRR 等相关技术有浓厚兴趣。作者目前主要从事 SOA Policy Toolkit 项目的设计与开发工作。
联系方式:xueliang@cn.ibm.com。 |
对本文的评价
|