

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂複合模型 （元件）
<a name="custom-composite-models"></a>

 當您為特別複雜的工業資產建模時，例如具有許多部分的複雜機器，讓資產模型保持井然有序且可維護可能成為一項挑戰。

在這種情況下，如果您使用 主控台，您可以將自訂複合模型或元件新增至現有的資產模型和元件模型。這些可協助您將相關屬性分組並重新使用子元件定義，以保持組織狀態。

自訂複合模型有兩種類型：
+ **內嵌**自訂複合模型定義一組分組屬性，適用於自訂複合模型所屬的資產模型或元件模型。您可以使用它們來分組相關屬性。它們由名稱、描述和一組資產模型屬性組成。它們不可重複使用。
+ **Component-model-based**自訂複合模型會參考您想要包含在資產模型或元件模型中的元件模型。您可以使用它們在模型中包含標準子組件。它們由名稱、描述及其參考的元件模型 ID 組成。它們沒有自己的屬性；參考的元件模型會將其關聯的屬性提供給任何建立的資產。

以下各節說明如何在設計中使用自訂複合模型。

**Topics**
+ [

## 內嵌自訂複合模型
](#inline-composite-models)
+ [

## Component-model-based自訂複合模型
](#component-based-custom-composite-models)
+ [

## 使用路徑來參考自訂複合模型屬性
](#property-paths)

## 內嵌自訂複合模型
<a name="inline-composite-models"></a>

內嵌自訂複合模型提供透過分組相關屬性來組織資產模型的方法。

例如，假設您想要建立機器人資產的模型。機器人包含伺服馬達、電源供應器和電池。每個元件都有自己的屬性，您想要包含在模型中。您可以定義名為 的資產模型`robot_model`，其屬性如下。


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

不過，在某些情況下，可能有許多子組件，或者子組件本身可能有許多屬性。在這些情況下，可能會有太多屬性，使其變得難以在模型根目錄的單一平面清單中參考和維護，如上述範例所示。

若要處理這類情況，您可以使用內嵌自訂複合模型來將屬性分組。內嵌自訂複合模型是一種自訂複合模型，可定義自己的屬性。例如，您可以建立機器人的模型，如下所示。


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

在上述範例中，`servo`、 `powersupply`和 `battery`是`robot_model`資產模型中定義的內嵌自訂複合模型名稱。然後，每個複合模型都會定義自己的屬性。

**注意**  
在此情況下，每個自訂複合模型都會定義自己的屬性，因此所有屬性都是資產模型本身的一部分 (`robot_model`在此案例中為 )。這些屬性不會與任何其他資產模型或元件模型共用。例如，如果您建立的其他一些資產模型也有稱為 的內嵌自訂複合模型`servo`，則在 `servo`內變更 `robot_model` 不會影響其他資產模型`servo`的定義。  
 如果您想要實作這類共用 （例如，對於所有資產模型都可以共用的伺服只有一個定義），您可以改為為其建立元件模型，然後建立參考該模型的**component-model-based**複合模型。如需詳細資訊，請參閱下一節。

如需如何建立內嵌自訂複合模型的詳細資訊，請參閱 [建立自訂複合模型 （元件）](create-custom-composite-models.md)。

## Component-model-based自訂複合模型
<a name="component-based-custom-composite-models"></a>

您可以在 中建立元件模型， AWS IoT SiteWise 以定義標準的可重複使用子組件。建立元件模型後，您可以在其他資產模型和元件模型中為其新增參考。您可以透過將**component-model-based自訂複合模型**新增至您想要參考元件的任何模型來執行此操作。您可以從許多模型或相同模型中多次新增元件的參考。

透過這種方式，您可以避免跨模型複製相同的定義。它還簡化了維護模型，因為您對元件模型所做的任何變更都會反映在使用該模型的所有資產模型中。

例如，假設您的工業安裝有許多類型的設備，而這些設備都使用相同類型的伺服馬達。其中一些在單一設備中有許多 伺服馬達。您可以為每個設備類型建立資產模型，但不想`servo`每次都重複 的定義。您想要將其建模一次，並在各種資產模型中使用。如果您稍後變更 的定義`servo`，則會在所有模型和資產中更新。

若要以這種方式建立上一個範例中的機器人模型，您可以將 伺服馬達、電源供應器和電池定義為元件模型，如下所示。


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

然後，您可以定義參考這些元件的資產模型`robot_model`，例如 。多個資產模型可以參考相同的元件模型。您也可以在一個資產模型中多次參考相同的元件模型，例如，如果您的機器人在其中有多個伺服馬達。


****  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/custom-composite-models.html)  | 

如需如何建立元件模型的資訊，請參閱 [建立元件模型](create-component-models.md)。

如需如何在其他模型中參考元件模型的資訊，請參閱[建立自訂複合模型 （元件）](create-custom-composite-models.md)。

## 使用路徑來參考自訂複合模型屬性
<a name="property-paths"></a>

當您在資產模型、元件模型或自訂複合模型上建立屬性時，您可以從使用其值的其他屬性參考它，例如[轉換](transforms.md)和[指標](metrics.md)。

AWS IoT SiteWise 提供不同的方法來參考您的 屬性。最簡單的方式通常是使用其屬性 ID。不過，如果您要參考的 屬性位於自訂複合模型上，您可能會發現改為透過*路徑*參考它更有用。

路徑是*路徑區段*的排序序列，根據其在資產模型和複合模型中巢狀複合模型之間的位置指定屬性。

### 取得屬性路徑
<a name="obtaining-property-paths"></a>

您可以從其 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html) 的 `path` 欄位取得屬性的路徑。

例如，假設您有一個資產模型`robot_model`，其中包含具有屬性 `servo`的自訂複合模型 `position`。如果您在 上呼叫 [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)`servo`，則 `position` 屬性會列出如下所示`path`的欄位：

```
"path": [
    {
       "id": "asset model ID",
       "name": "robot_model"
    },
    {
       "id": "composite model ID",
       "name": "servo"
    },
    {
       "id": "property ID",
       "name": "position"
    }
]
```

### 使用屬性路徑
<a name="using-property-paths"></a>

當您定義參考其他屬性的屬性時，可以使用屬性路徑，例如轉換或指標。

屬性使用*變數*來參考另一個屬性。如需使用變數的詳細資訊，請參閱 [在公式表達式中使用變數](expression-variables.md)。

當您定義變數以參考屬性時，您可以使用屬性的 ID 或其路徑。

若要定義使用參考屬性路徑的變數，請指定其值`propertyPath`的欄位。

例如，若要定義具有使用路徑參考屬性之指標的資產模型，您可以像這樣將承載傳遞給 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html)：

```
{
    ...
    "assetModelProperties": [
        {
            ...
            "type": {
                "metric": {
                    ...
                    "variables": [
                        {
                            "name": "variable name",
                            "value": {
                                "propertyPath": [
                                    path segments
                                ]
                            }
                        }
                    ],
                    ...
                }
            },
            ...
        },
        ...
    ],
    ...
}
```