第4章
「プロジェクト」は、XMLベースのB2B統合サービスを実行するために設計されたComposerオブジェクトの集合です。 プロジェクトでは、作成しているアプリケーションのオブジェクトがすべて保持されます。プロジェクトは、exteNd Serverに展開される単位です。アプリケーションサーバに展開できるプロジェクトの数に制限はありません。
プロジェクトの各部分は、次の図のとおりです。

サービスは、作成するさまざまなコンポーネントを結合して、exteNd Serverに対する展開のロジック単位を作成するために使用されます。サービスは、exteNd Server内で実際に実行されるオブジェクトです。Webサービスは、サービストリガオブジェクトにより開始され、XMLドキュメントを入力として受け付け、出力としてXMLドキュメントを返します。JMSサービスは、メッセージを入力として受け付け、メッセージがキューに入るとトリガされます。 詳細については、新しいサービスの作成を参照してください。
「コンポーネント」は、1つまたは複数のXMLドキュメントを入力として受け付け、入力で動作するアクションの集合を使用し、XMLドキュメントを出力として返すxObjectです。
通常、コンポーネントは「サービス」内で呼び出され、アクションまたはその他のコンポーネントへの呼び出しを含むことができます(サービスは、基本的にコンポーネントの集合です)。
コンポーネントの機能、作成方法、および設計上で基盤となる原理の詳細については、XMLマップコンポーネントの作成を参照してください。
リソースは、専用の操作を実行するxObjectです。これらは、タスクを実行できるようにするためにサービスとコンポーネントによって使用されます。リソースのタイプには、コードテーブル、コードテーブルマップ、接続、およびカスタムスクリプトがあります。
XMLテンプレートには、コンポーネントを設計およびテストする際に便利なサンプルドキュメント、スキーマ、およびスタイルシートが含まれています。 まず、類似のXMLテンプレートを含むXMLカテゴリを作成します。 次に、XMLテンプレートを作成し、作成するコンポーネントの入力および出力としてそのテンプレートを使用します。 詳細については、XMLテンプレートについてを参照してください。
Composerを初めて起動すると、チュートリアルと呼ばれるサンプルプロジェクトがロードされます。独自のアプリケーションを起動する場合は、新しい空のプロジェクトを作成して起動します。
[ファイル]、[新規]、[プロジェクト]の順にクリックします。すると、[New Project]ダイアログボックスが表示されます。
[プロジェクト名]にプロジェクト名を入力します。これは必須のフィールドです。Composerにより、プロジェクト名の拡張子である「.spf」が追加されます。
[参照]を選択して、プロジェクトを保存するフォルダを検索します。[プロジェクト場所]ダイアログボックスが表示されます。
注記: プロジェクトが開いている場合、[プロジェクト場所]ダイアログボックスには、開いているプロジェクトが保存されているフォルダがデフォルトで表示されます。
新しいプロジェクトを保存する
新しいフォルダを作成するには、[新規フォルダ]アイコンをクリックします。
現行ディレクトリ内のフォルダリストに、新たに「新しいフォルダ」という名前のフォルダができます。 これをクリックすると強調表示になり、もう一度クリックするとフォルダ名を変更できるようになります。
[OK]をクリックします。 すると、新しく作成したフォルダが[検索対象:]フィールドに表示された状態で、[ファイルの場所]ダイアログボックスが表示されます。
注記: [プロジェクト場所]ダイアログボックスの[ファイル名]には、手順2で指定したプロジェクト名がデフォルトで表示されます。
[OK]をクリックします。すると、新しく作成した「プロジェクト名」と「プロジェクトの場所」が表示された[新規プロジェクト]ダイアログボックスが現れます。
ダイアログボックスの最下部にあるテキストフィールドに、「展開コンテキスト」文字列を入力します。この文字列には、「com.server.apps」のような、ピリオドで区切られたラベル(スペースなし)を含める必要があります。
注記: コンテキスト文字列には、try、catch、finally、int、forなどのJava言語キーワードを含むことはできません。Javaキーワードの完全なリストについては、付録予約語を参照してください。
[OK]をクリックします。すると、タイトルバーで作成したプロジェクトの名前が表示されたComposerウィンドウが現れます。
プロジェクトは、次の方法で開くことができます。
[ファイル]、[プロジェクトを開く]の順にクリックします。すると、[プロジェクトを開く]ダイアログボックスが表示されます。
[参照]ボタンをクリックします。また、開くプロジェクトのパスを入力することもできます。[プロジェクト場所]ダイアログボックスが表示されます。
[OK]をクリックします。すると、選択したプロジェクトのパスが[プロジェクトファイル]フィールドに表示された[プロジェクトを開く]ダイアログボックスが現れます。
[OK]をクリックします。すると、タイトルバーで開いたプロジェクトの名前が表示されたComposerウィンドウが現れます。
注記: プロジェクトは、[ファイル]メニューの[最近のプロジェクト]リストから選択して開くこともできます。
起動オプションとして、Composerは、コマンドラインモードでXC.exeを実行して起動し、次のようなプロジェクト名パラメータを指定することができます。
C:\exteNd\Composer\Bin\xc myproject
この例では、myproject.spfという名前のプロジェクトファイルでXC.exeが実行されます。
Composerを起動すると、最後に作業したプロジェクトが自動的にロードされます。 プロジェクトファイルを移動した場合や、アクセス不可能な別のユーザのプロジェクトにアクセスしようとした場合は、Composerによってプロジェクトは見つけられません。
起動時に、Composerでは、開くプロジェクトファイルの名前の最初のコマンドラインパラメータを使用します。コマンドラインパラメータが省略されている(または不正である)場合、Composerでは、開くプロジェクトの名前として、xconfig.xmlのDEFAULTPROJECTFILENAMEを使用します。コマンドラインオプションが省略されているか無効であり、DEFAULTPROJECTFILENAMEも省略されているか無効である場合、Composerによって[プロジェクトを作成/開く]ダイアログボックスが表示されます。

[プロジェクトを作成/開く]ダイアログボックスでは、新しいプロジェクトを作成したり、既存プロジェクトを開いたり、Composerを完全に終了したりすることができます。また、このダイアログボックスには、初期プロジェクトを開けなかった場合のエラー情報も表示されます。
[プロジェクトを作成/開く]ダイアログボックスで、次のいずれかを実行します。
[終了]ラジオボタンをオンにして、終了します。プロジェクトファイルの保存場所の詳細については、プロジェクトファイルの保存場所についてを参照してください。
exteNd Composerを使用すると、プロジェクト全体とそのオブジェクトをすべてディスクドライブから削除できます。また、プロジェクトは通常のディレクトリ構造で保存されているため、Windowsの標準の削除機能を使用して削除することもできます。いずれの場合も、削除を行った場合、プロジェクトは完全に破棄され、exteNdで復元することはできません。
xObject は、すべてのXML統合サービスの構成要素です。プロジェクトコンポーネントは、次のいずれかの方法で作成できます。
xObjectは、メニューバーから作成し、コンポーネントで使用できます。
[ファイル]メニューから、[新規]>[xObject]の順に選択します。 あるいは、ナビゲータペインに表示されている、作成したいxObjectのタイプ上で右クリックし、コンテキストメニューから[新規]を選択するという方法もあります。
作成したいxObjectのタイプに対応するタブに切り替えます。 [プロセス/サービス]、[コンポーネント]、[リソース]、または[テンプレート]の中から選んでください。
[プロセス/サービス]を選んだ場合、新たにWebサービスを作成することになります。 インストールしているサービスによっては、ほかにも選択肢があるかも知れません。
[コンポーネント]を選択した場合は、コンポーネントタイプを選択します。 表示される選択肢は、インストールしたConnect製品によって異なります。
[リソース]を選択した場合は、リソースタイプを選択します。 いくつかの選択肢がありますが、やはりインストールしたConnect製品により、表示される選択肢は異なります。
[テンプレート]を選択した場合は、新たにテンプレートカテゴリを作成するか、あるいはテンプレートそのものを作成するかを次に選択します。
xObjectは、タイプに応じてComposer内の適切なカテゴリに配置されます。
注記: 作成したxObjectは、XMLファイルとしてハードディスクに保存されます。保存場所は、xObjectが属するカテゴリと同じ名前のディレクトリとなります。
現在のプロジェクトに既存のxObjectがある場合、ComposerメインウィンドウからそれらのxObjectを開いて、コンテンツを編集または表示できます。
既存のxObjectを開くには、[ファイル]メニューから[開く]を選択します。 あるいは、インスタンスペインでxObjectを選択し、<Ctrl>-<O>キーを押すこともできます。 どちらの場合も、[xObjectを開く]ダイアログが開きます。
xObjectが独自のウィンドウで開きます。
注記: xObjectを直接開きたい場合は、インスタンスペインでそのxObjectをダブルクリックするか、あるいは選択して右クリックし、コンテキストメニューから[開く]を選択してください。
xObjectは、開くだけでなく、別のプロジェクトや場所からインポートすることもできます。
注記: 作成したxObjectは、XMLファイルとしてハードディスクに保存されます。保存場所は、xObjectが属するカテゴリと同じ名前のディレクトリとなります。 xObjectをインポートするには、次の手順に従ってxObjectのXMLファイルを選択します。
[ファイル]メニューから、[XObjectのインポート]を選択します。すると、[XObjectのインポート]ダイアログボックスが表示されます。
xObjectのパスとファイル名を入力するか、または[参照]をクリックしてxObjectを検索します。 または「http://」、「https://」、または「ftp」という文字列をファイル名の前に入力することによりURLを指定してファイルを読み込むこともできます。
xObjectは、タイプに応じてComposer内の適切なカテゴリに配置されます。
すべてのxObjectには、プロパティが関連付けられています。プロパティには、名前、説明(ヘッダ情報)、およびxObjectタイプに固有なその他の情報があります。
注記: マウスを右クリックして、コンテキストメニューから[プロパティ]を選択することもできます。
xObjectのプロパティは、表示するだけでなく印刷することもできます。xObjectを印刷すると、印刷日時の他に、xObjectの名前、およびすべてのヘッダとxObjectタイプに固有なその他の情報が含まれます。
コンポーネントのプロパティを印刷すると、コンポーネントのDOM構造(DOMとはを参照)やアクションモデル(アクションモデルペインについてを参照)に関するデータがすべて含まれます。
[ファイル]メニューから、[印刷]を選択します。 あるいは、インスタンスペインでxObjectを選択し、<Ctrl>-<P>キーを押しても印刷できます。 どちらの場合も、[印刷]ダイアログが開きます。
最初にxObjectを選択してから印刷することもできます。
xObjectの名前を変更するには、xObjectを右クリックし、[名前変更]を選択します。テキストフィールドに新しい名前を入力します。
注記: [プロパティ]ページでxObjectの名前を変更すると、[名前を付けて保存]操作が行われるため、元のxObjectはそのまま維持され、新しい名前を持つコピーが作成されます。xObjectの名前だけを変更するには、コンテキストメニューの[名前変更]オプションを使用します。
xObjectを削除するには、xObjectを右クリックし、[削除]を選択します。続けて、xObjectを削除することを確認します。
大規模なプロジェクトになると、これに含まれるサービス、コンポーネント、リソース、あるいはXMLテンプレートの数も多くなります。 膨大な数のオブジェクトから必要な情報を見つけ出すのは、時に非常に難しいこともあります。 [検索]ダイアログボックスを使用すると、xObject、オブジェクト内のテキスト、または特定のXMLテンプレートやコンポーネントを参照するオブジェクトを検索できます。
[格納テキスト]には、検索文字列を直接入力します。 プロジェクトに登録されたすべてのxObjectが検索対象になります。 オブジェクト名だけでなく、その中身のテキスト全体が検索されます。 必要に応じて[大文字と小文字を無視する]のオン/オフも切り替えてください。
[名前]をオンにすれば、プロジェクトに登録されたxObjectを名前で検索できます。 ワイルドカードとしてアスタリスク(*)も使えます。複数含まれていても構いません。
[コンポーネントの使用]をオンにすれば、コンポーネントタイプで検索できます。必要ならばさらに名前で絞り込むことも可能です。 たとえば「Webサービス」コンポーネントを指定した場合、当該Webサービスを呼び出すようなアクションを持つコンポーネントも、やはり検索の対象になります。 同様に、プロセスマネージャがインストールされている場合、「プロセス」コンポーネントを指定して検索すれば、当該プロセスを呼び出して使うサブプロセスも検索の対象になります。
[リソースの使用]をオンにすると、コードテーブル、コードテーブルマップ、接続、JSP、XMLスキーマ、カスタムスクリプト、サービスプロバイダ、サービスプロバイダタイプ、WSDL、およびWSILなど、特定の「リソース」タイプのオブジェクトから検索するようになります。
見つかった場合、ターゲットxObjectは、Composerメインウィンドウの[検索]タブにリスト形式で表示されます。 検索結果リストに表示されたコンポーネントやオブジェクトは、ダブルクリックして開くことができます。ナビゲーションフレームのカテゴリペイン内の場合のように、xObjectの隣にあるアイコンは、そのタイプ(コンポーネント、サービス、リソース、またはXMLテンプレート)を示しています。
[ツール]メニューの[次のオカレンス]を選択するか、<F4>キーを押すと、条件に合致する次の検索結果が得られます。 [ツール]メニューの[前のオカレンス]を選択するか、<Shift>-<F4>キーを押すと、条件に合致する前の検索結果が得られます。
コンポーネントの実行中、特定のメッセージ(例: Composerからの内部システムメッセージ、ログアクションで指定されたテキスト)がログファイル xcsyslog.txtに書き込まれます。このファイルの場所は、xconfig.xmlファイル(Composerの設計時インストールの\binディレクトリにあります)のコンテンツを変更することによって指定できます。xconfig.xmlの<LOGFILE>要素を検索し、そのコンテンツを希望するパス名に変更します。
注記: ログファイルパスを簡単に変更する方法は、[ユーザ設定]ダイアログボックスの[一般]タブで新しいパスを入力することです。 このダイアログは、[ツール]メニューの[初期設定]コマンドを使用して表示できます。 40Composerの環境の設定を参照してください。
アニメーション時、またはComposerでコンポーネントを実行している場合、システムメッセージ(およびログアクション出力)がComposerメインウィンドウの下部にあるメッセージペインにリアルタイムで表示されます。ウィンドウの下部にある[ログ]タブを選択します(メッセージペインが非表示になっている場合は、メインメニューから[表示]>[出力タブ]の順に選択します)。
Composerで作成したすべてのexteNdオブジェクト(プロジェクト、XMLカテゴリ、XMLテンプレート、コンポーネント、リソース、サービスなど)は、オブジェクトタイプに一致する名前のフォルダに保存されます。
プロジェクトを作成すると、プロジェクトファイル(例: myproject.spf)が、そのプロジェクトに由来して名付けられたフォルダに保存されます(プロジェクトに対して新しいフォルダが手動で作成されていることを前提とします)。XMLテンプレート、リソース、およびコンポーネントを作成することによってアプリケーションを作成する際に、作成されたオブジェクトは、プロジェクトフォルダのサブフォルダ内にXMLファイルとして保存されます。したがって、「AcceptInvoice」という名前のサービスを作成すると、そのサービスによって実行されるアクションがすべて含まれる「AcceptInvoice.xml」という名前のXMLファイルが作成されます。すべてのXMLテンプレートカテゴリは、カテゴリの名前別に[XMLカテゴリ]に保存されます。すべてのXMLテンプレートは、テンプレートの名前別にカテゴリの下に保存されます。あるカテゴリのすべてのXMLサンプル(つまり、複数のテンプレートが存在する場合がある)は、サンプルドキュメントの名前別に[インポート]に保存されます。
ファイルの保存場所の例は、次の図のとおりです。

すべてのXMLドキュメントとサポートファイルは、プロジェクトの一部です。プロジェクトを展開すると、プロジェクトファイルは、Java Archiveファイル(JARファイル)に保存されます。
プロジェクトを構成するファイルは、次の表のとおりです。
|
プロジェクトファイル名 |
Description |
|---|---|
|
[プロジェクト名].spf |
exteNd Composerプロジェクトファイル。プロジェクトの起動情報が保存されます。このファイルは、新しいプロジェクトの作成時に作成されます。 |
|
PROJECT.xml |
これは、Composerによって作成されるオプションのファイルです。このファイルには、ユーザが定義するプロジェクト変数が含まれます。 詳しくはプロジェクト変数の作成を参照してください。 |
|
[プロジェクト名].jar |
展開中に作成されるJava Archive。詳細については、『exteNdサーバガイド』を参照してください。 |
|
*.xml、*.xsl |
アプリケーションの設計時に使用するすべてのXMLサンプル、定義、およびスタイルシートは、プロジェクトフォルダの下層にあるフォルダに保存されます。 |
「プロジェクト変数」を使用すると、要素の値を指定し、作成するすべてのコンポーネントおよび機能でその指定した要素をグローバルに使用できます。 ECMAScriptの「globals」とは異なり(globalsは、globalsを使用するコンポーネントにスコープされる)、プロジェクト変数はサービスのセッションにスコープされるため、Composerサービス内で実行されているコンポーネントであればいくつでも、プロジェクト変数を使用できます。
プロジェクト変数は、$PROJECTと呼ばれるメモリ内DOMに保存される値として実装されます。次に、このDOMは、Composerによって各プロジェクトに作成されるPROJECT.xmlというファイルから派生されます(このファイルは、後でサーバに展開されます)。
注記: ランタイム時に発生したプロジェクト変数を変更しても、サービスの呼び出し全体では適用されません。運用環境では、PROJECT.xmlは読み取り専用です (「持続的」なglobalsを作成するには、XML交換アクションを使用して独自のスクラッチファイルの読み書きする必要があります)。
プロジェクト変数はスコープにおいてグローバルであるため、プロジェクトの設計時開発中と展開後のランタイム保守の両方で重要な機能を実行できます。
設計時には、プロジェクト変数により、プロジェクト内の複数の場所で使用しなければならない可能性のある、プロジェクト全体の値を容易に集中管理できます。 展開時には、プロジェクト変数ファイル(PROJECT.xml)により、プロジェクトの静的変数を容易に更新できます。また、展開後は、アプリケーションサーバ上に展開されたPROJECT.xmlファイルを更新するだけで、複数の展開済みコンポーネントやサービスの動作を簡単に変更できます。
プロジェクト変数として最適に保存される可能性のある項目は、次のとおりです。
PROJECT.xmlファイルの更新プロセスについては、『exteNdサーバガイド』で詳しく説明されています。
特定の値にマップするプロジェクト変数の名前を作成します。特定の情報をプロジェクト変数から間接的に参照すると、データを1ヶ所で変更するだけで、そのデータが使用されているすべての場所で同じく新しい値が取得されるようにすることが可能です。
Composerウィンドウで、[ツール]、[プロジェクト設定]の順に選択します。 [プロジェクト設定]ダイアログボックスが表示されます。
空の[要素名]フィールドをクリックし、要素名を入力します。たとえば、「CompanyName」のように要素を入力します。スペースは使用しないでください。
空の[テキスト値]フィールドをクリックし、テキスト値を入力します。 たとえば「ACME Widget Co.」のように入力してください。
これで、作成した要素名とテキスト値は、PROJECT.xmlというプロジェクトXMLファイルに保存されます。 変数値を変更する必要がある場合は、プロジェクトの展開後にこのファイルを手動で編集できます。
要素名と値は、コンポーネントの作成に使用できるよう、Composerのダイアログボックスに自動的に追加されます。たとえば、変数は関数で使用することができます。

プロジェクト変数は、恒久的(静的)に作成できるだけでなく、コンポーネントまたはサービス内でダイナミックに作成することもできます。
$PROJECT DOMは、[マップアクション]ダイアログボックスに表示されるDOMリスト(ドロップダウンメニュー)に常に存在します。 要素と要素の値を他のDOMにマップする場合と同じ方法(ドラッグアンドドロップ操作を含む)で$PROJECT DOMにマップできるため、プロジェクト変数を作成して値を割り当てることは非常に簡単です。
注記: $PROJECT DOMの内容は、Composerの[表示]メニューから[ウィンドウのレイアウト]を選択し、$PROJECT DOMを表示の状態にすると、ツリー、テキスト、またはスタイル化された形式でいつでも表示できます。117ページのコンポーネントエディタでの[ウィンドウのレイアウト]および[表示/非表示]の使用での説明を参照してください。
PROJECT.xmlファイルの構造を見ると、USERCONFIGというルート要素があることが分かります。ユーザ定義変数は、このノードに子要素として追加されています。子要素の文字列値は、要素名に対応するプロジェクト変数の値です。
USERCONFIGの下層には、ユーザ定義プロジェクト変数名に加え、Composer定義要素もあります。これは、PROJECT.xmlファイルを使用して特定のプロジェクトの初期設定値がComposerで保持されるためです。
ダイナミックに作成されたプロジェクト変数は、当然のことながら、一時的なものです。ダイナミックなプロジェクト変数は、実行中のサービスのライフタイムの間使用できます(その後、サービスによって、このサービスを使用する多くのコンポーネントが呼び出される場合があります)。サービスの実行が終了すると、ダイナミック変数は破棄されます。これは、ダイナミック変数がメモリ内で作成されたためです。
プロジェクト変数には、$PROJECT DOMのノードにマップすることによって、値を何度でも再割り当てできます。この例は、次のとおりです。
メインメニューバーで、[アクション]、[マップ]の順にクリックします。すると、[マップ]ダイアログボックスが表示されます。
PROJECT.createXPath(“USERCONFIG/MYPROJECTVAR”)
ここでのMYPROJECTVARは、作成するプロジェクト変数の名前です。
USERCONFIG/MYPROJECTVAR
ここでのMYPROJECTVARは、作成するプロジェクト変数の名前です (完全なダイアログボックスの状態については、前の図を参照してください)。
[OK]をクリックします。これで、作成したダイナミック変数は、サービスエディタウィンドウのアクションペインに表示されます。
現在のプロジェクト内には、他のComposerプロジェクトを追加することができます。これは、既存のxObjectを再利用することによってアプリケーションの開発を迅速に行うための機能です。こうした目的で再利用する場合、外部プロジェクトは「サブプロジェクト」と呼ばれます。 サブプロジェクトのxObjectは、名付けられたサブプロジェクトのオブジェクトであることを識別するためにプロジェクトのプリフィックスが各プロジェクトの名前の前に表示されることを除いて、他は通常どおりに現在のプロジェクトのカテゴリペインとインスタンスペインに表示されます。例は次のとおりです。

ダイアログボックスの左上角にある「プラス記号」アイコンをクリックして、サブプロジェクトを追加します。ダイアログボックスが表示され、ファイルシステムを参照することができます。Composerで作成された.spfファイルを選択します。選択したファイルは、サブプロジェクトのリストに表示されます。
注記: 選択する.spfに独自のサブプロジェクトがすでに含まれている場合、サブプロジェクトを含むサブプロジェクトを追加することはできないことを通知するエラーダイアログボックスが表示されます。
サブプロジェクトの場所を(メインプロジェクトの.spfへの)相対パスに変更する場合は、[相対]チェックボックスをオンにします。メインプロジェクトのドライブとは異なるドライブにプロジェクトがある場合、[相対]チェックボックスは無効になります。
[OK]をクリックしてダイアログボックスを閉じます。 すると、サブプロジェクトのxObjectが、Composerのナビゲーションフレームの詳細ペインに表示されます。xObjectは、各xObject名にネームスペースまたはコロンのプリフィックスがあるかどうかによって区別できます。
オブジェクトを再利用するには、サブプロジェクトを利用する以外に、xObjectを1つずつプロジェクトに直接インポートする方法があります。(この章のxObjectのインポートを参照してください)。 ただし、xObjectの「インポート」には、元のオブジェクトの基盤となるXMLファイルが現在のプロジェクトに「コピーされてしまう」という短所があります。これにより、元のxObjectの変更または更新が必要になるという点や、オブジェクトをインポートしたプロジェクトに存在する可能性のあるそのオブジェクトのすべての「コピー」において、コード保守の問題が生じます。サブプロジェクトの使用では、この問題が生じることはありません。外部プロジェクトを現在のプロジェクト内に含めても、サブプロジェクトのソースファイルのコピーは作成されません。すべての「ソースコード」は1ヶ所に保存されたままとなるため、保守が簡単になります。
1レベルを超えたサブプロジェクトのネストは、サポートされていません。1つの特定のプロジェクトには、サブプロジェクトをいくつでも含めることができますが、すべてのサブプロジェクトは同じレベル(1レベル)に存在する必要があります。これは、1つまたは複数のサブプロジェクトを含むプロジェクトを別のプロジェクトのサブプロジェクトにすることはできないことも意味します。たとえば、プロジェクトAがプロジェクトBという名前のサブプロジェクトを持つとします。この場合、第3のプロジェクトであるプロジェクトCは、プロジェクトBをサブプロジェクトとすることはできますが、プロジェクトAをサブプロジェクトとすることはできません。
現在のプロジェクトにサブプロジェクトを追加しようとする際に、そのサブプロジェクトに独自のサブプロジェクトが含まれている場合は、次のような警告メッセージが表示されます。

xObjectと変数をプロジェクトやサブプロジェクトの間で共有する場合、注意すべき特定のスコープルールによって制限されます。
xObject: プロジェクトはサブプロジェクトのコンポーネント(およびほかのxObject)にアクセスできますが、サブプロジェクトは親プロジェクトのオブジェクトにアクセスすることはできません。たとえば、プロジェクトAにプロジェクトBがサブプロジェクトとして含まれている場合、プロジェクトB (「チャイルド」プロジェクト)のコンポーネントでは、プロジェクトA (ペアレント)のコンポーネントまたはリソースを扱うことはできません。
プロジェクト変数: $PROJECT DOM(この章のプロジェクトへのプロジェクト変数の追加を参照)に指定されている変数は作成されたときのプロジェクトに属します。プロジェクトAのコンポーネントおよびサービスは、プロジェクトBのプロジェクト変数を「認識」することはできません。また、その逆も当てはまります。
ECMAScriptの変数と関数:スクリプト変数のライフタイムは常にコンポーネントにスコープされます。コンポーネントがスコープ外になると、そのコンポーネントによって使用された可能性のあるECMAScript変数もスコープ外になります。一方、サブプロジェクト内のカスタムスクリプトリソースでは、Projectsオブジェクトという組み込まれたComposer ECMAScript拡張により、メインプロジェクトにアクセスできます。たとえば、現在のプロジェクトであるプロジェクトAにMyOtherProjectというサブプロジェクトが含まれており、salesTax()という関数を含むカスタムスクリプトがMyOtherProjectに含まれているとします。この場合、プロジェクトA内のコンポーネントでは、次を呼び出すことによってsalesTax()関数を使用できます。
Projects.MyOtherProject.salesTax()
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...