Таблицы конфигурации
Таблицы конфигурации используются для вещей, шаблонов вещи, профилей вещи, таблиц данных, потоков, потоков значений, таймеров, планировщиков, промышленных профилей вещи, промышленных шлюзов, шаблонов мэшапа, проектов, групп вещей, уведомлений, блогов, вики, гаджетов, мастеров и мэшапов для хранения таких значений, как значения свойств, которые не часто изменяются. Наиболее распространенное применение таблиц конфигурации - хранение учетных данных и информации о хост-компьютерах для внешнего ресурса. Таблицы конфигурации не должны использоваться для хранения динамических данных, которые часто обновляются. Эта информация определяется так же, как определяются свойства. Чтобы использовать конфигурации, определите таблицу конфигурации с именем и описанием, а также укажите, может ли она быть многострочной. Аналогично свойствам, для некоторых значений конфигурации существуют связанные с ними аспекты.
* 
Данные таблицы конфигурации перезаписываются при импорте значениями, хранящимися в файле.
Можно определить таблицу конфигурации, используя один из следующих аспектов:
Определение таблицы конфигурации в Composer
В поддерживаемых объектах можно определить таблицу конфигурации, выполнив следующие действия.
1. Выберите Дополнительно > Добавить таблицу конфигурации.
Появится экран Добавить таблицу конфигурации.
2. Введите имя таблицы конфигурации.
В наименованиях учитывается регистр.
3. В поле Описание опишите назначение или функциональность таблицы конфигурации.
4. Выберите структуру данных для таблицы конфигурации.
Выбранная структура данных должна содержать поле основного ключа.
5. Если нужно, чтобы в таблице конфигурации отображалось несколько строк данных, установите флажок Разрешить несколько строк.
6. Если у объекта имеется несколько таблиц конфигурации, можно управлять их положением, вводя число в поле Порядковый номер.
После добавления таблицы конфигурации положение изменить невозможно.
7. Нажмите кнопку Готово.
Таблица конфигурации появится на странице Конфигурация.
8. Чтобы удалить таблицу конфигурации, нажмите кнопку Удалить.
Определение таблицы конфигурации путем добавления аннотаций для Java-классов
Можно создавать таблицы конфигурации, добавив аннотации для Java-классов. Дополнительные сведения см. в Документации по интерфейсу API для ThingWorx Platform, раздел com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition.
В следующем примере приведен фрагмент кода, содержащий определения таблицы конфигурации, расположенные выше определения класса:
@ThingworxConfigurationTableDefinitions(tables = {
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample1",
description="Example 1 config table", isMultiRow=false,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="field1",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="field2",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="field3",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="field4",
description="",baseType="USERNAME"),
} ) ),
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample2",
description="Example 2 config table", isMultiRow=true,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="columnA",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="columnB",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="columnC",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="columnD",
description="",baseType="USERNAME"),
} ) )
})
public class GoodByeThing extends Thing {
}
Определение таблицы конфигурации с помощью импорта/экспорта XML
Можно также определить таблицы конфигурации для вещей, шаблонов вещей, профилей вещей и мэшапов, используя импорт файлов XML. Следующий пример - определение таблицы конфигурации для сущности, экспортируемой в виде файла XML:
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
* 
Определения таблицы конфигурации, созданные с использованием аннотаций, не отображаются в экспортируемых файлах XML.
В приведенном ниже примере данные таблицы конфигурации экспортируются в виде XML:
<ConfigurationTables>
<ConfigurationTable description="Template Config Table"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2">
<DataShape>
<FieldDefinitions>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p1" ordinal="1"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p2" ordinal="2"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p3" ordinal="3"/>
</FieldDefinitions>
</DataShape>
<Rows>
<Row>
<p1>
<![CDATA[1]]>
</p1>
<p2>
<![CDATA[2]]>
</p2>
<p3>
<![CDATA[3]]>
</p3>
</Row>
</Rows>
</ConfigurationTable>
</ConfigurationTables>
Определение таблицы конфигурации для вещей и мэшапов с использованием интерфейса REST API
Можно добавить таблицы конфигурации в вещи и мэшапы с помощью сервисов интерфейса REST API. Каждая таблица конфигурации связана со структурой данных. Структура данных для многострочной таблицы конфигурации должна иметь основной ключ. После сохранения таблицы конфигурации ее структуру данных невозможно изменить; однако можно внести изменения в поля структуры данных. Можно добавить или удалить поле из структуры данных или изменить базовый тип поля. Изменение базового типа может оказать влияние на данные в таблице конфигурации. Например, изменение базового типа string на integer может привести к потере данных таблицы конфигурации.
На следующем изображении приведено определение таблицы конфигурации для вещи в ThingWorx Composer с использованием сервисов:
Таблица конфигурации, созданная выше, отображается на странице Конфигурация для вещи в ThingWorx Composer следующим образом:
Чтобы добавить данные в таблицу конфигурации, откройте сущность в режиме правки и щелкните Добавить рядом с именем таблицы конфигурации.
Определение таблицы конфигурации для шаблонов вещей и профилей вещей с использованием интерфейса REST API
Чтобы добавить таблицы конфигурации в шаблоны вещей и профили вещей, можно написать сервис для вещи, которая вызывает интерфейс REST API AddConfigurationTableDefinition в данном шаблоне вещи. Ниже приведен пример определенного пользователем сервиса (AddConfigTableToTemplate), который добавляет таблицу конфигурации в шаблон вещи (MyThingTemplate). Точно так же можно написать сервис для добавления таблицы конфигурации в профиль вещи.
Можно добавить данные в таблицу конфигурации в ThingWorx Composer или с помощью сервиса следующим образом:
Наследование таблиц конфигурации и данных конфигурации
Таблицы конфигурации и их данные, созданные для сущностей шаблонов вещей и профилей вещей, наследуются при реализации сущности вещи. Любые изменения, внесенные в таблицы конфигурации на уровне шаблонов или профилей вещей, распространяются в вещи, которые наследуют таблицы из своих шаблонов или профилей вещей.
Новая сущность вещи наследует данные конфигурации от своих структур данных или шаблона вещи. Однако после создания вещи она больше не может принимать любые изменения данных в таблицах, наследуемых от ее шаблона вещи или структур данных.
Например:
ThingTemplateA содержит configTable1
ThingShapeA содержит configTable2
Вещь ThingA создана на основе ThingTemplateA и реализует ThingShapeA.
Вещь ThingA будет наследовать таблицы configTable1 и configTable2 с данными из ее шаблона вещи и профиля вещи соответственно.
Если в ThingTemplateA изменится configTable1 с singleRow на multiRow, то в ThingA будет отражено это изменение.
Но если в шаблоне ThingTemplateA изменятся данные в таблице configTable1, то вещь ThingA не будет наследовать это изменение данных. Вещь ThingA будет сохранять все данные, которые у нее существуют для configTable1. Также в вещи ThingA могут быть изменены данные для configTable1 и configTable2, и это изменение в данных не будет передаваться на уровень ее шаблона или профиля, а также в другие вещи, которые наследуют эту таблицу конфигурации.
Было ли это полезно?