UI 提示語法

工作範例

如需 uiHint 功能的工作範例,請參考下列業務物件:

具有使用者指派索引鍵的業務物件

下列範例說明在具有使用者指定索引鍵的物件啟用 uiHint 所使用的模式。

  • F1-OutcomeStyleLookup。此可延伸查尋業務物件不需要狀態轉變,但允許複製與刪除動作。
  • F1-TodoSumEmailTyp。此要求類型說明支援顯示對應中狀態轉變所需的提示。
  • F1-WebSvc。對於管理複雜的 JavaScript 需求,此 Web 服務業務物件是個很好的例子。顯示與輸入對應都有需要特殊 JavaScript 的功能。

具有系統產生索引鍵的業務物件

下列範例說明在具有系統產生索引鍵的物件啟用 uiHint 所使用的模式。

  • F1-GenericAttachment。此附件業務物件具有系統指派的索引鍵,包含下列特殊處理:
    • F1-AttachmentMain。這是含所有附件通用元素 (包含索引鍵、業務物件及版本) 的主要區段資料區域。因為此資料區域用於定義所產生對應的主要區段,因此實作可透過區域延伸功能來延伸對應的主要區段。
    • F1-AttachmentActions。此記錄動作對應包含標準動作 (編輯與刪除),加上僅由附件使用的自訂動作 (檢視與上傳)。
    • F1-AttachmentIDFrag。此記錄資訊對應包含附件的主索引鍵。

顯示對應服務指令檔

透過產生動態 HTML 可完整支援顯示對應服務指令檔。不過,為了免於使用顯示服務指令檔,因此開發了獨立 uiHint 功能,以撰寫業務物件狀態和判斷有效的狀態轉變。如此一來,排除了兩個建立顯示服務指令檔最常見的原因。

如果您有包含業務服務結構的內嵌對應片段,這就是使用顯示前指令檔的一個典型原因。顯示服務指令檔可用於叫用業務服務。對應片段與顯示服務指令檔都必須宣告業務服務結構,以支援此情況。

警告:用於顯示物件對應的區域必須有導出指令檔,例如 F1-GncDsMpDZF1-GenDss,該指令檔將會叫用業務物件的顯示服務指令檔 (如果已定義為業務物件選項) - 但不需要明確的顯示對應業務物件選項。此外,uiHint 功能必須啟用顯示服務指令檔的結構 - 因為區域會動態轉譯指令檔的結構而非業務物件結構。
  • 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"。必須識別屬於主索引鍵一部分之業務物件結構的每個元素。

維護指令檔需求

動態產生必須啟用維護物件的維護指令檔。

警告:業務物件維護業務處理助理指令檔必須宣告為 uiHint 維護功能的維護物件選項才能運作!

如果指令檔執行 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;

格式化輸入對應標題

備註:此主題中的「欄位」一詞,是指顯示和擷取「欄位」資料的一般概念,也是指產品中提供用於定義欄位的中繼資料物件。若是指後者,則會使用「MD 欄位」(中繼資料欄位) 一詞。

uiHint 元素可用於建立維護對應的標題。標題只會列印在維護對應,不會列印在顯示對應。它會列印為對應中的第一行、置中並具備標題樣式。

語法 描述 範例

<uiHint:title mdField=" "/>

將所參考 MD 欄位的標籤顯示為標題。

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:title 
   mdField="STATUS_RSN_LBL"/>
   ...
</schema>

<uiHint:title text=" "/>

將所指文字顯示為標題。(支援多個語言時請勿使用此機制)。

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
<uiHint:title 
     text="Status Reason"/>
   ...
</schema>

建立區段

uiHint 命名空間支援 UI 對應區段的定義。請注意,當結構具有附帶標籤或 mdField 的群組或列表節點時,一般會在產生的 UI 對應中建立區段。此處描述的功能不需要結構中有標記的群組或列表節點即可建立區段。每個區段必須侷限在 startSectionendSection 元素組中。

語法 支援屬性 描述

<uiHint:startSection .../>

sectionColumn="left | right | fullWidth | float"

預設為區段在顯示對應中是完整寬度。若要置換該設定,請指定您要一半寬度的區段顯示於左 (left) 或右 (right) 資料欄,或是浮動 (float)。標示為 'float' 的區段將顯示一半寬度,並根據先前區段是顯示或條件式隱藏來對齊。例如,如果靠左對齊區段後面是浮動區段,植入左區段時,浮動區段會顯示在右資料欄,但如果左區段隱藏/收合時,則會顯示在左資料欄。

editColumn="left | right | fullWidth | float"

依預設,區段在維護對應中顯示為完整寬度。若要置換該設定,請指定您要一半寬度的區段顯示於左 (left) 或右 (right) 資料欄,或是浮動 (float)。此行為與 sectionColumn 行為類似。

sectionOpen="false"

依預設,區段在初始顯示時為開啟。指定此屬性以將區段初始顯示為關閉 (收合)。

mdField=" "

指定其標籤應用作區段標題之 MD 欄位的名稱。

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>
備註:群組與列表節點也可以使用 sectionColumn、editColumn 及 sectionOpen 屬性。

包含對應片段

您可以使用 includeMap 元素名稱,指定 UI 對應片段將 HTML 置入產生的對應中。這可讓您在使用者介面支援更複雜的行為。針對內含用於在對應片段中進行轉譯的任何元素,請確定在其結構定義中隱藏元素,否則會自動產生元素的 HTML。

語法 支援屬性 描述

<uiHint:includeMap .../>

map=" "

指定對應的名稱。

visibleOn="displayMap | inputMap"

依預設,對應片段的明細會出現在顯示與輸入對應中。使用此屬性來限制區段的顯示。

範例:

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
  ...
  <uiHint:includeMap map="StandardActionButtons" visibleOn="displayMap"/>
  ...
</schema>
備註: 對應片段結構的重要注意事項:如果對應片段包含結構,則轉譯業務物件進行匯入時,會將片段結構置入動態產生的結構中。從技術上來說,會將片段結構插入對應結構內的 boGroup 結構之後。此方法可用於支援實作內嵌 JavaScript 中,業務物件與 oraInvokeBS 函數呼叫的維護前後指令檔處理。

如果 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:element 用於將另一個元素的值傳遞至服務 (服務 XPath 的對應)。
serviceXPath:'Literal' 用於將常數或文字傳遞至服務 (服務 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','value','!=' | '='" 用於根據另一個元素的值 (使用其 XPath 參考) 來條件式隱藏此元素。輸入 ' ' 值以查詢空白值。依預設,運算子為 '='。這可以使用 '!=' 置換。
"函數名稱, true | false" 用於指出必須傳回布林的 JavaScript 函數。
警告:

此屬性以逗號分隔的字串值中不支援內嵌空格。

此設定可用於群組節點、列表節點及元素 - 列表中的元素除外。列表中的元素無法條件式隱藏。

下列範例說明將根據資料類型元素的值隱藏或顯示的兩個元素 (幣別參考與查尋)。請注意,此範例也會說明觸發相依行為,因為資料類型元素的值可能會變更,若變更,則應重新評估隱藏後續元素的條件。

<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','value','!=' | '='" 用於根據另一個元素的值 (使用其 XPath 參考) 來條件式保護此元素。輸入 ' ' 值以查詢空白值。依預設,運算子為 '='。這可以使用 '!=' 置換。
"函數名稱, true | false" 用於指出必須傳回布林的 JavaScript 函數。

"'action','A' | 'C','!=' | '='"

使用 'action' 設定來根據目前動作保護元素。例如,新增記錄時只能指定特定元素。對該記錄的任何後續變更都應保護元素不會被改變。使用此選項時,'value' 的有效值為 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=" "

一或多個以分號分隔的相依元素列表。

下列範例說明一個元素的下拉式列表由另一個元素的值所驅動。在此範例中,當國家變更時,供選擇的州列表應變更為僅顯示所指國家的州。

<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>
快速路徑:請參考 UI 對應屬性一節中的外來索引鍵參考格式,以取得每個外來索引鍵參考設定的更多資訊。

隱藏自動編號格式

依預設,數值欄位 (dataType="number") 會格式化為數字。系統會改為提供屬性,而不是套用英數格式。

備註:如果未明確指定 dataType,則會從 mdFieldmapField 導出。

語法
uiHint:alphaFormat="true|false"

依預設,其值為 (因此可完全被排除在外)。

範例:

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
 ...
 <numberCount mdField="" dataType="number" uiHint:alphaFormat="true"/>
    ...
</schema>

自動大寫輸入資料

uiHint 會提供自動大寫輸入資料的語法。

語法
uiHint:capitalize="true|false"

依預設,其值為 (因此可完全被排除在外)。

<schema xmlns:uiHint="http://oracle.com/ouafUIHints">
 <toDoTypeCd mdField="TD_TYPE_CD" uiHint:capitalize='true' isPrimeKey="true"/> 
</schema>
備註:如果已設定 uiHint:textArea="true",則會忽略此屬性。

isPrimeKey 設為時,只能在結構設計工具中使用此屬性。使用來源檢視器時,可將此屬性新增至任何字串元素。