基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > 操作の追加と UI への組み込み > Windchill クライアントアーキテクチャの操作フレームワーク > 新規操作の定義
  
新規操作の定義
システム内の操作は、操作名とオブジェクトタイプによって一意に識別されます。操作は、codebase/config/actions/actions.dtd による構造に従った XML ファイルで定義する必要があります。
「新規ドキュメント」ウィンドウ用の操作定義の例を次に示します。
<objecttype name="document" class="wt.doc.WTDocument"
resourceBundle="com.ptc.windchill.enterprise.doc.documentResource">
<action name="create" uicomponent="CREATE_DOC" dtiUpload="true">
<command
class="com.ptc.windchill.enterprise.doc.forms.CreateDocFormProcessor"
method="execute" windowType="popup" onClick="validateCreateLocation(event)"/>
<includeFilter name="projectM4D" />
<nonSupportedTypes value="wt.part.WTPart"/>
<supportedTypes value="wt.doc.WTDocument"/>
</action>
</objecttype>
objecttype タグ
objecttype は、ネームスペースを作成する方法であるとともに、特定のオブジェクトまたは機能領域に関連した操作のパッケージングでもあります。上記の例では、"document" という名前によって、wt.doc.WTDocuments に適用される操作用の一意のネームスペースが作成されます。
objecttype の名前に適用されるネーミング規則は、英数字の任意の組み合わせとなります。ほとんどの objecttypes は、操作が関連する永続可能オブジェクトのエイリアスです。コピーなど、すべてのオブジェクトタイプに適用される操作は、"object" という objecttype 内に記述できます。
* 
カスタム objecttypes にはすべて会社固有のプレフィックスを付けて、製品標準のオブジェクトタイプと競合しないようにすることをお勧めします。
次の表では、objecttype の有効なパラメータについて説明します。パラメータの詳細は、codebase/config/actions/actions.dtd にも記載されています。
パラメータ
デフォルト値
有効な値
必須
説明
name
英数字の任意の組み合わせ
Yes
このオブジェクトタイプを参照するために使用される名前。
クラス
有効な Java クラス
はい
囲まれている操作のオブジェクトクラス。
resourceBundle
任意の有効なリソースバンドルクラス名
いいえ
ローカライズされる操作のプロパティに使用するデフォルトのリソースバンドルのクラス名。
action タグ
操作の name は、オブジェクトタイプのコンテキスト内で操作を一意に識別する識別子です。オブジェクトタイプを操作名とともに使用すると、操作がシステム内で一意に示されます。
デフォルトでは、操作名はオブジェクトタイプと同じ名前を持つパッケージ内にある JSP の名前に対応します。パッケージングは、codebase/netmarkets/jsp を基準としています。たとえば、上記のサンプル XML での操作名は "create" です。ドキュメントオブジェクトタイプ内では、これは codebase/netmarkets/jsp/document/create.jsp に相当します。
操作の名前に適用されるネーミング規則は、英数字の任意の組み合わせとなります。
* 
すべてのカスタム操作名に企業固有のプレフィックスを使用して、製品で提供されている操作との干渉を回避してください。
次の表では、action の有効なパラメータについて説明します。パラメータの詳細は、codebase/config/actions/actions.dtd にも記載されています。
パラメータ
デフォルト値
有効な値
必須
説明
name
はい
操作を参照する際に使用される名前。
cad
false
true
いいえ
Creo 組み込みブラウザでのみこの操作が有効かどうかを示します。
installType
WINDCHILL
PDM
PDM
PJL
PDM
いいえ
インストール済みのコンポーネントに基づいて適用可能な操作。レガシーのみを目的としています。
multiselect
false
false / true
いいえ
この操作で行データの複数選択が可能であることを示すために使用します。これが true になるのは、この操作で属性 selectRequiredtrue に設定されている場合だけです。
selectRequired
false
false / true
いいえ
何も選択されていない場合にユーザーインタフェースで操作の続行を許可するかどうかを指定します。許可しない場合、エラーメッセージが表示されます。
* 
操作ハンドラ onClick が定義されている場合、onClick 関数はアイテムが選択されているかどうかをチェックする必要があります。そのためには、JavaScript 関数 table.getSelectionModel().hasSelection() を呼び出します。
afterJS
いいえ
ステップ完了後の操作ウィンドウステップのクライアント側検証で呼び出す JavaScript 関数名。
beforeJS
いいえ
ステップがロードされた後で操作ウィンドウステップのクライアント側検証で呼び出す JavaScript 関数名。
afterVK
いいえ
ステップ完了後の操作ウィンドウステップのクライアント側検証を呼び出すサーバーバリデータ名。
beforeVK
いいえ
ステップロード時の操作ウィンドウステップのクライアント側検証を呼び出すサーバーバリデータ名。
id
objecttype .action
いいえ
操作ウィンドウステップの ID をオーバーライドします。
preloadWizard Page
true
false
true
いいえ
操作ウィンドウの起動時に操作ウィンドウステップをダウンロードするかどうかを指定します。
hidden
false
false
true
いいえ
操作ウィンドウステップを最初に非表示にするかどうか、つまり操作をクリック不可としてレンダリングするかどうか。
required
false
false
true
いいえ
操作ウィンドウ内の完全なステップを表す操作に使用されます。そのステップを必須として指定します。
resourceBundle
いいえ
ローカライズされる操作のプロパティに使用するリソースバンドルのクラス名。
renderType
PDM
いいえ
デフォルト
http://<ホスト>/<Web アプリケーション>
通常:
http://<ホスト>/<Web アプリケーション><コマンドメソッド>
コンテキスト付きの通常:
http://<ホスト>/<Web アプリケーション><コマンドメソッド>?oid=...
PDM: URLactionDelegate によって生成された URL。テンプレート処理で使用します。
uicomponent
いいえ
役割ベースのアクセスを指定する roleaccessprefs.xml (uic.name) 内のエントリを参照します。
preloadJS
いいえ
操作ウィンドウステップがロードまたは表示される前に実行される JavaScript 関数。
postloadJS
いいえ
操作ウィンドウステップをメモリにロードしてからユーザーに表示するまでの間に実行される JavaScript 関数。
コマンド属性とコンポーネント属性
必要に応じて <action> タグのボディに <command> または <component> タグを挿入して、操作の処理を定義します。
<command
class="com.ptc.windchill.enterprise.doc.forms.CreateDocFormProcessor"
method="execute" windowType="popup" onClick="validateCreateLocation(event)"/>
または
<component name="my.component.id" windowType="page" />
class 属性によって、どのクラスを処理に使用するかが定義されます。
method 属性によって、どのメソッドをクラス内で実行するかが定義されます。
windowType 属性によって、どのウィンドウ操作を選択するかが決まります。
上記の例では、コマンドは操作ウィンドウ (ウィザード) である「新規ドキュメント」操作のためのものです。したがって、windowType は "popup" です。フレームワークによって、この操作を新しいウィンドウで起動する JavaScript が追加されます。指定したクラスとメソッドがサブミット時に実行されます。
コマンドパラメータ
パラメータ
デフォルト値
有効な値
必須
説明
class
いいえ
処理に使用されるクラス。
method
いいえ
クラス内の実行するメソッド。
url
いいえ
生成された URL のオーバーライドに使用します。
この属性を使用して、操作に関連する JSP の場所を指定できます。その値は、<Windchill>/codebase を基準とした JSP の相対パスにする必要があります。
onClick
いいえ
追加で呼び出す onClick 関数を指定します。これは特別な操作を実行するかどうかをユーザーに確認するのに便利です。
特定の場所で操作を使用する場合 (メニューバーやテーブル上のツールバーなど)、onClick が "if" 文に有効な定義式である必要があります。このため、onClick は単なる関数呼び出しでなければなりません。
以下は、onClick 関数が引数として渡すことのできるスコープ内変数です。
event - ブラウザイベント。
target - 'クリック' されたユーザーインタフェースコンポーネントを表すオブジェクト。
table - その操作を含むテーブル。テーブルに操作が含まれていなければ、これは null です。
onClick ではセミコロンや return ステートメントを使用してはいけません。例:
正:
onClick="doFoo()"
onClick="doFoo(event)"
誤:
onClick="doFoo();doBar();"
onclick="doFoo();Event.stop(event);"
* 
一重引用符 (') を入力する際に HTML エンコードされた記号を使用する必要はありません。普段どおりの一重引用符を使用してください。
操作が解析されると、操作フレームワークは問題のある定義を修復しようとします。修復できない場合、onClick 関数が警告に置き換えられます。操作が修復された場合には警告がログに記録され、そうでない場合にはエラーが記録されます。
操作に selectRequired 属性が設定されている場合、onClick ハンドラがその他のハンドラの前に呼び出されます。このため、onClick ハンドラはテーブル内で選択されているアイテムがあるかどうかをチェックする必要があります。
windowType
page
new
no_content
normal
popup
wizard_step
いいえ
new - ほかのウィンドウと外観は似ていますが、起動方法が異なります。すべてのフォームデータがポップアップウィンドウに表示され、より多くの情報を確認できます。ただし、追加分のフォームデータが、ポップアップ内にすでにあるフォームデータと重なって表示されることがあります。操作 URL をオーバーライドして情報を追加する方が簡単かもしれません。
no_content - ブラウザはこのリクエストに対するサーバーからの応答を無視します。この値はお勧めしません。JavaScript 関数で Ajax リクエストを手動で作成することをお勧めします。
normal - フォームをサブミットします。
page - 新規ページを表示します。
popup - モードレスのポップアップ操作ウィンドウを作成します。
wizard_step - 操作ウィンドウに操作をステップとして表示します。
コンポーネント属性は command 属性とよく似ています。しかし、直接 URL を指定する代わりに、MVC コンポーネント ID を指定すると URL が生成されます。MVC コンポーネントは、MVC 委任の正しい URL を判断できます。詳細については、MVC コンポーネントを参照してください。
コンポーネントパラメータ
パラメータ
デフォルト値
有効な値
必須
説明
name
Yes
この操作をクリックしたときに表示に使用する MVC コンポーネントの ID。
componentType
INFO
PICKER
SEARCH
TABLE
WIZARD
WIZARD_TABLE
WIZARD_ATTRIBUTES_TABLE
INFO_ATTRIBUTES_TABLE
SIMPLE
MINI_INFO
PRIMARY_ATTRIBUTES
いいえ
componentType によって、生成されたページに表示されるオブジェクトが編集可能か、読み取り専用か、検証によって非表示になるかが決まります。値は com.ptc.core.ui.resources.ComponentType で定義されています。
INFO などの特定の条件では、コンポーネントタイプは URL を typeBased に変更できます。一部の操作は、特定のコンポーネントタイプでしか使用できません。
urlParams
操作を描画するたびに、生成された MVC URL に追加される URL パラメータ。
typeBased
false
true
MVC 委任のルックアップ時に操作対象のオブジェクトのタイプを含めるかどうかを指定します。タイプベースのコンポーネントでは、生成される MVC URL は /comp/ ではなく /tcomp/ です。
onClick
いいえ
追加で呼び出す onClick 関数を指定します。これは特別な操作を実行するかどうかをユーザーに確認するのに便利です。
特定の場所で操作を使用する場合 (メニューバーやテーブル上のツールバーなど)、onClick が "if" 文に有効な定義式である必要があります。このため、onClick は単なる関数呼び出しでなければなりません。
以下は、onClick 関数が引数として渡すことのできるスコープ内変数です。
event - ブラウザイベント。
target - 'クリック' されたユーザーインタフェースコンポーネントを表すオブジェクト。
table - その操作を含むテーブル。テーブルに操作が含まれていなければ、これは null です。
onClick ではセミコロンや return ステートメントを使用してはいけません。例:
正:
onClick="doFoo()"
onClick="doFoo(event)"
誤:
onClick="doFoo();doBar();"
onclick="doFoo();Event.stop(event);"
* 
一重引用符 (') を入力する際に HTML エンコードされた記号を使用する必要はありません。普段どおりの一重引用符を使用してください。
操作が解析されると、操作フレームワークは問題のある定義を修復しようとします。修復できない場合、onClick 関数が警告に置き換えられます。操作が修復された場合には警告がログに記録され、そうでない場合にはエラーが記録されます。
操作に selectRequired 属性が設定されている場合、onClick ハンドラがその他のハンドラの前に呼び出されます。このため、onClick ハンドラはテーブル内で選択されているアイテムがあるかどうかをチェックする必要があります。
windowType
page
new
no_content
normal
popup
wizard_step
いいえ
new - ほかのウィンドウと外観は似ていますが、起動方法が異なります。すべてのフォームデータがポップアップウィンドウに表示され、より多くの情報を確認できます。ただし、追加分のフォームデータが、ポップアップ内にすでにあるフォームデータと重なって表示されることがあります。操作 URL をオーバーライドして情報を追加する方が簡単かもしれません。
no_content - ブラウザはこのリクエストに対するサーバーからの応答を無視します。この値はお勧めしません。JavaScript 関数で Ajax リクエストを手動で作成することをお勧めします。
normal - フォームをサブミットします。
page - 新規ページを表示します。
popup - モードレスのポップアップ操作ウィンドウを作成します。
wizard_step - 操作ウィンドウに操作をステップとして表示します。