IBM® Rational® Rhapsody® に用意されている定義済み内部チェックと同様に、コード生成時に外部チェックを呼び出すかどうかを定義できます。また、どのメタクラスに対して外部チェックを実行するかを定義できます。
Rational Rhapsody API を使用してユーザー定義の外部チェックを実装し、Rational Rhapsody の GUI を使用して、外部チェックを実行できます。内部チェックと外部チェックのいずれの場合も、製品の同じ GUI を使用してチェックを実行し、結果を表示します。
Rational Rhapsody には、ユーザー定義外部チェックの登録、列挙、削除のための API が用意されています。それは、C++ および VB ユーザー向けの COM API、および Java ユーザー向けの Java API です。チェックの実行時に、COM コールバック (接続点) を使用して、ユーザー定義コードを開くことができます。この機能は、COM API または Java API を使用するユーザーのために用意されており、ユーザー定義チェックの追加、実行または削除を行うことができます。
チェック対象のメタクラス (または new term) を指定すると、チェックが呼び出され、指定したメタクラスの要素がチェックされます。
例えば、COM API ユーザーがユーザー定義チェックを作成するには、次の手順を行います。
下表に、ユーザー定義チェック用に実装する必要がある、インターフェースのメソッドを示します。
| メソッド | 説明 |
|---|---|
| GetName() | 名前属性を文字列として返します。 |
| GetDomain() | ドメイン属性を文字列として返します。 |
| GetSeverity() | 定義済みの重大度文字列 Error、Warning、Info のいずれかを返します。 |
| IsCompleteness() | 完全性のチェックの場合は TRUE を返し、それ以外の場合 (正確さのチェック) は FALSE を返します。 |
| ShouldCallFromCG() | コード生成時に、このチェックの呼び出す場合は、TRUE を返します。 |
| GetRelevantMetaclasses() | 関連メタクラス、用語、またはこの両方のリストを返します。このチェックは、メタクラスが返される現行構成のスコープ内の要素に対して、Rational Rhapsody によって開始されます。 |
| Execute() | Rational Rhapsody がこのチェックを呼び出して実行します。このルーチンでは、チェックが合格の場合は TRUE、不合格の場合は FALSE が返されます。このチェックは次の 2 つのパラメーターをとります。
|
コードは COM クライアントで提供します。
IBM Rational Rhapsody は、プラグイン・メカニズムを使用して、通常は HEP ファイルまたは INI ファイルで、コードをロードします。通常、HEP ファイルは関連するプロジェクトまたはファイルの次に追加されています。例えば、Java プラグインを作成するユーザーは、Rational Rhapsody Java API を使用してプラグインを作成し、次の例で示すような HELP ファイルを提供します。
[Helpers]
numberOfElements=1
name1=ExternalChecks
JavaMainClass1=JavaPlugin.ExternalChecks
JavaClassPath1=$OMROOT¥..¥DoDAF
Java および VB 用のチェック・プロジェクト例が Rational Rhapsody のインストール・パスの ExternalChecksSample サブフォルダーに用意されています (<製品のインストール・フォルダー>¥Samples¥ExtensibilitySamples¥ExternalChecksSample など)。
ユーザー定義チェックを削除するには、IRPExternalCheckRegister の Remove メソッドを使用して、クラスを削除します。IRPApplication のメソッドを使用してこの singleton を取得します。