练习 3.5:对框架组件层进行建模

您在此练习中对 itso.ad.business 程序包的框架层进行建模。框架组件层将客户机接口从持久的应用程序数据和应用程序的实施中分离。框架组件层包含传送对象和代表接口,并包含代表工厂类和异常。

框架组件层包含以下表中的设计子程序包:

程序包 描述
exception 此子程序包包含 ServiceException 和 DataAccessException 异常类,这两个类提供 PiggyBank 在线银行系统的错误恢复。
factory 此子程序包包含 BusinessDelegateFactory 类,该类用于动态创建业务代表。
interfaces.delegates 此子程序包包含业务代表的接口。
interfaces.to 此子程序包包含传送对象的接口。

对传送对象接口进行建模

传送对象用作远程过程调用的返回类型。PiggyBank 传送对象在 PiggyBank 设计中的各层之间传输客户和帐户信息。此练习对传送对象接口进行建模。

要对 ICustomerTO 接口进行建模:
  1. 在“模型浏览器”视图中,展开 Enterprise IT Design Model,再展开“PiggyBank 实施设计”。
  2. itso.ad.business 子程序包中,右键单击“框架”程序包;然后单击“添加 UML > 程序包
  3. 将新程序包命名为 interfaces.to
  4. 在“模型浏览器”视图中,双击“”图并且添加标题“interfaces.to - 传送对象接口”。
  5. 在选用板中,双击“接口”并且将接口命名为 ICustomerTO
  6. 在图编辑器中,右键单击 ICustomerTO 类;然后单击“添加 UML > 操作”。
  7. 将操作命名为 getId
  8. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  9. 在“选择元素”窗口中,单击 String
  10. 在图编辑器中,右键单击 ICustomerTO 类;然后单击“添加 UML > 操作”。
  11. 将操作命名为 getName
  12. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  13. 在“选择元素”窗口中,单击 String

要对 IAccountTO 接口进行建模:
  1. 在选用板中,双击“接口”并且将接口命名为 IAccountTO
  2. 在图编辑器中,右键单击 IAccountTO 类;然后单击“添加 UML > 操作”。
  3. 将操作命名为 getBalance
  4. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  5. 在“选择元素”窗口中,单击 Integer
  6. 在图编辑器中,右键单击 IAccountTO 类;然后单击“添加 UML > 操作”。
  7. 将操作命名为 getNumber
  8. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  9. 在“选择元素”窗口中,单击 String

您已经对传送对象接口进行了建模。您的图看上去应该与下图相似:

传送对象接口图。

对代表接口进行建模

业务代表接口定义描述用于生成业务代表实施实例的业务代表方法和 factory 组件。IPiggyBankBusinessDelegate 接口定义 PiggyBank 业务逻辑的接口。AbstractBusinessDelegateFactory 类实例化 IPiggyBankBusinessDelegate 实例。

要对 IPiggyBankBusinessDelegate 接口进行建模:
  1. 在“模型浏览器”视图中,展开 Enterprise IT Design Model,再展开“PiggyBank 实施设计”。
  2. itso.ad.business 子程序包中,右键单击 framework 程序包;然后单击添加 UML > 程序包
  3. 将新程序包命名为 interfaces.delegates
  4. 在“模型浏览器”视图中,双击“”图并且添加标题“interfaces.delegates - 代表接口”。
  5. 在选用板中,双击“接口”并且将接口命名为 IPiggyBankBusinessDelegate

要对 cashCheck 操作进行建模:
  1. 在图编辑器中,右键单击 IPiggyBankBusinessDelegate 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 cashCheck ( accountToCredit, checkAmount, checkReference )
  3. 在“属性”视图的“参数”页上,单击 accountToCredit 参数的“类型”字段,然后将参数类型更改为 String
  4. 单击 checkAmount 参数的“类型”字段,然后将参数类型更改为 Integer
  5. 单击 checkAmount 参数的“类型”字段,然后将参数类型更改为 String

要对 getAccountByCustomer 操作进行建模:
  1. 在图编辑器中,右键单击 IPiggyBankBusinessDelegate 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 getAccountByCustomer ( customer )
  3. 在“属性”视图的“高级”页的“多重性”旁,单击 1..-1 旁的向下箭头,然后单击 1..*
  4. 在“常规”页上,选择“有序”复选框,清除“唯一”复选框,并单击“设置返回类型”。
  5. 在“选择元素”窗口中,展开 itso.ad.business,再展开“框架”,接着在“interfaces.to 程序包”中,单击 IAccountTO

要对 getBalance 操作进行建模:
  1. 在图编辑器中,右键单击 IPiggyBankBusinessDelegate 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 getBalance ( accountNumber, customer )
  3. 在“属性”视图的“参数”页上,单击 accountNumber 参数的“类型”字段,然后将参数类型更改为 String
  4. 单击 customer 参数的“类型”字段,然后将参数类型更改为 ICustomerTO
  5. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  6. 在“选择元素”窗口中,单击 Integer

要对 getCustomerById 操作进行建模:
  1. 在图编辑器中,右键单击 IPiggyBankBusinessDelegate 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 getCustomerById ( customerId )
  3. 在“属性”视图的“参数”页上,单击 customerId 参数的“类型”字段,然后将参数类型更改为 String
  4. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  5. 选择元素窗口中,展开 itso.ad.business,再展开 framework,然后在 interfaces.to 程序包中,单击 ICustomerTO

要对 transfer 操作进行建模:
  1. 在图编辑器中,右键单击 IPiggyBankBusinessDelegate 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 transfer ( amountToTransfer, creditAccount, customer, debitAccount )
  3. 在“属性”视图的“参数”页上,单击 amountToTransfer 参数的“类型”字段,然后将参数类型更改为 Integer
  4. 单击 creditAccount 参数的“类型”字段,然后将参数类型更改为 String
  5. 单击 customer 参数的“类型”字段,然后将参数类型更改为 ICustomerTO
  6. 单击 debitAccount 参数的“类型”字段,然后将参数类型更改为 String
  7. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  8. 在“选择元素”窗口中,单击 Boolean

要对 AbstractBusinessDelegateFactory 接口进行建模:
  1. 在选用板中,双击“接口”并且将接口命名为 AbstractBusinessDelegateFactory
  2. 在图编辑器中,右键单击 AbstractBusinessDelegateFactory 类;然后单击“添加 UML > 操作”。
  3. 将操作命名为 createPiggyBankBusinessDelegate
  4. 在“属性”视图的“常规”页上,单击“设置返回类型”。
  5. 在“选择元素”窗口中,展开 itso.ad.business,再展开“框架”,接着在“interfaces.delegates 程序包”中,单击 IPiggyBankBusinessDelegate,然后单击“确定”。

您已经对代表接口进行了建模。注意:getAccountsByCustomer 和 getCustomerById 操作返回您在前一个练习中创建的传送对象接口。您的图看起来应该与下图相似:

业务代表接口图。

对 BusinessDelegateFactory 进行建模

BusinessDelegateFactory 类用于动态创建代表工厂实例。

要对 BusinessDelegateFactoryClass 接口进行建模:
  1. 在“模型浏览器”视图中,展开 Enterprise IT Design Model,再展开“PiggyBank 实施设计”。
  2. itso.ad.business 子程序包中,右键单击 framework 程序包;然后单击添加 UML > 程序包
  3. 将新程序包命名为 factory
  4. 在“模型浏览器”中,双击“”图并且添加标题“factory - BusinessDelegateFactory 抽象实施”。
  5. 在选用板中,双击“”并且将类命名为 BusinessDelegateFactory
  6. 在“属性”视图的“常规”页上,选择“抽象”复选框。

要对 delegateFactory 属性进行建模:
  1. 在图编辑器中,右键单击 BusinessDelegateFactory 类;然后单击“添加 UML > 属性”。
  2. 将属性命名为 delegateFactory
  3. 在“属性”视图的“常规”页上,单击“选择类型”。
  4. 在“选择元素”窗口中,展开 itso.ad.business,再展开“框架”,接着在“interfaces.delegates 程序包”中,单击 AbstractBusinessDelegateFactory
  5. 在“属性”视图的“常规”页上,单击“静态”。

要对 getInstance 操作进行建模:
  1. 在图编辑器中,右键单击 BusinessDelegateFactory 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 getInstance
  3. 在“选择元素”窗口中,展开 itso.ad.business,再展开“框架”,接着在“interfaces.delegates 程序包”中,单击 AbstractBusinessDelegateFactory
  4. 在“属性”视图的“常规”页上,单击“静态”。

要对 init 操作进行建模:
  1. 在图编辑器中,右键单击 BusinessDelegateFactory 类;然后单击“添加 UML > 操作”。
  2. 将操作命名为 init ( factoryClassName )
  3. 在“属性”视图的“参数”页上,单击 factoryClassName 参数的“类型”字段,然后将参数类型更改为 String
  4. 在“属性”视图的“常规”页上,单击“静态”。
  5. 在“模型浏览器”视图的 interfaces.delegate 子程序包中,单击 AbstractBusinessDelegateFactory 接口,并将它拖动到该图中。
  6. 在选用板中,单击“实施”。
  7. 在图编辑器中,单击 BusinessDelegateFactory 类并将它拖动到 AbstractBusinessDelegateFactory 类。

您已经对 itso.ad.business 层工厂类进行了建模。您的图看上去应该与下图相似:

业务代表工厂抽象实施。

对 itso.ad.business framework exception 进行建模

framework 组件层包含两个异常的实施:DataAccessException(只要业务层中发生错误,就抛出它)和 ServiceException(它会因为服务丢失而发生)。

要对 DataAccessException 和 ServiceException 类进行建模:
  1. 在“模型浏览器”视图中,展开 Enterprise IT Design Model,再展开“PiggyBank 实施设计”。
  2. itso.ad.business 子程序包中,右键单击 framework 程序包;然后单击添加 UML > 程序包
  3. 将新程序包命名为 exception
  4. 在“模型浏览器”视图中,双击“”图并且添加标题“异常”。
  5. 在选用板中,双击“”并且将类命名为 DataAccessException
  6. 在选用板中,双击“”并且将类命名为 ServiceException

您已经对 itso.ad.business 框架组件层进行了建模。框架层是一个隔离层,向 PiggyBank 实施隐藏 PiggyBank 客户机接口。您现在可以通过将 factory 程序包拖动到 itso.ad.business 设计元素图中,来完成该图。以用途关系将 delegate.ejb 程序包连接到 factory 程序包。以关联关系将 factory 程序包连接到 framework 程序包。您的图看上去应该与下图相似:

itso.ad.business 设计元素程序包图。

要继续,请进入练习 3.6:对 EJB 组件子程序包进行建模

使用条款 | 反馈
(C) Copyright IBM Corporation 2004, 2005. All Rights Reserved.