本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Links
連結是定義關係之兩個物件間的導向邊緣。Cloud Directory 目前支援下列連結類型。
![](images/objectlinks.png)
子連結
子連結會建立其所連線之物件間的父子關係。例如,上圖中的子連結 b 連線物件 001
和 003
。子連結定義 Cloud Directory 中的階層。子連結參與定義連結指向的物件路徑時會有名稱。
附件連結
附件連結會將分葉節點政策物件套用到另一個分葉節點或節點物件。附件連結不會定義 Cloud Directory 的階層結構。例如,在上圖中,附件連結會將存放在政策分葉節點物件 006
的政策套用到節點物件 002
。每個物件都可以連接多項政策,但只能連接一項任何指定政策類型的政策。
索引連結
索引連結根據索引物件和您已定義的已建立索引之屬性提供豐富的資訊查詢,以快速在目錄樹狀目錄內執行樹狀目錄周遊及搜尋。從概念上講,索引類似於具有子節點:連接子項時,會根據已建立索引之屬性標示,而不是指定標籤。不過,索引連結不是父子邊緣,各有各的列舉 API 操作集。如需詳細資訊,請參閱 索引和搜尋。
類型連結
類型連結可讓您在雲端目錄中的階層內或跨階層的物件之間建立關係。接著,您就能利用這些關係來查詢資訊,例如哪些使用者具備「xyz」裝置,或是使用者「abc」擁有哪些裝置。
您可以使用類型連結在您的目錄中建立不同物件的關係模型。例如,在上圖中,請考慮代表使用者的物件 004
和代表裝置的物件 005
之間的關係。
我們可能會使用類型連結建立這兩個物件之間的擁有權關係模型。我們可以在類型連結中新增屬性,來表示購買的費用或者裝置為租賃或買斷。與類型連結相關的屬性有兩種:
-
以身分為基礎的屬性 – 該屬性可區分類型連結與其他連結 (例如,子連結、附件連結、索引連結)。每個類型連結面向都會定義一組排序的身分屬性。類型連結的身分是來源物件 ID、面向識別碼 (類型),其身分屬性的值 (由其面向定義) 以及目標物件 ID。單一目錄中的識別碼必須是唯一的。
-
選用屬性 – 該屬性可針對與連結身分無關的類型連結,存放其追蹤特性。例如,選用屬性可識別類型連結首次建立或上次修改的日期。
與物件一樣,您必須使用 CreateTypedLinkFacet
API 定義類型連結架構及其屬性,以建立類型連結面向。類型連結面向需要唯一的面向名稱及與連結相關聯的屬性集。當設計類型連結架構時,您可以在類型連結面向上定義一組排序的屬性。若要檢視類型連結範本結構描述,請參閱「使用類型連結的結構描述文件」。
當您需要執行下列任一項操作時,可以使用類型連結屬性:
-
允許篩選傳入或傳出的類型連結。如需詳細資訊,請參閱 類型連結清單。
-
代表兩個物件之間的關係。
-
追蹤類錫連結的相關管理資料,例如建立連結的日期。
決定類型連結是否適合您的使用案例時,請考慮以下事項:
-
類型連結不能用於路徑型物件規格。您必須改用
ListOutgoingTypedLinks
或ListIncomingTypedLinks
API 操作選取類型連結。 -
類型連結不參與
LookupPolicy
或ListObjectParentPaths
API 操作。 -
同一方向的兩個相同物件之間的類型連結,可能不會有相同的屬性值。這有助於避免相同物件之間重複類型連結。
-
當您想要新增選用資訊時,可以使用其他屬性。
-
所有身分屬性值的合併大小皆限於 64 位元組。如需詳細資訊,請參閱 Amazon Cloud Directory 限制。
相關 Cloud Directory 部落格文章
類型連結身分
身分是唯一可定義兩個物件之間是否存在類型連結的項目。例外狀況是當您使用完全相同的屬性值連接同一方向的兩個物件時。屬性必須設定為 REQUIRED_ALWAYS
。
從不同類型連結面向建立的類型連結彼此之間永遠不會發生衝突。例如,請考量下圖:
![](images/typedlinks.png)
-
物件
001
讓具有相同屬性值 (x1 和 x2) 的類型連結和屬性 (A1 與 A2) 到不同的物件 (002
和003
)。這個操作會成功。 -
物件
002
和003
之間有類型連結。這個操作會失敗,因為物件之間不能存在方向相同、屬性相同的兩個類型連結。 -
物件
001
和003
之間有兩個類型連結具有相同的屬性。不過,因為連結的方向不同,所以這個操作會成功。 -
物件
002
和003
之間有類型連結,A1 的值相同,但 A2 的值不同。類型連結身分考量所有屬性,所以這項操作會成功。
類型連結規則
當您希望在連結屬性中新增限制時,您可以在類型連結屬性中新增規則。這些規則等同於物件屬性的規則。如需詳細資訊,請參閱 屬性規則。
類型連結清單
Cloud Directory 提供的 API 操作可讓您用來從物件選取傳入或傳出類型連結。您可以選取特定的類型連結部分,不用重複每一個類型連結。您也可以指定特定的類型連結面向,只篩選該類型的類型連結。
您可以根據類型連結面向上定義的屬性順序篩選類型連結。您可以為多個屬性提供範圍篩選條件。提供類型連結選取範圍時,必須在結尾處指定任何不精確的範圍。任何未指定範圍的屬性都假定符合整個範圍。篩選條件依類型連結面向上定義的屬性順序執行,不是向任何 API 呼叫提供的順序。
例如,在下圖中,請假設有存放員工及其技能相關資訊的 Cloud Directory。
![](images/typedlinklisting.png)
例如,我們以名為 EmployeeCapability
的類型連結建立員工技能的模型,它由三個字串屬性設定:Status
、Role
和 Created
。ListIncomingTypedLinks
和 ListOutgoingTypedLinks
API 操作支援下列篩選條件。
-
面向 =
EmployeeCapability
、狀態 =Active
、角色 =Driver
-
選取擔任司機的作用中員工。此篩選條件包含兩個完全相符的項目。
-
-
面向 =
EmployeeCapability
,狀態 =Active
,角色 =Driver
建立日期 =05/31/18
-
選取身為駕駛並且其面向是在 2018 年 5 月 31 日當天或之後建立的作用中員工。
-
-
面向 =
EmployeeCapability
、狀態 =Active
-
選取所有作用中的員工。
-
-
面向 =
EmployeeCapability
、狀態 =Active
、角色 =A
到M
-
選取角色由
A
到M
的作用中員工。
-
-
面向 =
EmployeeCapability
-
這會選取
EmployeeCapability
類型的所有類型連結。
-
不支援下列篩選條件:
-
面向 =
EmployeeCapability
、狀態介於A
和C
之間、角色 =Driver
-
這個篩選條件不成立,因為任何範圍都必須出現在篩選條件的結尾處。
-
-
面向 =
EmployeeCapability
、角色 =Driver
-
這個篩選條件不成立,因為隱含的狀態範圍不是完全相符的項目,也不會出現在範圍清單的結尾處。
-
-
狀態 =
Active
-
這個篩選條件不成立,因為未指定類型連結面向。
-
類型連結結構描述
您有兩種方式可以建立類型連結面向。您可以從個別的 API 呼叫管理您的類型連結面向,包括 CreateTypedLinkFacet
、DeleteTypedLinkFacet
和 UpdateTypedLinkFacet
。您也可以上傳代表您在單一 PutSchemaFromJson
API 呼叫中之結構描述的 JSON 文件。如需詳細資訊,請參閱 JSON 結構描述格式。若要檢視類型連結範本結構描述,請參閱「使用類型連結的結構描述文件」。
結構描述開發生命週期不同階段中允許的變更類型,類似物件面向操作允許的變更。開發狀態下的結構描述支援任何變更。Published (已發佈) 狀態下的結構描述為不可變,也不支援任何變更。結構描述只允許已套用到資料目錄的特定變更。一旦您在已套用的類型連結面向上設定了順序和屬性,該順序即無法變更。
其他兩項 API 操作會列出面向及其屬性:
類型連結互動
建立類型連結面向後,您就可以開始建立類型連結並與其互動。若要連接和分離類型連結,請使用 AttachTypedLink
和 DetachTypedLink
API 操作。
TypedLinkSpecifier
是包含可唯一識別類型連結所有資訊的結構。在此結構中,您可以找到 TypedLinkFacet
、SourceObjectID
、DestinationObjectID
和 IdentityAttributeValues
。只有它們可用來指定要操作的類型連結。AttachTypedLink
API 操作傳回類型連結指標,而 DetachTypedLink
API 操作則接受指標做為輸入。同樣地,ListIncomingTypedLinks
和 ListOutgoingTypedLinks
API 操作提供類型連結指標做為輸出。您也可以從頭開始建構類型連結指標。類型連結相關 API 操作的完整清單包括下列項目:
注意
不支援屬性參考和更新類型連結。若要更新類型連結,您必須將其移除並新增更新的版本。