存取修飾詞
「存取修飾詞」是 ThingWorx 9.5 中引入的一種新建構,可讓開發人員識別受到保護以免遭到外部使用的加工品 (實體及其特徵),以及可由使用者耗用以進行進一步自訂或開發 (包括延伸、參考與重複使用) 的加工品。您也可以開啟實體以供外部使用,同時保護某些特徵。
當存取可供使用時,不允許透過執行時間檢查來存取受保護的加工品。大多數正式定義的關係都會在編寫時進行驗證。但是,服務與混搭之程式碼區塊內的使用關係只會在執行時間進行核對。執行時間檢查無法實現完全無錯,應將其視為對避免不正確使用的一種協助方式。存取修飾詞的宣告仍然是事實來源,且開發人員應遵守不使用違反所宣告存取修飾詞之所關注受保護加工品的原則。此類受保護的加工品可能會變更或移除,任何違反的相依使用關係都可能會在未來任何時間開始失敗,而不另行通知。
存取修飾詞可指定實體與特徵的可存取性範圍。
在 ThingWorx 9.5.0 中,下列實體與特徵支援存取修飾詞:
實體
特徵
物件
物範本
物形式
物群組
資料形式
網路
工業連線
整合連接器
排程器
計時器
儀表板
選單
媒體
樣式定義
樣式主題
狀態定義
資料表
串流
值串流
部落格
Wiki
* 
延伸實體的所有類別也支援存取修飾詞。
內容
服務
組態表
* 
其他特徵會從實體繼承存取修飾詞。
下列實體不支援存取修飾詞:
專案
模型標籤
通知
資料標籤
持續提供者
使用者群組
使用者
組織
應用程式金鑰
目錄服務
驗證器
混搭
混搭範本
主物件
小工具
當地語系化表
「存取修飾詞」分為以下幾類:
NONE - 會將不存在範圍視為公開範圍,且可將其套用至實體或特徵。任何人都可以存取具有公開範圍的實體或特徵。
具有 NONE 範圍的實體可由所有人存取。
具有 NONE 範圍的特徵會從其所屬實體繼承存取修飾詞。
PRIVATE - 可將此範圍套用至實體或特徵,且只能在專案內存取。
RESTRICTED - 可將此範圍套用至實體或特徵。它可作為私人範圍使用,進而將具有命名空間及其子階層的專案新增至可存取的清單。例如,所有實體都可以從 ptc.dpm.jobOrder 命名空間與子命名空間存取 RESTRICTED[ptc.dpm.jobOrder],但對於其他所有實體而言為私人範圍。
* 
在 ThingWorx 9.5.0 中,只能針對「受限制」範圍新增一個命名空間 (+子項,此為隱含項目)。
內部 - 只能將此範圍套用至特徵,此類特徵只能在該實體內存取。
* 
實體與特徵會持續保留範圍指派。
可針對所有支援的實體套用範圍,而無論其專案類型為何。如果未將命名空間指派給專案,則對於實體只能套用「無」或「私人」範圍,而對於特徵則可以套用「無」、「私人」或「內部」。
* 
移轉至 ThingWorx 9.5 之後,所有實體與特徵都將擁有 NONE (不存在) 範圍。
特徵層級不得擁有更寬的範圍。例如,如果實體的範圍是 PRIVATE,特徵的範圍不得為 NONE。
針對與具有 NONE 範圍之實體相關聯的物件,在特徵層級所允許之 RESTRICTED 清單中的物件範圍必須更大、相等或更小。而對於具有其他範圍的實體,在特徵層級所允許之 RESTRICTED 清單中的物件範圍必須相等或更小。
建立範圍的需求
範圍必須僅包含大寫字母。
配置建構區塊專案的預設範圍
您可以針對建構區塊類型的專案配置預設範圍。建立新實體時,此組態會作為範圍的預設指派使用。
專案的預設範圍可在執行時間透過 Composer 或 REST 呼叫更新。在此專案中建立的新實體將繼承此範圍。現有實體的範圍不會受到此組態變更影響。實體的範圍可在執行時間變更。
* 
當使用 Composer 建立實體時,此組態僅適用於範圍設定
針對實體或特徵設定存取修飾詞
您可以使用下列方式將存取修飾詞指派給實體或特徵:
從 Composer「一般資訊」標籤的「範圍」清單中選取範圍。
透過使用 Java 註釋
透過 XML 或延伸功能匯入。
透過執行 EntityServices 資源下的 SetAccessModifier 服務。此服務可用來大量設定多個實體與特徵的存取修飾詞。
* 
在 ThingWorx 9.5.0 中,不支援從 EntityServices 資源中的建立服務呼叫設定存取修飾詞。例如,像 CreateThingCreateThingShapeCreateNetwork 等建立服務,不接受存取修飾詞作為引數。
* 
建立實體時,存取修飾詞不會記錄在稽核記錄中。
* 
存取修飾詞可透過 java 註釋新增至特徵。但是,為了在我們不提供註釋支援的實體層級新增「存取修飾詞」,我們可透過 XML 匯入在實體層級新增存取修飾詞。
檢視對實體或特徵設定的存取修飾詞
透過執行 EntityServices 資源下的 GetAspects 服務,您可以檢視對任何實體或特徵設定的存取修飾詞。
透過存取修飾詞篩選實體
可使用 Composer 中的 ,根據範圍篩選實體。
記錄存取修飾詞
如果使用者建立、更新或刪除對實體或特徵設定的存取修飾詞,則稽核會保留在「稽核記錄」中。
如需相關資訊,請參閱稽核子系統
* 
不會稽核其他實體、成員或服務呼叫對實體或特徵的修改。
將實體從一個專案移動到另一個專案
當您跨專案移動實體時,如果來源實體或特徵具有「無」或「私人」範圍,實體、內容、服務與組態表的範圍會保持不變。
* 
與目標專案的命名空間相同或比其更寬的命名空間是有效的命名空間。
與目標專案的命名空間不同或比其更窄的命名空間是無效的命名空間。
以下列出的是將「受限制」範圍的實體從一個命名空間移動至另一個命名空間時所發生的不同情境:
情境 1
如果實體具有有效的命名空間,則範圍沒有變更。
例如,當將具有 RESTRICTED [dpm.sco.jobOrder] 範圍的實體移動至具有命名空間 (dpm.sco.jobOrder.scp.jobOrder12) 的專案時,實體的範圍會保持不變。
情境 2
如果實體具有無效的命名空間,且目標專案沒有預設範圍,則實體的範圍會變更為私人。
例如:
當將具有 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至具有命名空間 (abc.xyz.pqr) 的專案時,物件的範圍會變更為 PRIVATE[abc.xyz.pqr]
情境 3
如果實體具有無效的命名空間,且目標專案的「受限制」預設範圍為 exmptList,則實體的範圍會變更為目標專案的預設範圍。
例如:
當將具有 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至具有預設範圍 RESTRICTED[abc.xyz.pqr] 的專案時,物件的範圍會變更為 RESTRICTED[abc.xyz.pqr]
當將具有 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至具有預設範圍 RESTRICTED[dpm.sco.jobOrder] 的專案時,物件的範圍會變更為 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12]
情境 4
如果實體具有無效的命名空間,且目標專案的預設範圍為私人,則實體的範圍會變更為目標專案的預設範圍。
例如:
當將具有 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至具有預設範圍 PRIVATE[dpm.sco.jobOrder] 的專案時,物件的範圍會變更為 PRIVATE[dpm.sco.jobOrder]
當將具有 RESTRICTED[dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至具有預設範圍 PRIVATE[abc.xyz.pqr] 的專案時,物件的範圍會變更為 PRIVATE[abc.xyz.pqr]
情境 5
如果實體具有無效的命名空間,且目標專案沒有命名空間,則實體的範圍會變更為「私人」。
例如,當將具有 RESTRICTED [dpm.sco.jobOrder.scp.jobOrder12] 範圍的物件移動至沒有命名空間的專案時,物件的範圍會變更為 PRIVATE
* 
如果 RESTRICTED 在實體層級變更且特徵 RESTRICTED 無效,則特徵範圍會變更為「繼承的」。
* 
移動實體會在應用程式記錄檔中記錄為「偵錯」
存取修飾詞的限制
以下是「存取修飾詞」的限制。
建立新服務或編輯現有服務時,繼承的特徵將不會顯示在「我/實體」部份。
建立內容繫結時,會顯示另一個專案的私人內容。
混搭沒有存取修飾詞。
如果您的實體名稱包含任何特殊字元,且在執行時間並未執行存取修飾詞檢查,請遵循下列步驟:
1. 將名稱編碼為 Base64 格式。
2. 編碼名稱/b64 格式新增後綴。
3. 使用 REST API 時,以 twx-referrer-entity 傳遞此值。
如果任何實體名稱中包含除 validation.properties 檔案中所述字元之外的字元,則在執行時間將不會執行存取修飾詞檢查。您可以配置 validation.properties 檔案來將字元新增至檔案。新增或修改 Validator.HTTPHeaderValue 的值。如需詳細資訊,請參閱配置 ESAPI 驗證器設定
這是否有幫助?