事件定義會繼承其母項的內容。
依預設,事件定義會繼承其母項的內容說明和延伸資料元素說明。不過,在某些限制下,子項事件定義可置換這些繼承的說明。
當您新增事件定義至事件型錄時,型錄會驗證新事件定義是否違反控管繼承關係的規則;
如果違反,則會擲出 InheritanceNotValidException 異常狀況。同樣地,如果您置換了有後代的現有事件定義,
事件型錄會驗證現有繼承關係的有效性,如果任一關係不再有效,則會擲出 InheritanceNotValidException 異常狀況。除非所有繼承關係都有效,否則不管是哪一種情況,新的事件定義都不會新增至型錄中。
事件定義可以有兩種形式:
未解析和
已解析:
- 未解析的事件定義只包括在事件定義本身內定義的內容定義和延伸資料元素說明。
- 已解析的事件定義包括未解析的事件定義中的資料,加上其所繼承的內容定義和延伸資料元素說明。
置換繼承的內容說明
除非子項事件定義已有本端環境定義的相同名稱和路徑之內容說明(注意大小寫很重要),
否則子項事件定義將原封不動繼承其母項的每一個內容說明。
如果子項含有相同名稱和路徑的內容說明,則子項說明的欄位可置換母項說明的欄位,如下所示:
- 預設值
- 子項可置換母項內容說明所指定的預設值。
如果子項沒有指定預設值,它會繼承母項的值。
- 必要或選用的
- 子項一律置換母項。不過,如果母項將內容定義為必要的,子項也必須將這個內容指定為必要的。已繼承的必要內容無法重新定義為選用的。
- 允許的值或最小值和最大值
- 如果母項定義允許的值或最小值和最大值,
則子項可指定允許的值或最小值和最大值來置換這些值。
請注意,事件定義只能包含允許的值或最小值與最大值,不能同時包含兩者:
- 如果母項定義最小值和最大值,但子項定義允許的值,則母項定義的最小值和最大值會被忽略。
- 如果母項定義允許的值,但子項定義最小值和最大值,則母項定義的允許的值會被忽略。
- 如果母項只定義最大值,但子項只定義最小值,則子項會繼承母項所定義的最大值。
- 如果子項沒有指定允許的值或最小值和最大值,則會繼承母項指定的值。
置換繼承的延伸資料元素說明
除非子項事件定義已有本端環境定義的相同名稱之延伸資料元素說明,
否則子項事件定義將原封不動繼承其母項的每一個延伸資料元素說明。
如果子項含有相同名稱的延伸資料元素說明,則子項說明的欄位可置換母項說明的欄位,如下所示:
- 類型
- 子項必須指定與母項相同的類型。
- 最少出現次數
- 子項一律置換母項。
- 最大出現次數
- 子項一律置換母項。
- 預設值
- 子項可置換母項延伸資料元素說明所指定的預設值。
如果子項沒有指定預設值,它會繼承母項的值。
- 預設的十六進位值
- 子項可置換母項延伸資料元素說明所指定的預設十六進位值。
如果子項沒有指定預設的十六進位值,它會繼承母項的值。
- 巢狀延伸資料元素說明
- 子項可定義相同名稱的巢狀說明來置換巢狀延伸資料元素說明。
如果子項置換繼承的巢狀說明,則相同規則亦適用於置換個別欄位。
如果子項沒有指定相同名稱的巢狀延伸資料元素說明,它會繼承母項的巢狀說明。