UIヒント構文
内容
使用例
uiHint機能の使用例は、次のビジネス・オブジェクトを参照してください。
ユーザー割当キーがあるビジネス・オブジェクト
次の例は、ユーザー指定キーがあるオブジェクトでのuiHintの有効化に使用するパターンを示しています。
- F1-OutcomeStyleLookup。この拡張可能参照ビジネス・オブジェクトに状態遷移は不要ですが、複製処理と削除処理は可能です。
- F1-TodoSumEmailTyp。この要求タイプは、表示マップでの状態遷移のサポートに必要なヒントを示します。
- F1-WebSvc。このWebサービス・ビジネス・オブジェクトは、複雑なJavaScript要件を管理するための典型的な例です。表示マップおよび入力マップの両方に、特殊なjavascriptを必要とする機能があります。
システム生成キーがあるビジネス・オブジェクト
次の例は、システム生成キーがあるオブジェクトでのuiHintの有効化に使用するパターンを示しています。
-
F1-GenericAttachment。この添付ビジネス・オブジェクトにはシステム割当キーがあり、次の特別な処理を伴います。
- F1-AttachmentMain。このメイン・セクションのデータ領域には、すべての添付に共通する、キー、ビジネス・オブジェクトおよびバージョンなどの要素が含まれます。このデータ領域を使用して、生成されたマップのメイン・セクションを定義するため、マップのメイン・セクションは、実装でデータ領域拡張機能を使用して拡張できます。
- F1-AttachmentActions。このレコード処理マップには、標準の処理である「編集」と「削除」に加えて、添付のみで使用するカスタム処理である「ビュー」と「アップロード」が含まれます。
- F1-AttachmentIDFrag。このレコード情報マップには、添付の主キーが含まれます。
表示マップ・サービス・スクリプト
表示マップ・サービス・スクリプトは、動的HTML生成を使用して完全にサポートされます。ただし、表示サービス・スクリプトの必要性をなくすために、ビジネス・オブジェクト・ステータスを記述して有効な状態遷移を決定する、自己完結型のuiHint機能が開発されました。そのため、表示サービス・スクリプトを作成する最も一般的な2つの理由がなくなりました。
表示前処理スクリプトを使用する典型的な理由は、ビジネス・サービス・スキーマを含む埋込みマップ・フラグメントがある場合です。表示サービス・スクリプトを使用して、ビジネス・サービスを起動できます。このシナリオをサポートするには、マップ・フラグメントと表示サービス・スクリプトの両方でビジネス・サービスを宣言する必要があります。
- F1-ExcelSpreadsheet。この添付ビジネス・オブジェクトには、添付ビジネス・オブジェクトの表示前の操作に使用する表示サービス・スクリプトがあります。
- F1-AttchDtlU。この表示サービス・スクリプトのスキーマはuiHintネームスペースを使用して定義されており、生成された表示マップを保持することになります。
保守前処理サービス・スクリプト
uiHintでは保守前処理サービス・スクリプトを使用できます。
- F1-ExcelSpreadsheet。この添付ビジネス・オブジェクトには、保守マップのレンダリング前に添付ビジネス・オブジェクトの操作に使用する保守前処理サービス・スクリプトがあります。
- F1-AttchPre。この前処理サービス・スクリプトのスキーマは、埋込みboGroupおよび処理要素がある保守マップ・スキーマと似ています。これは、保守マップのレンダリング前に起動されます。
保守後処理サービス・スクリプト
uiHintでは保守後処理サービス・スクリプトを使用できます。
- F1-ExcelSpreadsheet。この添付ビジネス・オブジェクトには、保守マップのレンダリング後に添付ビジネス・オブジェクトの操作に使用する保守後処理サービス・スクリプトがあります。
- F1-AttchPost。この後処理サービス・スクリプトのスキーマは、埋込みboGroupおよび処理要素がある保守マップ・スキーマと似ています。これは、保守マップのレンダリング後に起動されます。
技術面での注意
動的HTML生成をサポートするには、次の前提条件が必要です。
スキーマ要件
自動UI生成をサポートするには、ビジネス・オブジェクト・スキーマに次の内容が含まれている必要があります。
- <schema xmlns:uiHint="http://oracle.com/ouafUIHints">。スキーマ・ノードにはuiHintネームスペースの名前を指定する必要があります。
- isPrimeKey="true"。主キーの一部であるビジネス・オブジェクト・スキーマのすべての要素が識別されている必要があります。
保守スクリプト要件
メンテナンス・オブジェクトの保守スクリプトが動的生成に対して有効である必要があります。
スクリプトがF1-BOProcを実行した後、おそらく特別な機能は必要ありません。ただし、保守スクリプトにF1-GetValOptへのそれ自体のコールが含まれている場合は、そのコールの前に次の文が必要です。
move 'false' to "F1-GetBOOpts/input/maintenanceMapRequired";
performScript 'F1-GetValOpt';
F1-GetValOptへのコール後、ビジネス・オブジェクトにそれ自体の保守マップがない場合は、スキーマのマップを動的に宣言するために次のロジックを含める必要があります。
// Perform Main Processing
if ("F1-GetBOOpts/output/maintenanceMap = $BLANK")
declareBOWithBOGroup "$bo" as 'map_schema';
else
declareMap "F1-GetBOOpts/output/maintenanceMap" as 'map_schema';
end-if;
入力マップ・タイトルの書式設定
uiHint要素を使用して、保守マップのタイトルを作成できます。タイトルは、表示マップではなく、保守マップにのみ印刷されます。見出しスタイルを使用して、マップの最初の行の中央に印刷されます。
構文 | 摘要 | 例 |
---|---|---|
<uiHint:title mdField=" "/> |
参照先メタデータ・フィールドのラベルをタイトルとして表示します。 |
|
<uiHint:title text=" "/> |
指定されたテキストをタイトルとして表示します。このメカニズムは、複数の言語がサポートされている場合は使用しないでください。 |
|
セクションの作成
uiHintネームスペースでは、UIマップ・セクションの定義をサポートしています。セクションは現在、スキーマにlabelまたはmdFieldを含むグループ・ノードまたはリスト・ノードがある場合に、生成されたUIマップに作成されます。ここで説明する機能を使用すると、ラベル付けされたグループ・ノードまたはリスト・ノードを必要とせずに、スキーマ内にセクションを作成できます。すべてのセクションは、startSectionとendSection要素ペアの範囲内にあることが必要です。
構文 | 属性のサポート | 摘要 |
---|---|---|
<uiHint:startSection .../> |
sectionColumn="left | right | fullWidth | float" |
デフォルトでは、セクションは表示マップ全体の幅になります。この設定を上書きするには、半分の幅のセクションを左(left)または右(right)の列に表示するか、あるいは浮動(float)で表示するかどうかを指定します。浮動としてマークされたセクションは半分の幅で表示され、前のセクションが表示されるのか、条件によって非表示になるのかに従って位置揃えされます。たとえば、左揃えセクションの次に浮動セクションが続く場合、浮動セクションは、左のセクションが作成されている場合は右列に表示され、左のセクションが非表示または縮小表示の場合は、左列に表示されます。 |
editColumn="left | right | fullWidth | float" |
デフォルトでは、セクションは保守マップ全体の幅で表示されます。この設定を上書きするには、半分の幅のセクションを左(left)または右(right)の列に表示するか、あるいは浮動(float)で表示するかどうかを指定します。動作はsectionColumnの動作と類似しています。 | |
sectionOpen="false" |
デフォルトでは、セクションは最初は開いて表示されます。セクションを最初は閉じて(縮小して)表示する場合は、この属性を指定します。 | |
mdField=" " |
ラベルをセクションの見出しとして使用するメタデータ・フィールドの名前を指定します。 | |
label=" " |
セクションの見出しとして使用する明示的なテキストを指定します。 | |
visibleOn="displayMap | inputMap" |
デフォルトでは、セクションは表示マップと入力マップの両方に表示されます。この属性を使用して、セクションの表示を表示マップ(displayMap)または入力マップ(inputMap)のいずれかに制限します。 |
終了セクション属性の構文は<uiHint:endSection/>です
例:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection label="Main" sectionColumn="left"/>
...
<uiHint:endSection/>
</schema>
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:startSection mdField="F1-ADD-INFO" sectionColumn="fullWidth" editColumn="float" sectionOpen="false" visibleOn="displayMap"/>
...
<uiHint:endSection/>
</schema>
マップ・フラグメントの包含
includeMap要素名を使用して、UIマップ・フラグメントを指定し、生成されたマップにHTMLを挿入できます。これによって、ユーザー・インタフェースでより高度な動作をサポートできます。マップ・フラグメントにレンダリングするために含まれた要素について、要素をそのスキーマ定義で非表示にしてください。そうしないと、要素に対してHTMLが自動的に生成されます。
構文 | 属性のサポート | 摘要 |
---|---|---|
<uiHint:includeMap .../> |
map=" " |
マップの名前を指定します。 |
visibleOn="displayMap | inputMap" |
デフォルトでは、マップ・フラグメントの詳細は表示マップと入力マップの両方に表示されます。セクションの表示を制限する場合は、この属性を使用します。 |
例:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
...
</schema>
XHTML UIマップ・フラグメント内でJavaScriptが必要な場合は、![CDATA[ ]]タグ内にバインドして、有効なXMLドキュメントを確保する必要があります。タグ自体はコメントアウトして、古いブラウザとの互換性の促進が必要な場合があります。次に例を示します。
<script type="text/javascript">
/* <![CDATA[ */
//
//javascript
//
/* ]]> */
</script>
キャッシュのフラッシュ: パフォーマンス上の理由で、フレームワークでは、ビジネス・オブジェクト・スキーマ、データ領域およびUIマップを自動的にキャッシュします。ビジネス・オブジェクトを更新すると、キャッシュは自動的にフラッシュされます。ただし、ビジネス・オブジェクトにデータ領域または埋込みUIマップ・フラグメントのいずれかが含まれている場合は、変更が認識されるように、キャッシュを手動でフラッシュする必要があります。詳細は、「サーバー・キャッシュ」を参照してください。
ドロップダウンの作成
編集マップにドロップダウン・リストを作成するための構文が用意されています。ドロップダウンは、サービス・スクリプト、ビジネス・サービスまたは表から返されるデータを使用して作成できます。
構文 | 摘要 |
---|---|
uiHint:select="ss: " |
コロンの後ろにサービス・スクリプトの名前を指定します。 |
uiHint:select="bs: " |
コロンの後ろにビジネス・サービスの名前を指定します。 |
uiHint:select="table: " |
コロンの後ろに表の名前を指定します。 |
サービス・スクリプトまたはビジネス・サービスを指定するときは、サービスとの間でデータの受け渡すために追加のマッピング情報が必要です。
構文 | 値 | 摘要 |
---|---|---|
uiHint:selectIn=" " |
serviceXPath:要素 | 別の要素の値をサービスに渡すために使用されます(サービスのXPathへのマッピング)。 |
serviceXPath:'リテラル' | 定数またはリテラルをサービスに渡すために使用されます(サービスのXPathへのマッピング)。 | |
uiHint:selectOut="valuePath: ; descPath: " |
次の例を参照してください。 | サービスの出力内で値を保持している要素と摘要を保持している要素を示すために使用されます。 |
例:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<boStatus mapField="BO_STATUS_CD" uiHint:select="bs:F1-BOStateReasonList"
uiHint:selectIn="boStatusBO:boStatusBO" uiHint:selectOut="valuePath:results/status;
descPath:results/description"/>
...
<algorithm mdField="ALG_CD" uiHint:select="bs:F1-RetrieveSysEvtAlgorithms"
uiHint:selectIn="algorithmEntity:'F1AA';" uiHint:selectOut="valuePath:results/algorithm;
descPath:results/description"/>
...
<outboundMsgType mdField="OUTMSG_TYPE_CD" required="true" fkRef="F1-OMTYP" uiHint:select="table:F1_OUTMSG_TYPE"/>
</schema>
条件によって非表示の要素
displayNone属性は、マップ上の要素を条件に基づいて非表示にするために使用されます。
構文 | 値 | 摘要 |
---|---|---|
uiHint:displayNone= |
"'XPath','値','!=' | '='" | 別の要素(そのXPathを使用して参照されている)の値に基づいて、この要素を条件によって非表示にするために使用されます。空白値を問い合せるために' 'の値を入力します。デフォルトでは、演算子は'='です。これは'!='を使用して上書きできます。 |
"関数名, true | false" | ブールを返すJavaScript関数を指定するために使用されます。 |
この属性のカンマ区切り文字列値内で埋込みスペースはサポートされていません。
この設定は、グループ・ノード、リスト・ノードおよび要素(リスト内の要素を除く)で使用できます。リスト内の要素は条件によって非表示にできません。
次の例は、データ型要素の値に基づいて非表示または表示になる2つの要素(通貨参照および参照)を示しています。データ型要素の値は変更可能で、変更された場合は後続要素を非表示にする条件を再評価する必要があるため、この例では依存動作のトリガーも示しています。
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<dataType mdField="F1_SE_DATA_TYPE" dataType="lookup" lookup="F1_SE_DATA_TYPE"
uiHint:dependents="currencyRef;lookup; "/>
<currencyRef mdField="F1_SE_CURR_REF_LBL" uiHint:displayNone="'dataType','F1MO','!='"/>
<lookup mdField="F1_SE_LOOKUP_LBL" fkRef="F1-LKUPF" uiHint:displayNone="'dataType','F1LP','!='"/>
...
</schema>
次の例は、パラメータを受け取る関数の参照を示しています。
<uiHint:startSection mdField="F1_SE_DEFAULT_SECT"
uiHint:displayNone="isApplicableForSchemaType(item,'F1MP'),true"/>
条件によって保護の要素
保護属性は、マップ上の要素を他の要因に基づいて保護するために使用されます。
構文 | 値 | 摘要 |
---|---|---|
uiHint:protect= |
"'XPath','値','!=' | '='" | 別の要素(そのXPathを使用して参照されている)の値に基づいて、この要素を条件によって保護するために使用されます。空白値を問い合せるために' 'の値を入力します。デフォルトでは、演算子は'='です。これは'!='を使用して上書きできます。 |
"関数名, true | false" | ブールを返すJavaScript関数を指定するために使用されます。 | |
"'action','A' | 'C','!=' | '='" |
'action'設定を使用して、現在の処理に基づいて要素を保護します。たとえば、レコードの追加時にのみ特定の要素を指定できるようにする場合があります。それ以降のレコードへの変更では、要素を変更から保護する必要があります。このオプションを使用するとき、'値'の有効値はA (追加)およびC (変更)です。 |
この属性のカンマ区切り文字列値内で埋込みスペースはサポートされていません。
この保護UIは、グループ・ノード、リスト・ノードおよび要素(リスト内の要素を除く)で使用できます。リスト内の要素は条件によって保護できません。
次のUIヒントは、処理が'C'の場合に統計カテゴリを保護します。
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<statisticsCategory dataType="lookup" mapField="STAT_CATEGORY_FLG"
lookup="STAT_CATEGORY_FLG" uiHint:protect="'action','C','='"/>
...
</schema>
依存動作のトリガー
依存属性は、親要素が変更された場合に子要素で動作をトリガーするために使用されます。
構文 | 値 |
---|---|
uiHint:dependents=" " |
セミコロンで区切られた1つ以上の依存要素のリスト。 |
次の例は、ある要素のドロップダウン・リストが別の要素の値によって制御されることを示しています。この例では、国が変更されると、選択する洲のリストは、指定された国の州のみを表示するように変更されます。
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<country label="Country" uiHint:select="table:CI_COUNTRY" uiHint:dependents="state"/>
<state label="State" uiHint:select="ss:CM-RetrieveCountryStates"
uiHint:selectIn="input/country:country;" uiHint:selectOut="valuePath:output/state/stateCode;
descPath:output/state/stateDesc"/>
...
</schema>
依存ターゲットには、要素のみを指定でき、グループ・ノードやリスト・ノードは指定できません。
依存要素および親要素の"id"属性値は変更しないでください。依存へのデータ移入は、"id"属性値に基づいて行われます。
レンダリング・ターゲットの制御
デフォルトでは、抑制されていないすべての要素が表示マップと入力マップの両方に表示されます。visibleOn属性を使用して、要素を表示マップまたは入力マップのいずれかに挿入するように制限します。
構文 | 値 |
---|---|
uiHint:visibleOn= |
"displayMap" |
"inputMap" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"
...
</schema>
テキスト領域の生成
デフォルトでは、文字列要素の入力マップには、標準のテキスト・ボックスがレンダリングされます。フィールドが大きいために、より大きいテキスト領域(スクロール・バー付き)を確保する場合は、textArea属性を使用します。
構文 |
---|
uiHint:textArea="true" |
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<message label="Message" uiHint:textArea="true"/>
...
</schema>
外部キー参照のデフォルトの変更
デフォルトでは、fkRef付きの要素が表示されると、情報文字列、コンテキスト・メニュー、ナビゲーションおよび検索が有効になります(外部キー参照が適切に構成されている場合)。これらの機能を選択的にオフにできる構文が用意されています。
構文 |
---|
uiHint:fkRef="info:false;context:false;navigation:false;search:false;" |
オフにする機能のみを指定する必要があります。次の例では、ナビゲーション機能をオフにしています。これは、テキストをハイパーテキストでレンダリングしないことを意味します。
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<attachmentID fkRef="F1-ATTCH" primeKey="true" suppress="input" uiHint:fkRef="navigation:false;"/>
...
</schema>
自動数値書式設定の非表示
デフォルトでは、数値フィールド(dataType="number")は数値として書式設定されます。英数字書式設定を適用する属性が用意されています。
注意: dataTypeが明示的に指定されていない場合は、mdFieldまたはmapFieldから導出されます。
構文 |
---|
uiHint:alphaFormat="true|false" |
デフォルトでは、この値はfalseです(したがって、省略しても構いません)。
例:
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
...
<numberCount mdField="" dataType="number" uiHint:alphaFormat="true"/>
...
</schema>
入力データの自動大文字使用
uiHintには、入力データを自動的に大文字使用にする構文が用意されています。
構文 |
---|
uiHint:capitalize="true|false" |
デフォルトでは、この値はfalseです(したがって、省略しても構いません)。
<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/>
</schema>
この属性をスキーマ・デザイナで使用できるのは、isPrimeKeyがtrueに設定されている場合のみです。ソース・ビューアの使用時は、任意の文字列属性に属性を追加できます。