| 在 SOA 开发中使用 WBSF 动态调用业务服务,第 2 部分(上) |
|
| 作者是 Administrator | |||||||||||||||||
| 2008-02-21 06:04:17 | |||||||||||||||||
|
在上一篇文章中,我们介绍了 WBSF 动态调用业务服务的基本概念和工作原理。WBSF 让我们在 SOA 开发中能够根据服务策略动态调用业务服务。WBSF V6.02 提供了 SCA 编程模型,让开发业务服务更加灵活,方便。本文通过一个具体的例子,介绍如何通过 WBSF V6.02 的 SCA 编程模型动态调用业务服务。我们将基于上下文属性制定服务策略;在 ResponseListener 扩展中设置基于服务内容的断言;通过 ContextExtractor 扩展更新事务中的上下文属性;
图 1 创建 AccountQueryModule 项目
在 AccountQueryModule 中新建 AuthorizaitonService 接口,该接口包括 getServiceLevel 方法,如图 2 所示: 图 2 创建 AuthorizationService 接口
打开 AccountQueryModule 的 Assembly Diagram,添加 AuthorizationService_HTTPBA 组件,该组件模拟采用 HTTP 基本认证方式的授权服务。为该组件添加 AuthorizaitonService 接口,如图 3 所示。双击组件,实现类型选择”java”。主要实现代码如示例 1 所示。 示例 1 AuthorizationService_HTTPBA 组件实现
图 3 为组件添加 AuthorizationService 接口
按照同样的步骤,在 Module 中添加实现 AuthorizationService 接口的 java 组件 AuthorizationService_HTTPS,该组件模拟采用 HTTPS 认证方式的授权服务。其主要实现代码如示例 2 所示。 示例 2 AuthorizationService_HTTPS 组件实现
为上面创建的两个组件生成 web service 导出,如图 4 所示: 图 4 为 AuthorizationService 组件生成 Web Service 导出
在 AccountQueryModule 中新建 AccountQueryService 接口,该接口包括 getAmount 方法,如图 5 所示: 图 5 AccountQueryService 接口
按照与 AuthorizationService 同样的方法,在 Module 中创建实现 AccountQueryService 接口的 java 组件:AccountQueryService_Advanced, AccountQueryService_Basic,并为之生成 Web Service 导出。 AccountQueryService_Advanced 组件模拟处理能力较强的查询服务,其实现的主要代码如示例 3 所示。
AccountQueryService_Basic 组件模拟普通处理能力的查询服务,其实现的主要代码如示例 4 所示。 示例 4 AccountQueryService_Basic 组件实现
登录 Fabric Web 控制台,依次选择”My Service”=>” Governance Manager”=>”Configure Projects”,点击在右下角的”Create Project”按钮,创建 BankingAccount 项目,项目配置如图 6 所示: 图 6 在 Governance Manager 中创建 BankingAccount 项目
选择”Configure Projects”,点击进入 BankingAccount 项目,在”Namespace” Tab 中为项目创建 Instance 类型的 BankingAccount_Instance 名称空间,配置如图 7 所示: 图 7 配置 instance 名字空间
同样为 BankingAccount 项目创建 Enrollment 类型的 BankingAccount_Enrollment 名称空间,如图 8 所示: 图 8 配置 Enrollment 名字空间
打开 WID,切换至 Business Service Perspective,右键选择”新建”=>”Fabric 项目”启动 Fabric 项目创建向导,如图 9 所示: 图 9 在 Composite Studio 中创建 Fabric 项目
在向导中选择连接到步骤 1 中创建的 BankingAccount 项目,如图 10 所示: 图 10 选择连接到 BSR 的 Fabric 项目
在向导中点击”Finish”按钮,完成项目创建,Composite Studio 将 Business Service Repository 中存储的 BankingAccount 项目同步至本地。 在 Composite Studio 中右键单击 BankingAccountFAC 项目,选择”新建”=>”组合服务”,启动组合服务创建向导,将 AccountQueryModule 中的服务元数据导入至 BankingAccountFAC 项目的 BankingAccount_Instance 名字空间下,如图 11 所示: 图 11 导入组合服务
点击”Finish”按钮,完成组合服务导入,将 AccountQueryService 的两个 endpoint 名称分别修改为 AccountQueryService_Advanced, AccountQueryService_Basic, 将 AuthorizationService 的两个 endpoint 名称分别修改为 AuthorizationService_HTTPBA, AuthorizationService_HTTPS,生成的服务元数据如图 12 所示: 图 12 Fabric 项目服务元数据列表
在 Business Service Perspective 中选择业务资源管理器,右键单击 BankingAccountFAC 项目,选择”新建”=>”策略”, 启动策略创建向导,配置 Policy 如图 13 所示: 图 13 新建服务策略
点击”Next”按钮,在策略上下文对话框中,选择匹配的上下文对象为”门户网站通道”,如图 14 所示: 图 14 为策略添加上下文条件
点击”Finish”, 完成 Policy 创建,选择 Policy 的合同 Tab,在”安全性”中添加 HTTP 基本认证断言,其值选择”必需”,如图 15 所示: 图 15 在合同中添加 HTTP 基本认证安全性断言
按照同样的步骤,创建 ChannelSecurityPolicy_HTTPS 策略,在上下文页中选择 Web Service 通道,在合同页中添加 HTTPS 客户机认证断言,其值选择”必需”。
在 Composite Studio 中选择业务服务资源管理器,双击 AuthorizationService_HTTPBA endpoint,在断言 Tab 中添加 HTTP 基本认证安全性断言,在环境 Tab 中将 endpoint 添加至 Default 环境中。 以同样的步骤,为 AuthorizationService_HTTPS endpoint 添加 HTTPS 客户机认证安全性断言,并将其添加至 Default 环境。 以同样的步骤,在 AccountQueryService_Advanced endpoint 的断言 Tab 中选择”互操作性”栏,添加”工作单元”断言,其值设为 400,我们用此断言表明服务的处理能力大于 400 个工作单元。同样将 endpoint 添加至 Default 环境中。 以同样的步骤,为 AccountQueryService_Basic endpoint 添加”工作单元”断言,其值设为 200,同样将 endpoint 添加至 Default 环境中。
在业务服务资源管理器中右键单击 BankingAccountFAC 项目,选择”新建”=>”应用程序套件”,如图 16 所示: 图 16 新建应用程序套件
在业务服务资源管理器中右键单击 BankingAccountFAC 项目,选择”新建”=>”应用程序”,如图 17 所示: 图 17 创建应用程序
在业务服务资源管理器中右键单击 BankingAccountFAC 项目,选择”新建”=>”业务服务”,启动业务服务向导。在服务类别中选择”流程服务”,具体配置如图 18 所示: 图 18 创建流程服务
在通道选项中添加门户网站通道和 Web Service 通道,如图 19 所示: 图 19 为流程服务添加通道
在角色选项中添加”客户”角色,如图 20 所示。这就规定了只有属于客户角色的用户能够预订该业务服务。 图 20 为流程服务添加使用者角色
点击”Finish”按钮,完成业务服务创建。
在 Composite Studio 的”存储库更改”视图中,右键单击 BankingAccountFAC, 选择”提交更改列表”,提交所有的更改。 登录 WBSF Web 控制台,选择”Governance Manager”=>”管理更改”,查找到上面提交的更改,批准并发布提交的更改。
登录 WBSF Web 控制台,选择”Subscriber Manager”=>”管理注册”,在组织中选择”IBM”, 为其注册 BankingAccountApp 下的 /AccountQuery Service 业务服务 转到” Subscriber Manager”=>”管理订户”, 点击查看 IBM 组织中的 admin 用户,确保其所属角色中包含”Customer”,这样 admin 用户才能预订 AccountQuery Service 服务。 转到” Subscriber Manager”=>”管理预订”,选择组织为 IBM,为用户 admin 预订通过 Portal 通道和 WS 通道使用 AccountQuery Service 服务,如图 21 所示: 图 21 预订业务服务
转到” Subscriber Manager”=>”管理订户”,点击查看 IBM 组织中的 admin 用户,在”预订”Tab 中点击右下角”保存预订”按钮,然后点击左上角”查看预订按钮”,可以查看 admin 分别通过 Portal Channel 和 WS Channel 预订 AccountQuery Service 的 Subscription ID,如图 22 所示: 图 22 查看订户的预订列表
由于篇幅的问题,本文分为两部分,请您继续访问下半部分。 学习
获得产品和技术
讨论
|
|||||||||||||||||
| 最近更新 ( 2008-02-21 06:04:17 ) | |||||||||||||||||

