IBM® Rational® Rhapsody® には、パッケージ・インスタンスを初期化した後で、これらのインスタンスがイベントに反応する前に、パッケージ関係を初期化するコードを指定できるプロパティーがあります。より一般的な使用法として、このプロパティーに、モデル内の各パッケージに対する任意の初期化コードを指定できます。このプロパティーによって、パッケージをまたがる関係を、関係に参加する任意のパッケージからでも、関係に参加しないパッケージからでも初期化できます。
以下のプロパティーがパッケージ初期化コードを規定します。
- CG::Package::AdditionalInitialization - パッケージ initRelations() メソッドの実行後に実行する追加初期化コードを指定します。
- CG::Component::InitializationScheme - 初期化を行うレベルを指定します。考えられる値は以下のとおりです。
- ByPackage - 各パッケージが自身の初期化を行います。コンポーネントは、各パッケージ・クラスの属性の宣言のみ行う必要があります。これが、デフォルト・オプションで、
製品の以前のモデルとの互換性を維持します。
- ByComponent - コンポーネントは、そのすべてのパッケージで宣言されているすべてのグローバル関係を初期化する必要があります。これは、各パッケージの initRelations()、追加の初期化、および startBehavior() のコンポーネント・クラス・コンストラクター内で、明示的な呼び出しで行う必要があります。
以下の例は、InitializationScheme プロパティーが ByPackage に設定されたときにモデルから生成される C++ コードを示します。
以下に、コンポーネント・コードの例を示します
class DefaultComponent {
private :
P1_OMInitializer initializer_P1;
P2_OMInitializer initializer_P2;
};
以下に、P1 パッケージ・コードの例を示します。
P1_OMInitializer::P1_OMInitializer() {
P1_initRelations();
< P1 AdditionalInitializationCode value>
P1_startBehavior();
}
以下の例は、InitializationScheme プロパティーが ByComponent に設定されている場合に生成される C++ コンポーネント・コードを示しています。
DefaultComponent::DefaultComponent() {
P1_initRelations();
P2_initRelations();
< P1 AdditionalInitializationCode value>
< P2 AdditionalInitializationCode value>
P1_startBehavior();
P2_startBehavior();
}