業務物件具有結構

業務物件具有元素。元素是其中一個維護物件資料表中欄位和資料欄的邏輯檢視。業務物件的結構是使用 XML 結構所定義。結構的主要目的是識別包含在業務物件之維護物件的所有元素,並將其對應至對應的維護物件欄位。業務物件結構中的每個元素都必須儲存在維護物件中的某處。業務物件可能未定義所導出的元素。

定義主要資料表或語言資料表 (用於管理物件) 的元素時,不需要在結構中定義實體資料表的名稱。系統會推斷此資訊。下列是結構的程式碼片段:

<schema>
    <migrationPlan mapField="MIGR_PLAN_CD" suppress="true" isPrimeKey="true"/>
    <bo mapField="BUS_OBJ_CD" fkRef="F1-BUSOB"/>
    <customizationOwner mapField="OWNER_FLG" suppress="input"/>
    <version mapField="VERSION" suppress="true"/>
    <description mapField="DESCR"/>
    <longDescription mapField="DESCRLONG"/>
  …

許多維護物件都有下階資料表集合 (例如,人員名稱集合或帳戶上的人員集合)。根據需求,業務物件可以定義完整集合,以便使用者將會在方格中維護資訊。不過,結構也支援下階資料表中的「扁平化」記錄,以便可以將這些記錄視為單一元素。下列是每個項目的範例:

下階資料表範例。此為移轉計畫業務物件上的「指示」集合程式碼片段。您可以看到列表屬性定義下階資料表,且其內的所有元素都會對應至該資料表中的適當資料欄。

   <migrationPlanInstruction type="list" mapChild="F1_MIGR_PLAN_INSTR">
         <migrationPlan mapField="MIGR_PLAN_CD" suppress="true"/>
         <sequence mapField="PLAN_INSTR_SEQ" suppress="true"/>
         <instructionSequence mapField="INSTR_SEQ"/>
         <instructionType mapField="INSTR_TYPE_FLG"/>
         <parentInstructionSequence mapField="PARENT_INSTR_SEQ"/>
         <businessObject mapField="BUS_OBJ_CD" fkRef="F1-BOMO"/>
...

簡易「扁平化」欄位範例。「狀態原因」的業務物件包含稱為 Usage 的元素,此元素會對應至 F1–SRUSG 類型的預先定義特性。"row" 定義將哪個下階資料表設為扁平化,以及該下階中可唯一識別它的資料列屬性。

    <usage mdField="STATUS_RSN_USAGE" mapField="CHAR_VAL"> 
        <row mapChild="F1_BUS_OBJ_STATUS_RSN_CHAR"> 
            <CHAR_TYPE_CD is="F1-SRUSG"/>
            <SEQ_NUM is="1"/> 
        </row>
    </usage>

「扁平化資料列」範例。「帳戶」的此業務物件包含「人員」集合的單一資料列,其中只定義「主要財務負責」客戶。"accountPerson" 屬性定義一個來自該資料列的欄位 (人員 ID),並在 "row" 資訊中包含「扁平化」準則。此外,也定義來自該相同資料列的第二個欄位 ("accountRelType")。"rowRef" 屬性會識別包含扁平化的元素,而不需要重複扁平化準則。

    <accountPerson mapField="PER_ID">
        <row mapChild="CI_ACCT_PER">
            <MAIN_CUST_SW is="true"/>
            <FIN_RESP_SW default="true"/>
         </row>
     </accountPerson>
     <accountRelType mapField="ACCT_REL_TYPE_CD" rowRef="accountPerson" dataType="string"/>  

「扁平化列表」範例。「稅捐帳單類型」的業務物件包含「帳單完成」的有效演算法列表。列表中會呈現「順序」和「演算法」。列表元素會識別下階資料表,而 'rowFilter' 會識別通用列表的相關資訊。

       <taxBillCompletion type="list" mapChild="C1_TAX_BILL_TYPE_ALG">
         <rowFilter suppress="true" private="true">
             <TAX_BILL_TYPE_SEVT_FLG is="C1BC"/>
         </rowFilter>
         <sequence mapField="SEQ_NUM"/>
         <algorithm mapField="ALG_CD" fkRef="F1-ALG"/>
     </taxBillCompletion> 

此外,許多維護物件支援實體內的 XML 結構欄位。這些欄位的資料類型可能是 CLOB 或 XML。一或多個業務物件元素可對應至維護物件的 XML 結構欄位。根據業務規則的意義,可在業務物件結構的不同邏輯位置中定義這些元素。更新維護物件時,系統會建立包含所有對應至 XML 結構之元素的 XML 文件類型,並將其儲存在一資料欄中。下列是對應至 XML 資料欄的元素範例:

        <filePath mdField="F1_FILE_PATH" mapXML="MST_CONFIG_DATA" required="true"/>
        <characterEncoding mdField="F1_CHAR_ENCODING" mapXML="MST_CONFIG_DATA"/> 
備註:如果維護物件的 XML 結構欄位資料類型為 XML,則資料庫將允許根據該資料來搜尋記錄,但假設已定義適當的索引。如果維護物件的 XML 結構欄位資料類型為 CLOB,則通常不支援透過 SQL 陳述式來索引或聯結此資料欄中的元素。請注意,大部分維護物件目前針對 XML 結構資料欄 (若提供) 使用 CLOB 資料類型。

部分業務物件的下階資料表允許將資料儲存在 XML 結構欄位中。結構語言也支援在結構中定義這些欄位的元素。

除了包含元素的實體「對應」相關資訊至維護物件中其適當資料表/欄位位置之外,結構還支援其他語法,可定義基本驗證和資料操作規則,包含:

  • 識別記錄的主索引鍵或是列表中資料列的主索引鍵。

  • 識別新增或變更記錄時所需的元素。

  • 新增中未提供資料時的預設值。

  • 對於為查尋值的元素,可以指定查尋,以驗證元素值是否為有效的查尋值。

  • 對於為另一個資料表之外來索引鍵的元素,可以指定外來索引鍵參考來驗證資料。

系統將會根據結構定義來檢查資料的有效性,而不需要任何特殊演算法即可檢查此驗證。

此外,結構語言可能會包含一些屬性,可自動轉譯使用者介面上記錄的檢視,例如隱藏屬性。如需詳細資訊,請參閱業務物件定義其使用者介面

備註:請參閱結構語法,以取得您在建構結構時可用的完整 XML 節點和屬性列表。

業務物件的結構可能包含維護物件中所定義的欄位和資料表子集。這有兩個原因:

  • 欄位或資料表可能不適用於業務物件所管理的記錄類型。例如,燃氣特定的欄位可能不包含在電表特定的「裝置」業務物件中。

  • 資訊不是透過業務物件來維護,而是分別進行維護。例如,許多基於業務物件的維護物件都包含日誌資料表。日誌資料表中的記錄通常不包含在業務物件中,因為它們是與業務物件分開進行檢視和維護。