

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Modelos compostos personalizados (componentes)
<a name="custom-composite-models"></a>

 Ao modelar um ativo industrial especialmente complexo, como uma máquina complicada que tenha muitas peças, pode ser um desafio manter os modelos de ativo organizados e sustentáveis.

Nesses casos, você pode adicionar modelos compostos personalizados, ou componentes se estiver usando o console, aos modelos de ativo e modelos de componente existentes. Isso ajuda você a manter a organização ao agrupar propriedades relacionadas e reutilizar definições de subcomponente.

Há dois tipos de modelos compostos personalizados:
+ Os modelos compostos personalizados **em linha** definem um conjunto de propriedades agrupadas que se aplicam ao modelo de ativo ou modelo de componente ao qual o modelo composto personalizado pertence. Use-os para agrupar propriedades relacionadas. Eles consistem em um nome, uma descrição e um conjunto de propriedades do modelo de ativo. Eles não são reutilizáveis.
+ Os modelos compostos omponent-model-based personalizados em **C** fazem referência a um modelo de componente que você deseja incluir em seu modelo de ativo ou modelo de componente. Use-os para incluir subconjuntos padrão no modelo. Eles consistem em um nome, uma descrição e ID do modelo de componente ao qual ele faz referência. Eles não têm propriedades próprias; o modelo de componente referenciado fornece suas propriedades associadas a todos os ativos criados.

As seções a seguir ilustram como usar modelos compostos personalizados nos designs.

**Topics**
+ [Modelos compostos personalizados em linha](#inline-composite-models)
+ [Component-model-based modelos compostos personalizados](#component-based-custom-composite-models)
+ [Usar caminhos para fazer referência a propriedades do modelo composto personalizado](#property-paths)

## Modelos compostos personalizados em linha
<a name="inline-composite-models"></a>

Os modelos compostos personalizados em linha oferecem uma maneira de organizar o modelo de ativo ao agrupar propriedades relacionadas.

Por exemplo, vamos supor que você queira modelar um ativo de robô. O robô inclui um servomotor, uma fonte de alimentação e uma bateria. Cada uma dessas partes constituintes tem propriedades próprias que você deseja incluir no modelo. Você pode definir um modelo de ativo chamado `robot_model` que tenha as propriedades mostradas a seguir.


****  

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

No entanto, em alguns casos pode haver muitos subconjuntos, ou os próprios subconjuntos podem ter muitas propriedades. Nesses casos, é possível que haja tantas propriedades que se torne difícil referenciar e mantê-las em uma única lista simples na raiz do modelo, como no exemplo anterior.

Para lidar com essas situações, você pode usar um modelo composto personalizado em linha para agrupar as propriedades. Um modelo composto personalizado em linha é um tipo de modelo composto personalizado que define as próprias propriedades. Por exemplo, você poderia modelar o robô conforme mostrado a seguir.


****  

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

No exemplo anterior, `servo`, `powersupply` e `battery` são os nomes dos modelos compostos personalizados em linha definidos no modelo de ativo `robot_model`. Cada um desses modelos compostos define as próprias propriedades.

**nota**  
Nesse caso, cada modelo composto personalizado define as próprias propriedades, de maneira que todas as propriedades façam parte do próprio modelo de ativo (`robot_model`, nesse caso). Essas propriedades não são compartilhadas com nenhum outro modelo de ativo ou modelo de componente. Por exemplo, se você tivesse criado algum outro modelo de ativo que também tivesse um modelo composto personalizado em linha chamado `servo`, fazer uma alteração em `servo` dentro de `robot_model` não afetaria a definição de `servo` do outro modelo de ativo.  
 Se você quiser implementar esse compartilhamento (por exemplo, ter apenas uma definição para um servo, que todos os seus modelos de ativos possam compartilhar), crie um modelo de componente para ele e, em seguida, crie modelos **component-model-based**compostos que façam referência a ele. Para conferir detalhes, consulte a seção a seguir. 

Para ter mais informações sobre como criar modelos compostos personalizados em linha, consulte [Criar modelos compostos personalizados (componentes)](create-custom-composite-models.md).

## Component-model-based modelos compostos personalizados
<a name="component-based-custom-composite-models"></a>

Você pode criar um modelo de componente AWS IoT SiteWise para definir uma submontagem padrão reutilizável. Depois de criar um modelo de componente, você poderá adicionar referências a ele nos outros modelos de ativo e modelos de componente. Você faz isso adicionando um **modelo composto component-model-based personalizado a qualquer modelo** em que você queira referenciar o componente. É possível adicionar referências ao componente de muitos modelos ou várias vezes no mesmo modelo.

Dessa forma, você pode evitar a duplicação das mesmas definições nos modelos. Isso também simplifica a manutenção dos modelos, porque todas as alterações feitas em um modelo de componente serão refletidas em todos os modelos de ativo que o utilizam.

Por exemplo, vamos supor que a sua instalação industrial tenha muitos tipos de equipamentos que usam o mesmo tipo de servomotor. Alguns deles têm muitos servomotores em um único equipamento. Você cria um modelo de ativo para cada tipo de equipamento, mas não quer ter que duplicar a definição de `servo` toda vez. Você quer modelá-lo apenas uma vez e usá-lo nos vários modelos de ativo. Se, posteriormente, você fizer uma alteração na definição de `servo`, ele será atualizado em todos os modelos e ativos.

Para modelar o robô do exemplo anterior assim, você pode definir servomotores, fontes de alimentação e baterias como modelos de componente, conforme mostrado a seguir.


****  

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


****  

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


****  

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

Depois, você pode definir modelos de ativo, como `robot_model`, que fazem referência a esses componentes. Vários modelos de ativo podem fazer referência ao mesmo modelo de componente. Você também pode fazer referência ao mesmo modelo de componente várias vezes em um modelo de ativo, por exemplo, se o robô tiver vários servomotores.


****  

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

Para ter informações sobre como criar modelos de componente, consulte [Criar modelos de componente](create-component-models.md).

Para ter informações sobre como fazer referência aos modelos de componente em outros modelos, consulte [Criar modelos compostos personalizados (componentes)](create-custom-composite-models.md).

## Usar caminhos para fazer referência a propriedades do modelo composto personalizado
<a name="property-paths"></a>

Ao criar uma propriedade em um modelo de ativo, modelo de componente ou modelo composto personalizado, você pode referenciá-la de outras propriedades que usem o valor dela, como [transformações](transforms.md) e [métricas](metrics.md).

AWS IoT SiteWise fornece maneiras diferentes para você referenciar sua propriedade. A maneira mais simples geralmente é usar o ID da propriedade. No entanto, se a propriedade que você deseja referenciar estiver em um modelo composto personalizado, talvez seja mais útil fazer referência a ela por *caminho*.

Um caminho é uma sequência ordenada de *segmentos de caminho* que especifica uma propriedade em termos da posição entre os modelos compostos aninhados dentro de um modelo de ativo e modelo composto.

### Obter caminhos de propriedade
<a name="obtaining-property-paths"></a>

Você pode obter o caminho de uma propriedade a partir do `path` campo dela [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html).

Por exemplo, vamos supor que você tenha um modelo de ativo `robot_model` que contenha um modelo composto personalizado `servo` com uma propriedade `position`. Se você [DescribeAssetModelCompositeModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModelCompositeModel.html)ligar`servo`, a `position` propriedade listará um `path` campo parecido com este: 

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

### Usar caminhos de propriedade
<a name="using-property-paths"></a>

Você pode usar um caminho de propriedade ao definir uma propriedade que faz referência a outras propriedades, como uma transformação ou uma métrica.

Uma propriedade usa uma *variável* para fazer referência a outra propriedade. Para ter mais informações sobre como trabalhar com variáveis, consulte [Usar variáveis em expressões de fórmula](expression-variables.md).

Ao definir uma variável para fazer referência a uma propriedade, você pode usar o ID ou o caminho da propriedade.

Para definir uma variável que use o caminho da propriedade referenciada, especifique o campo `propertyPath` do valor.

Por exemplo, para definir um modelo de ativo que tenha uma métrica que faça referência a uma propriedade usando um caminho, você pode passar uma carga útil como essa para [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html):

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