第4章

プロジェクトの作成と管理

 
Top of page

プロジェクトとは

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

プロジェクトの各部分は、次の図のとおりです。

4whatisproject

図4-1

 
Top of section

サービスについて

サービスは、作成するさまざまなコンポーネントを結合して、exteNd Serverに対する展開のロジック単位を作成するために使用されます。サービスは、exteNd Server内で実際に実行されるオブジェクトです。Webサービスは、サービストリガオブジェクトにより開始され、XMLドキュメントを入力として受け付け、出力としてXMLドキュメントを返します。JMSサービスは、メッセージを入力として受け付け、メッセージがキューに入るとトリガされます。 詳細については、新しいサービスの作成を参照してください。

 
Top of section

コンポーネントについて

「コンポーネント」は、1つまたは複数のXMLドキュメントを入力として受け付け、入力で動作するアクションの集合を使用し、XMLドキュメントを出力として返すxObjectです。

通常、コンポーネントは「サービス」内で呼び出され、アクションまたはその他のコンポーネントへの呼び出しを含むことができます(サービスは、基本的にコンポーネントの集合です)。

コンポーネントの機能、作成方法、および設計上で基盤となる原理の詳細については、XMLマップコンポーネントの作成を参照してください。

 
Top of section

リソースについて

リソースは、専用の操作を実行するxObjectです。これらは、タスクを実行できるようにするためにサービスとコンポーネントによって使用されます。リソースのタイプには、コードテーブル、コードテーブルマップ、接続、およびカスタムスクリプトがあります。

 
Top of section

XMLテンプレートについて

XMLテンプレートには、コンポーネントを設計およびテストする際に便利なサンプルドキュメント、スキーマ、およびスタイルシートが含まれています。 まず、類似のXMLテンプレートを含むXMLカテゴリを作成します。 次に、XMLテンプレートを作成し、作成するコンポーネントの入力および出力としてそのテンプレートを使用します。 詳細については、XMLテンプレートについてを参照してください。

 
Top of page

新しいプロジェクトの作成

Composerを初めて起動すると、チュートリアルと呼ばれるサンプルプロジェクトがロードされます。独自のアプリケーションを起動する場合は、新しい空のプロジェクトを作成して起動します。

Procedure 新しいプロジェクトを作成する

  1. [ファイル]、[新規]、[プロジェクト]の順にクリックします。すると、[New Project]ダイアログボックスが表示されます。

    4newproject01

  2. [プロジェクト名]にプロジェクト名を入力します。これは必須のフィールドです。Composerにより、プロジェクト名の拡張子である「.spf」が追加されます。

  3. [参照]を選択して、プロジェクトを保存するフォルダを検索します。[プロジェクト場所]ダイアログボックスが表示されます。

    注記:   プロジェクトが開いている場合、[プロジェクト場所]ダイアログボックスには、開いているプロジェクトが保存されているフォルダがデフォルトで表示されます。

    4ProjectLocator

  4. プロジェクトを保存するフォルダに移動します。

  5. 新しいプロジェクトを保存する 新しいフォルダを作成するには、[新規フォルダ]アイコンをクリックします。 4newfoldericon現行ディレクトリ内のフォルダリストに、新たに「新しいフォルダ」という名前のフォルダができます。 これをクリックすると強調表示になり、もう一度クリックするとフォルダ名を変更できるようになります。

  6. [OK]をクリックします。 すると、新しく作成したフォルダが[検索対象:]フィールドに表示された状態で、[ファイルの場所]ダイアログボックスが表示されます。

    4ProjectLocationNewFolder

    注記:   [プロジェクト場所]ダイアログボックスの[ファイル名]には、手順2で指定したプロジェクト名がデフォルトで表示されます。

  7. [OK]をクリックします。すると、新しく作成した「プロジェクト名」と「プロジェクトの場所」が表示された[新規プロジェクト]ダイアログボックスが現れます。

    4NewProjectFinal

  8. ダイアログボックスの最下部にあるテキストフィールドに、「展開コンテキスト」文字列を入力します。この文字列には、「com.server.apps」のような、ピリオドで区切られたラベル(スペースなし)を含める必要があります。

    注記:   コンテキスト文字列には、try、catch、finally、int、forなどのJava言語キーワードを含むことはできません。Javaキーワードの完全なリストについては、付録予約語を参照してください。

  9. [OK]をクリックします。すると、タイトルバーで作成したプロジェクトの名前が表示されたComposerウィンドウが現れます。

 
Top of page

プロジェクトを開く

プロジェクトは、次の方法で開くことができます。

 
Top of section

Composer内からプロジェクトを開く

Procedure 既存のプロジェクトを開く

  1. [ファイル]、[プロジェクトを開く]の順にクリックします。すると、[プロジェクトを開く]ダイアログボックスが表示されます。

    4OpenProject

  2. [参照]ボタンをクリックします。また、開くプロジェクトのパスを入力することもできます。[プロジェクト場所]ダイアログボックスが表示されます。

    4ProjectLocationOpenProject

  3. 開くプロジェクトが保存されているディレクトリに移動します。

  4. プロジェクトを選択します。

  5. [OK]をクリックします。すると、選択したプロジェクトのパスが[プロジェクトファイル]フィールドに表示された[プロジェクトを開く]ダイアログボックスが現れます。

  6. [OK]をクリックします。すると、タイトルバーで開いたプロジェクトの名前が表示されたComposerウィンドウが現れます。

注記:   プロジェクトは、[ファイル]メニューの[最近のプロジェクト]リストから選択して開くこともできます。

 
Top of section

コマンドラインからComposerを起動するときに特定のプロジェクトを開く

起動オプションとして、Composerは、コマンドラインモードでXC.exeを実行して起動し、次のようなプロジェクト名パラメータを指定することができます。

                  C:\exteNd\Composer\Bin\xc myproject

この例では、myproject.spfという名前のプロジェクトファイルでXC.exeが実行されます。

 
Top of section

最近のプロジェクト が見つからないときにプロジェクトを開く

Composerを起動すると、最後に作業したプロジェクトが自動的にロードされます。 プロジェクトファイルを移動した場合や、アクセス不可能な別のユーザのプロジェクトにアクセスしようとした場合は、Composerによってプロジェクトは見つけられません。

起動時に、Composerでは、開くプロジェクトファイルの名前の最初のコマンドラインパラメータを使用します。コマンドラインパラメータが省略されている(または不正である)場合、Composerでは、開くプロジェクトの名前として、xconfig.xmlのDEFAULTPROJECTFILENAMEを使用します。コマンドラインオプションが省略されているか無効であり、DEFAULTPROJECTFILENAMEも省略されているか無効である場合、Composerによって[プロジェクトを作成/開く]ダイアログボックスが表示されます。

4startingaproject

[プロジェクトを作成/開く]ダイアログボックスでは、新しいプロジェクトを作成したり、既存プロジェクトを開いたり、Composerを完全に終了したりすることができます。また、このダイアログボックスには、初期プロジェクトを開けなかった場合のエラー情報も表示されます。

Procedure 起動時にプロジェクトを検索する

  1. [プロジェクトを作成/開く]ダイアログボックスで、次のいずれかを実行します。

  2. [OK]をクリックします。

 
Top of page

プロジェクトの削除

exteNd Composerを使用すると、プロジェクト全体とそのオブジェクトをすべてディスクドライブから削除できます。また、プロジェクトは通常のディレクトリ構造で保存されているため、Windowsの標準の削除機能を使用して削除することもできます。いずれの場合も、削除を行った場合、プロジェクトは完全に破棄され、exteNdで復元することはできません。

Procedure プロジェクトを削除する

  1. [ファイル]、[プロジェクトの削除]の順にクリックします。すると、[プロジェクトの削除]ダイアログボックスが表示されます。

    4DeleteProject

  2. [プロジェクトの削除]ダイアログボックスで、次のいずれかを実行します。

  3. [OK]をクリックします。すると、[プロジェクトの削除の確認]ダイアログボックスが表示されます。

  4. [はい]を選択します。

 
Top of page

xObjectの管理

xObject は、すべてのXML統合サービスの構成要素です。プロジェクトコンポーネントは、次のいずれかの方法で作成できます。

 
Top of section

xObject の作成

xObjectは、メニューバーから作成し、コンポーネントで使用できます。

Procedure xObjectを作成する

  1. [ファイル]メニューから、[新規]>[xObject]の順に選択します。 あるいは、ナビゲータペインに表示されている、作成したいxObjectのタイプ上で右クリックし、コンテキストメニューから[新規]を選択するという方法もあります。

  2. 作成したいxObjectのタイプに対応するタブに切り替えます。 [プロセス/サービス]、[コンポーネント]、[リソース]、または[テンプレート]の中から選んでください。

  3. [プロセス/サービス]を選んだ場合、新たにWebサービスを作成することになります。 インストールしているサービスによっては、ほかにも選択肢があるかも知れません。

    4ProcSvcTab

  4. [コンポーネント]を選択した場合は、コンポーネントタイプを選択します。 表示される選択肢は、インストールしたConnect製品によって異なります。

    4CompTab

  5. [リソース]を選択した場合は、リソースタイプを選択します。 いくつかの選択肢がありますが、やはりインストールしたConnect製品により、表示される選択肢は異なります。

    4ResourceTab

  6. [テンプレート]を選択した場合は、新たにテンプレートカテゴリを作成するか、あるいはテンプレートそのものを作成するかを次に選択します。

    4TemplateTab

  7. いずれの場合も、選択後、xObject名を入力してください。

  8. xObject定義画面の残りを完了します。[完了]をクリックして完了し、xObjectを保存します。

xObjectは、タイプに応じてComposer内の適切なカテゴリに配置されます。

注記:   作成したxObjectは、XMLファイルとしてハードディスクに保存されます。保存場所は、xObjectが属するカテゴリと同じ名前のディレクトリとなります。

 
Top of section

xObjectを開く

現在のプロジェクトに既存のxObjectがある場合、ComposerメインウィンドウからそれらのxObjectを開いて、コンテンツを編集または表示できます。

Procedure xObjectを開く

  1. 既存のxObjectを開くには、[ファイル]メニューから[開く]を選択します。 あるいは、インスタンスペインでxObjectを選択し、<Ctrl>-<O>キーを押すこともできます。 どちらの場合も、[xObjectを開く]ダイアログが開きます。

    3openobj01

  2. 開くxObjectのタイプを選択します。

  3. xObjectを選択します。

  4. [OK]をクリックします。

xObjectが独自のウィンドウで開きます。

注記:   xObjectを直接開きたい場合は、インスタンスペインでそのxObjectをダブルクリックするか、あるいは選択して右クリックし、コンテキストメニューから[開く]を選択してください。

 
Top of section

xObjectのインポート

xObjectは、開くだけでなく、別のプロジェクトや場所からインポートすることもできます。

注記:   作成したxObjectは、XMLファイルとしてハードディスクに保存されます。保存場所は、xObjectが属するカテゴリと同じ名前のディレクトリとなります。 xObjectをインポートするには、次の手順に従ってxObjectのXMLファイルを選択します。

Procedure xObjectをインポートする

  1. [ファイル]メニューから、[XObjectのインポート]を選択します。すると、[XObjectのインポート]ダイアログボックスが表示されます。

  2. インポートするxObjectのタイプを選択します。

  3. [XMLテンプレート]を選択した場合は、カテゴリを選択します。

  4. xObjectのパスとファイル名を入力するか、または[参照]をクリックしてxObjectを検索します。 または「http://」、「https://」、または「ftp」という文字列をファイル名の前に入力することによりURLを指定してファイルを読み込むこともできます。

  5. xObjectの名前を入力するか、または元の名前をそのまま使用します。

  6. オプションとして、説明するテキストを入力するか、または元のテキストをそのまま使用します。

  7. [OK]をクリックします。

xObjectは、タイプに応じてComposer内の適切なカテゴリに配置されます。

 
Top of section

xObjectのプロパティの表示

すべてのxObjectには、プロパティが関連付けられています。プロパティには、名前、説明(ヘッダ情報)、およびxObjectタイプに固有なその他の情報があります。

Procedure xObjectのプロパティを表示する

  1. 詳細ペインでxObjectを選択します。

  2. [ファイル]メニューから[プロパティ]を選択します。

  3. [プロパティ]ダイアログボックスのタブをクリックして、[ヘッダ]および[XML]のプロパティを表示します。

注記:   マウスを右クリックして、コンテキストメニューから[プロパティ]を選択することもできます。

 
Top of section

xObjectの プロパティの印刷

xObjectのプロパティは、表示するだけでなく印刷することもできます。xObjectを印刷すると、印刷日時の他に、xObjectの名前、およびすべてのヘッダとxObjectタイプに固有なその他の情報が含まれます。

コンポーネントのプロパティを印刷すると、コンポーネントのDOM構造(DOMとはを参照)やアクションモデル(アクションモデルペインについてを参照)に関するデータがすべて含まれます。

Procedure xObjectのプロパティを印刷する

  1. [ファイル]メニューから、[印刷]を選択します。 あるいは、インスタンスペインでxObjectを選択し、<Ctrl>-<P>キーを押しても印刷できます。 どちらの場合も、[印刷]ダイアログが開きます。

    3printobj01

  2. xObjectタイプを選択します。

  3. xObjectを選択します。

  4. [OK]をクリックします。

  5. 任意のプリンタオプションを設定し、[OK]をクリックします。

最初にxObjectを選択してから印刷することもできます。

Procedure 選択したxObjectを印刷する

  1. 詳細ペインでxObjectを選択します。

  2. マウスを右クリックし、コンテキストメニューから[印刷]を選択します。

  3. 任意のプリンタオプションを設定し、[OK]をクリックします。

 
Top of section

xObjectの名前変更

xObjectの名前を変更するには、xObjectを右クリックし、[名前変更]を選択します。テキストフィールドに新しい名前を入力します。

注記:   [プロパティ]ページでxObjectの名前を変更すると、[名前を付けて保存]操作が行われるため、元のxObjectはそのまま維持され、新しい名前を持つコピーが作成されます。xObjectの名前だけを変更するには、コンテキストメニューの[名前変更]オプションを使用します。

 
Top of section

xObjectの削除

xObjectを削除するには、xObjectを右クリックし、[削除]を選択します。続けて、xObjectを削除することを確認します。

 
Top of page

xObjectまたはテキストの検索

大規模なプロジェクトになると、これに含まれるサービス、コンポーネント、リソース、あるいはXMLテンプレートの数も多くなります。 膨大な数のオブジェクトから必要な情報を見つけ出すのは、時に非常に難しいこともあります。 [検索]ダイアログボックスを使用すると、xObject、オブジェクト内のテキスト、または特定のXMLテンプレートやコンポーネントを参照するオブジェクトを検索できます。

Procedure プロジェクト内の xObjectを検索する

  1. [ツール]、[検索]の順にクリックします。すると、[検索]ダイアログボックスが表示されます。

    3finddlg

  2. 検索対象はいろいろな基準で指定できます。

  3. [検索]をクリックします。

見つかった場合、ターゲットxObjectは、Composerメインウィンドウの[検索]タブにリスト形式で表示されます。 検索結果リストに表示されたコンポーネントやオブジェクトは、ダブルクリックして開くことができます。ナビゲーションフレームのカテゴリペイン内の場合のように、xObjectの隣にあるアイコンは、そのタイプ(コンポーネント、サービス、リソース、またはXMLテンプレート)を示しています。

[ツール]メニューの[次のオカレンス]を選択するか、<F4>キーを押すと、条件に合致する次の検索結果が得られます。 [ツール]メニューの[前のオカレンス]を選択するか、<Shift>-<F4>キーを押すと、条件に合致する前の検索結果が得られます。

 
Top of page

システムメッセージの表示

コンポーネントの実行中、特定のメッセージ(例: Composerからの内部システムメッセージ、ログアクションで指定されたテキスト)がログファイル xcsyslog.txtに書き込まれます。このファイルの場所は、xconfig.xmlファイル(Composerの設計時インストールの\binディレクトリにあります)のコンテンツを変更することによって指定できます。xconfig.xmlの<LOGFILE>要素を検索し、そのコンテンツを希望するパス名に変更します。

注記:   ログファイルパスを簡単に変更する方法は、[ユーザ設定]ダイアログボックスの[一般]タブで新しいパスを入力することです。 このダイアログは、[ツール]メニューの[初期設定]コマンドを使用して表示できます。 40Composerの環境の設定を参照してください。

アニメーション時、またはComposerでコンポーネントを実行している場合、システムメッセージ(およびログアクション出力)がComposerメインウィンドウの下部にあるメッセージペインにリアルタイムで表示されます。ウィンドウの下部にある[ログ]タブを選択します(メッセージペインが非表示になっている場合は、メインメニューから[表示]>[出力タブ]の順に選択します)。

 
Top of page

プロジェクトファイルの保存場所について

Composerで作成したすべてのexteNdオブジェクト(プロジェクト、XMLカテゴリ、XMLテンプレート、コンポーネント、リソース、サービスなど)は、オブジェクトタイプに一致する名前のフォルダに保存されます。

プロジェクトを作成すると、プロジェクトファイル(例: myproject.spf)が、そのプロジェクトに由来して名付けられたフォルダに保存されます(プロジェクトに対して新しいフォルダが手動で作成されていることを前提とします)。XMLテンプレート、リソース、およびコンポーネントを作成することによってアプリケーションを作成する際に、作成されたオブジェクトは、プロジェクトフォルダのサブフォルダ内にXMLファイルとして保存されます。したがって、「AcceptInvoice」という名前のサービスを作成すると、そのサービスによって実行されるアクションがすべて含まれる「AcceptInvoice.xml」という名前のXMLファイルが作成されます。すべてのXMLテンプレートカテゴリは、カテゴリの名前別に[XMLカテゴリ]に保存されます。すべてのXMLテンプレートは、テンプレートの名前別にカテゴリの下に保存されます。あるカテゴリのすべてのXMLサンプル(つまり、複数のテンプレートが存在する場合がある)は、サンプルドキュメントの名前別に[インポート]に保存されます。

ファイルの保存場所の例は、次の図のとおりです。

5storedOnDisk

 
Top of section

設計時および展開済みのプロジェクトファイルについて

すべてのXMLドキュメントとサポートファイルは、プロジェクトの一部です。プロジェクトを展開すると、プロジェクトファイルは、Java Archiveファイル(JARファイル)に保存されます。

プロジェクトを構成するファイルは、次の表のとおりです。

表4-1 :

プロジェクトファイル名

Description

[プロジェクト名].spf

exteNd Composerプロジェクトファイル。プロジェクトの起動情報が保存されます。このファイルは、新しいプロジェクトの作成時に作成されます。

PROJECT.xml

これは、Composerによって作成されるオプションのファイルです。このファイルには、ユーザが定義するプロジェクト変数が含まれます。 詳しくはプロジェクト変数の作成を参照してください。

[プロジェクト名].jar

展開中に作成されるJava Archive。詳細については、『exteNdサーバガイド』を参照してください。

*.xml、*.xsl

アプリケーションの設計時に使用するすべてのXMLサンプル、定義、およびスタイルシートは、プロジェクトフォルダの下層にあるフォルダに保存されます。

 
Top of page

プロジェクト変数の作成

「プロジェクト変数」を使用すると、要素の値を指定し、作成するすべてのコンポーネントおよび機能でその指定した要素をグローバルに使用できます。 ECMAScriptの「globals」とは異なり(globalsは、globalsを使用するコンポーネントにスコープされる)、プロジェクト変数はサービスのセッションにスコープされるため、Composerサービス内で実行されているコンポーネントであればいくつでも、プロジェクト変数を使用できます。

プロジェクト変数は、$PROJECTと呼ばれるメモリ内DOMに保存される値として実装されます。次に、このDOMは、Composerによって各プロジェクトに作成されるPROJECT.xmlというファイルから派生されます(このファイルは、後でサーバに展開されます)。

注記:   ランタイム時に発生したプロジェクト変数を変更しても、サービスの呼び出し全体では適用されません。運用環境では、PROJECT.xmlは読み取り専用です (「持続的」なglobalsを作成するには、XML交換アクションを使用して独自のスクラッチファイルの読み書きする必要があります)。

プロジェクト変数はスコープにおいてグローバルであるため、プロジェクトの設計時開発中と展開後のランタイム保守の両方で重要な機能を実行できます。

設計時には、プロジェクト変数により、プロジェクト内の複数の場所で使用しなければならない可能性のある、プロジェクト全体の値を容易に集中管理できます。 展開時には、プロジェクト変数ファイル(PROJECT.xml)により、プロジェクトの静的変数を容易に更新できます。また、展開後は、アプリケーションサーバ上に展開されたPROJECT.xmlファイルを更新するだけで、複数の展開済みコンポーネントやサービスの動作を簡単に変更できます。

プロジェクト変数として最適に保存される可能性のある項目は、次のとおりです。

PROJECT.xmlファイルの更新プロセスについては、『exteNdサーバガイド』で詳しく説明されています。

 
Top of section

プロジェクトへのプロジェクト 変数の追加

特定の値にマップするプロジェクト変数の名前を作成します。特定の情報をプロジェクト変数から間接的に参照すると、データを1ヶ所で変更するだけで、そのデータが使用されているすべての場所で同じく新しい値が取得されるようにすることが可能です。

Procedure プロジェクト変数を追加する

  1. Composerウィンドウで、[ツール]、[プロジェクト設定]の順に選択します。 [プロジェクト設定]ダイアログボックスが表示されます。

  2. 初期状態では[プロジェクト変数]タブが表示されています。

  3. [新規変数の追加]ボタンをクリックします。すると、[プロジェクト変数]ウィンドウに空のフィールドが表示されます。

    4AddProjVariable2

  4. 空の[要素名]フィールドをクリックし、要素名を入力します。たとえば、「CompanyName」のように要素を入力します。スペースは使用しないでください。

  5. 空の[テキスト値]フィールドをクリックし、テキスト値を入力します。 たとえば「ACME Widget Co.」のように入力してください。

  6. [OK]をクリックします。

これで、作成した要素名とテキスト値は、PROJECT.xmlというプロジェクトXMLファイルに保存されます。 変数値を変更する必要がある場合は、プロジェクトの展開後にこのファイルを手動で編集できます。

要素名と値は、コンポーネントの作成に使用できるよう、Composerのダイアログボックスに自動的に追加されます。たとえば、変数は関数で使用することができます。

 
Top of section

プロジェクト変数のダイナミックな作成

プロジェクト変数は、恒久的(静的)に作成できるだけでなく、コンポーネントまたはサービス内でダイナミックに作成することもできます。

$PROJECT DOMは、[マップアクション]ダイアログボックスに表示されるDOMリスト(ドロップダウンメニュー)に常に存在します。 要素と要素の値を他のDOMにマップする場合と同じ方法(ドラッグアンドドロップ操作を含む)で$PROJECT DOMにマップできるため、プロジェクト変数を作成して値を割り当てることは非常に簡単です。

注記:   $PROJECT DOMの内容は、Composerの[表示]メニューから[ウィンドウのレイアウト]を選択し、$PROJECT DOMを表示の状態にすると、ツリー、テキスト、またはスタイル化された形式でいつでも表示できます。117ページのコンポーネントエディタでの[ウィンドウのレイアウト]および[表示/非表示]の使用での説明を参照してください。

PROJECT.xmlファイルの構造を見ると、USERCONFIGというルート要素があることが分かります。ユーザ定義変数は、このノードに子要素として追加されています。子要素の文字列値は、要素名に対応するプロジェクト変数の値です。

USERCONFIGの下層には、ユーザ定義プロジェクト変数名に加え、Composer定義要素もあります。これは、PROJECT.xmlファイルを使用して特定のプロジェクトの初期設定値がComposerで保持されるためです。

ダイナミックに作成されたプロジェクト変数は、当然のことながら、一時的なものです。ダイナミックなプロジェクト変数は、実行中のサービスのライフタイムの間使用できます(その後、サービスによって、このサービスを使用する多くのコンポーネントが呼び出される場合があります)。サービスの実行が終了すると、ダイナミック変数は破棄されます。これは、ダイナミック変数がメモリ内で作成されたためです。

プロジェクト変数には、$PROJECT DOMのノードにマップすることによって、値を何度でも再割り当てできます。この例は、次のとおりです。

Procedure ダイナミックなプロジェクト変数を作成して値をマップする

  1. インスタンスペインでサービスをダブルクリックします。すると、サービスエディタウィンドウが表示されます。

    4ServiceEditorStart

  2. メインメニューバーで、[アクション]、[マップ]の順にクリックします。すると、[マップ]ダイアログボックスが表示されます。

    4MapActionDialog69

  3. [マップ]ダイアログボックスの[コピー元]セクションで、[式]ラジオボタンをオンにします。

  4. [コピー元]フィールドに、プロジェクト変数の値を入力します。 文字列を入力する場合は二重引用符で囲んでください。

  5. ターゲット式は、次の2つの方法で入力できます。

      PROJECT.createXPath(“USERCONFIG/MYPROJECTVAR”) 
    

    ここでのMYPROJECTVARは、作成するプロジェクト変数の名前です。

      USERCONFIG/MYPROJECTVAR
    

    ここでのMYPROJECTVARは、作成するプロジェクト変数の名前です (完全なダイアログボックスの状態については、前の図を参照してください)。

  6. [OK]をクリックします。これで、作成したダイナミック変数は、サービスエディタウィンドウのアクションペインに表示されます。

    4mapaction69

 
Top of page

プロジェクト内のサブプロジェクト

現在のプロジェクト内には、他のComposerプロジェクトを追加することができます。これは、既存のxObjectを再利用することによってアプリケーションの開発を迅速に行うための機能です。こうした目的で再利用する場合、外部プロジェクトは「サブプロジェクト」と呼ばれます。 サブプロジェクトのxObjectは、名付けられたサブプロジェクトのオブジェクトであることを識別するためにプロジェクトのプリフィックスが各プロジェクトの名前の前に表示されることを除いて、他は通常どおりに現在のプロジェクトのカテゴリペインとインスタンスペインに表示されます。例は次のとおりです。

4Subprojects

Procedure Composerプロジェクトにサブプロジェクトを含める

  1. Composerのメインメニューバーにある[ツール]メニューで、[プロジェクト設定]を選択します。

  2. [プロジェクト設定]ダイアログボックスの[サブプロジェクト]タブを選択します(次を参照)。

    3ProjSetSubProj

  3. ダイアログボックスの左上角にある「プラス記号」アイコンをクリックして、サブプロジェクトを追加します。ダイアログボックスが表示され、ファイルシステムを参照することができます。Composerで作成された.spfファイルを選択します。選択したファイルは、サブプロジェクトのリストに表示されます。

    注記:   選択する.spfに独自のサブプロジェクトがすでに含まれている場合、サブプロジェクトを含むサブプロジェクトを追加することはできないことを通知するエラーダイアログボックスが表示されます。

  4. サブプロジェクトの場所を(メインプロジェクトの.spfへの)相対パスに変更する場合は、[相対]チェックボックスをオンにします。メインプロジェクトのドライブとは異なるドライブにプロジェクトがある場合、[相対]チェックボックスは無効になります。

  5. サブプロジェクトを削除するには、そのサブプロジェクトを選択し、「マイナス記号」アイコンをクリックします。

  6. 手順3を繰り返し、任意の数のサブプロジェクトを追加します。

  7. [OK]をクリックしてダイアログボックスを閉じます。 すると、サブプロジェクトのxObjectが、Composerのナビゲーションフレームの詳細ペインに表示されます。xObjectは、各xObject名にネームスペースまたはコロンのプリフィックスがあるかどうかによって区別できます。

 
Top of section

インポートされたxObjectとサブプロジェクト

オブジェクトを再利用するには、サブプロジェクトを利用する以外に、xObjectを1つずつプロジェクトに直接インポートする方法があります。(この章のxObjectのインポートを参照してください)。 ただし、xObjectの「インポート」には、元のオブジェクトの基盤となるXMLファイルが現在のプロジェクトに「コピーされてしまう」という短所があります。これにより、元のxObjectの変更または更新が必要になるという点や、オブジェクトをインポートしたプロジェクトに存在する可能性のあるそのオブジェクトのすべての「コピー」において、コード保守の問題が生じます。サブプロジェクトの使用では、この問題が生じることはありません。外部プロジェクトを現在のプロジェクト内に含めても、サブプロジェクトのソースファイルのコピーは作成されません。すべての「ソースコード」は1ヶ所に保存されたままとなるため、保守が簡単になります。

 
Top of section

サブプロジェクトのネスト

1レベルを超えたサブプロジェクトのネストは、サポートされていません。1つの特定のプロジェクトには、サブプロジェクトをいくつでも含めることができますが、すべてのサブプロジェクトは同じレベル(1レベル)に存在する必要があります。これは、1つまたは複数のサブプロジェクトを含むプロジェクトを別のプロジェクトのサブプロジェクトにすることはできないことも意味します。たとえば、プロジェクトAがプロジェクトBという名前のサブプロジェクトを持つとします。この場合、第3のプロジェクトであるプロジェクトCは、プロジェクトBをサブプロジェクトとすることはできますが、プロジェクトAをサブプロジェクトとすることはできません。

現在のプロジェクトにサブプロジェクトを追加しようとする際に、そのサブプロジェクトに独自のサブプロジェクトが含まれている場合は、次のような警告メッセージが表示されます。

4SubSubProjectWarning

 
Top of section

サブプロジェクトでのxObjectと変数のスコープおよび表示レベル

xObjectと変数をプロジェクトやサブプロジェクトの間で共有する場合、注意すべき特定のスコープルールによって制限されます。

  1. xObject: プロジェクトはサブプロジェクトのコンポーネント(およびほかのxObject)にアクセスできますが、サブプロジェクトは親プロジェクトのオブジェクトにアクセスすることはできません。たとえば、プロジェクトAにプロジェクトBがサブプロジェクトとして含まれている場合、プロジェクトB (「チャイルド」プロジェクト)のコンポーネントでは、プロジェクトA (ペアレント)のコンポーネントまたはリソースを扱うことはできません。

  2. プロジェクト変数: $PROJECT DOM(この章のプロジェクトへのプロジェクト変数の追加を参照)に指定されている変数は作成されたときのプロジェクトに属します。プロジェクトAのコンポーネントおよびサービスは、プロジェクトBのプロジェクト変数を「認識」することはできません。また、その逆も当てはまります。

  3. 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 ...