業務物件具有結構
業務物件具有元素。元素是其中一個維護物件資料表中欄位和資料欄的邏輯檢視。業務物件的結構是使用 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 結構欄位中。結構語言也支援在結構中定義這些欄位的元素。
除了包含元素的實體「對應」相關資訊至維護物件中其適當資料表/欄位位置之外,結構還支援其他語法,可定義基本驗證和資料操作規則,包含:
-
識別記錄的主索引鍵或是列表中資料列的主索引鍵。
-
識別新增或變更記錄時所需的元素。
-
新增中未提供資料時的預設值。
-
對於為查尋值的元素,可以指定查尋,以驗證元素值是否為有效的查尋值。
-
對於為另一個資料表之外來索引鍵的元素,可以指定外來索引鍵參考來驗證資料。
系統將會根據結構定義來檢查資料的有效性,而不需要任何特殊演算法即可檢查此驗證。
此外,結構語言可能會包含一些屬性,可自動轉譯使用者介面上記錄的檢視,例如隱藏屬性。如需詳細資訊,請參閱業務物件定義其使用者介面。
業務物件的結構可能包含維護物件中所定義的欄位和資料表子集。這有兩個原因:
-
欄位或資料表可能不適用於業務物件所管理的記錄類型。例如,燃氣特定的欄位可能不包含在電表特定的「裝置」業務物件中。
-
資訊不是透過業務物件來維護,而是分別進行維護。例如,許多基於業務物件的維護物件都包含日誌資料表。日誌資料表中的記錄通常不包含在業務物件中,因為它們是與業務物件分開進行檢視和維護。