就像 IBM® Rational® Rhapsody® 提供的预定义内部检查一样,您可以定义代码生成功能是否调用外部检查。另外,还可以定义要对哪些元类执行外部检查。
可以通过 Rational Rhapsody API 来实现用户定义的外部检查,并可以使用 Rational Rhapsody 中的现有 GUI 来运行这些检查。无论是内部检查还是外部检查,这些检查都将执行,并且它们的结果将通过产品中的同一个 GUI 显示。
Rational Rhapsody 提供了一个 API,允许通过使用 COM API(对于 C++ 和 VB 用户)和 Java API(对于 Java 用户)来注册、枚举和除去用户定义的外部检查。COM 回调(连接点)允许您在执行检查时打开用户定义的代码。此功能适合于那些使用 COM API 或 Java API 的用户,因此,您可以添加、执行或除去用户定义的检查。
您确定所要检查的元类(或新项),这将调用您的检查以检查这些元类的元素。
例如,如果 COM API 用户要创建用户定义的检查,请完成下列步骤:
下表列示了此接口中必须为用户定义的检查实现的方法的列表。
| 方法 | 说明 |
|---|---|
| GetName() | 以字符串形式返回 name 属性。 |
| GetDomain() | 以字符串形式返回 domain 属性。 |
| GetSeverity() | 返回其中一个预定义的严重性字符串:Error、Warning 或 Info。 |
| IsCompleteness() | 对于完整性检查返回 TRUE,对于正确性检查返回 FALSE。 |
| ShouldCallFromCG() | 如果必须在用户生成代码时调用此检查,那么返回 TRUE。 |
| GetRelevantMetaclasses() | 返回相关元类和/或项的列表。此检查将由 Rational Rhapsody 针对当前配置的作用域中任何返回了相应元类的元素启动。 |
| Execute() | 由 Rational Rhapsody 调用,用于运行检查。如果此检查成功,那么此例程将返回 TRUE;如果此检查失败,那么此例程将返回 FALSE。此例程有两个参数:
|
您在 COM 客户机中提供代码。
IBM Rational Rhapsody 使用插件机制来装入代码,并且通常随之一起装入 HEP 文件或 INI 文件。通常,您已添加 HEP 文件并将其与相关的项目或文件放在一起。例如,编写 Java 插件的用户将使用 Rational Rhapsody Java API 来编写插件并提供类似于以下示例的 HELP 文件。
[Helpers]
numberOfElements=1
name1=ExternalChecks
JavaMainClass1=JavaPlugin.ExternalChecks
JavaClassPath1=$OMROOT\..\DoDAF
在 Rational Rhapsody 安装路径的 ExternalChecksSample 子文件夹(例如 < 产品安装文件夹>\Samples\ExtensibilitySamples\ExternalChecksSample)中,提供了用于 Java 和 VB 的样本检查项目。
要除去用户定义的检查,请使用 IRPExternalCheckRegister 的 Remove 方法来除去类。您可以通过 IRPApplication 的方法获取这个单实例。