アドレス指定

アドレス指定は、UI ツールキット内のすべてのビューでサポートされます。これには、UI ページで定義された他のビュー内でネストされているビューも含まれます。

アドレス指定スキームは、ツリー構造に似た階層型の構造であり、ルートは表示されたページの最上部で / として定義されます。 アドレス指定スキームの構造は、ディレクトリーに使用される構造と似ています。 ツリー内の後続のノードは、ページのロード時に追加されます。

使用できるノードの基本型には、コンテナーとエレメントの 2 つがあります。 コンテナー・ノードには、他のノード (エレメント、ビュー、他のコンテナー・ノードなど) が含まれます。
制約事項: 非推奨の Coach ツールキット内のビューでは、ここで説明されているアドレス指定スキームを使用してアドレス指定を行うことができません。

通常、UI ビューでアドレス指定を使用するのは、ビュー・イベントによって、あるいは一部のビューで使用される数式によって呼び出される関数がある場合です。 関数は、ページ上のカスタム HTML の JavaScript スクリプト・ブロック、またはビューの「動作」プロパティーの「インライン Javascript」セクションで、インライン関数として指定できます。

アドレス指定スタイル

相対アドレス指定スタイルと絶対アドレス指定スタイルがサポートされます。 / から参照を開始することは、絶対参照を意味します (例えば、ビュー・ツリーのルート・レベルから開始する)。 パスの先頭の / を省略することは、「現在の位置が起点」であることを意味します。 参照で .. を使用すると、ファイル・ディレクトリー・ツリーの動作と同様に、参照が 1 つ上のレベルに戻ります。

数式内の参照は、その数式を設定している対象のフィールドの参照点から計算されます。
  • 現在の位置と同じレベルのフィールドは、フィールド名を使用して参照されます (参照の先頭で / を使用しません)。
  • 現在の位置より 1 つ上のレベルのフィールドは、../FieldOneLevelAboveMe のように参照できます。
  • 2 つ上のレベルのフィールドは、../../FieldOneLevelAboveMe のように参照されます (これ以降も同様)。
  • ../ を使用した相対アドレス指定は、場合によっては便利です。

ビューにアクセスするための JavaScript メソッド

カスタム HTML から
JavaScript ブロック内でビューにアクセスするには、ページ・グローバル・ビューとその page.ui.get(ControlId path) メソッドを使用します。 例えば、Text1 という名前のテキスト・ビューがあり、検証のために、ボタンの「クリック時」イベントで呼び出される関数でそのビューにアクセスしたいとします。 これを行うには、以下の例のようなコードを使用します。
var myTextField = page.ui.get("/Text1");
myTextField.getValue() // returns the value in the text field
myTextField.focus() // would set the focus to the text field.
ビューの「インライン Javascript」から
コンテナー・ビューに含まれている関数からビューにアクセスするには、以下のいずれかのオプションを使用します。
bpmEventHelper.ui.getView(ControlId [, thisview])
thisview.ui.get(ControlId)
ここで、thisview はコンテナー・ビューで定義されています。
例えば、Text1Select1 という名前の 2 つのビューが含まれているコンテナー・ビューを定義したとします。検証のためには、親ビュー内のボタンの「クリック時」イベントで呼び出される validateControls 関数からその 2 つのネストされたビューにアクセスする必要があります。 ビューにアクセスするには、以下の例のようなコードを、コンテナー・ビューの「動作」プロパティーの「インライン Javascript」セクションに入れます。
var thisview = this; // required

this.validateControls = function(button)
{
    var textControl = bpmEventHelper.ui.getView("Text1", thisview);
    var selectControl =  thisview.ui.get("Select1");
    textControl.getValue(); // returns the value of the SPARK control in 
    this coach view with the ControlId "Text1"
    selectControl.getSelectedItem(); // returns the selected value in the 
    SPARK control in this coach view with the ControlId "Select1"
}
		
一般的な例として、Address ビュー内の FirstName テキスト・ビューにアクセスするには、次のように絶対アドレスを使用してアドレス指定します。
"/Address/FirstName" or "${Address}.ui.get('FirstName')"
数式内
ビューは、以下の構文を使用して数式内で参照できます。
  • ${FieldName} は、control id = FieldName のビューを参照します。
  • @{FieldName} は、control id = FieldName のビューの値を参照します。
  • ${FieldName}.getValue()@{FieldName} は同等です。

アドレス指定不能なレイアウト・ビュー

単にレイアウトの目的で使用されるビューは、アドレスから省略する必要があります。 例えば、VerticalLayout ビュー内でネストされた FirstName ビューは、アドレス /VerticalLayout/FirstName ではなく /FirstName を使用してアドレス指定することができます。
ヒント: アドレス指定不可のカスタム・コンテナー・ビューをアドレスから除外するには、「動作」の下のインライン JavaScript セクションで、カスタム・ビューの load 関数で以下のプロパティーを true に設定します。
this.constructor.prototype.IS_ADDRESS_INVISIBLE = true;

レイアウトのためだけに使用するアドレス指定不可のビューは、キャプション・ボックス省略表示可能パネル据え置きセクション水平レイアウト水平分割入力グループモーダル・セクションパネルパネル・フッターパネル・ヘッダーポップアップ・メニューレスポンシブ・センサースタック状況ボックステーブル・レイアウトテーブル・レイアウトのセルテーブル・レイアウトの行タブ・セクションツールチップ垂直レイアウトウェル です。

アドレス指定可能なカスタム・ビュー

アドレス指定可能なカスタム・ビューを作成する場合は、load メソッドで次の関数を呼び出します。
bpmEventHelper.ui.loadView(this)
カスタム・ビューにコンテンツ・ボックスがある場合は、代わりに次の関数を呼び出します。
bpmEventHelper.ui.loadContainer(this)
ビューの unload 関数で、次のように該当する関数を呼び出します。
bpmEventHelper.ui.unloadView(this)
または
bpmEventHelper.ui.unloadContainer(this)

テーブル内のピア・フィールドの参照

テーブル内で数式を使用する場合、フィールド名の後に = を付ける構文を使用して、my 行のフィールドにアクセスできます。 例えば、テーブル内に Quantity (Integer)、Cost (Decimal)、および Total (Decimal) の各ビューを定義済みであるとします。 次の数式を使用して、Total ビューの値を指定できます。
@{Quantity=} * @{Cost=}
Total ビューには、データ・バインディングは不要であるので注意してください。つまり、テーブルに Total データ・フィールドは不要です。

ヘルパー関数

ヘルパー関数の JSDoc については、CoachView を参照してください。

以下の例のように、bpmext.ui.View 名前空間内でヘルパー関数 getParentgetSibling を使用できます。 この例では、階層全体を知らなくても、コンテナー・ビューやピア・ビューに容易にアクセスできます。

例えば、CV という名前のコンテナー・ビューがあるとします。このコンテナー・ビューには、Button1 および Button2 という名前の 2 つのビューが含まれています。 btn1ViewButton1bpmext.ui.View オブジェクトになっている場合は、btn1View.ui.get("CV") または btn1View.ui.getParent(); を使用して CV にアクセスできます。また、bt1View.ui.getSibling("Button2" ) を使用して Button2 にアクセスできます。