Компоновочные блоки > Шаблоны проектирования компоновочного блока > Шаблон проектирования абстракции и реализации
Шаблон проектирования абстракции и реализации
В шаблоне проектирования абстракции и реализации абстрактная часть стандартного шаблона конструирования разделена на компоновочные блоки, например PTC.BuildingBlock, отделен от компоновочного блока реализации, такого как PTC.BuildingBlockImpl. Это позволяет разработчику решения обеспечить несколько реализаций одного абстрактного компоновочного блока, например PTC.BuildingBlockImpl1, PTC.BuildingBlockImpl2, и т. д.
В абстрактном компоновочном блоке определения сервисов профиля вещи управления, например PTC.BuildingBlock.Management_TS, являются пустыми, переопределяемыми сервисами, которые необходимо переопределить в компоновочном блоке реализации. В компоновочном блоке реализации существует дополнительный шаблон вещи реализации диспетчера, например PTC.BuildingBlockImpl.Manager_TT. Этот шаблон вещи управления расширяется от шаблона вещи управления в абстрактном компоновочном блоке, наследуя сервисы, определенные в профиле вещи управления. Сервисы реализованы фактически в шаблоне вещи диспетчера реализации компоновочных блоков.
На следующей диаграмме показано, как сущности, необходимые для компоновочного блока, разбиваются на абстрактные и компоновочные блоки и компоновочные блоки реализации.
На схеме показаны необходимые сущности компоновочного блока, разделенного на абстрактный и компоновочный блок реализации, включая реализацию сущностей или расширение из других сущностей.
На этой схеме стрелками с незакрашенным острием и сплошными линиями () обозначены сущности, которые происходят от сущностей, указанных стрелками, а стрелками с незакрашенным острием и пунктирными линиями () обозначены реализации сущностей, указанных стрелками.
Необходимые сущности
Для шаблона проектирования абстракции и реализации необходимы следующие сущности:
Проекты: в каждом компоновочном блоке (абстрактный и для реализации) есть сущность проекта ThingWorx, включающая в себя сущности компоновочных блоков, например PTC.BuildingBlock и PTC.BuildingBlockImpl. Рекомендуемое соглашение об именовании включает в себя название проекта в именах всех сущностей, входящих в состав компоновочного блока.
Точка входа: точка входа устанавливает компоновочный блок для других установленных решений, включая их наименование, версию, зависимости и т. д. Сервис с наименованием DeployComponent можно переопределить для выполнения действия при первом развертывании компоновочного блока на сервере ThingWorx. Абстрактный компоновочный блок расширяет шаблон вещи PTC.Base.ComponentEntryPoint_TT для шаблона вещи своей точки входа, например PTC.BuildingBlock.EntryPoint_TT. Компоновочный блок реализации расширяет шаблон вещи PTC.DefaultConfiguration.EntryPoint_TT для шаблона вещи своей точки входа, например PTC.BuildingBlockImpl.EntryPoint_TT. Вещь точки входа для каждого компоновочного блока создается из шаблона вещи его точки входа, например PTC.BuildingBlock.EntryPoint и PTC.BuildingBlockImpl.EntryPoint, соответственно.
Диспетчер: диспетчер компоновочного блока - это уровень основных сервиса компоновочного блока, в котором представлены различные возможности для него. Во-первых, он действует как уровень абстракции для сущностей, вызываемых в компоновочный блок. Во-вторых, он используется для настройки пунктов меню, содержащих мэшапы, и диспетчеры которые необходимо использовать при определении более, чем одного из них.
У абстрактного компоновочного блока должен быть шаблон вещи диспетчера (PTC.BuildingBlock.Manager_TT), расширяющийся из PTC.Base.CommonManager_TT. У компоновочного блока реализации есть шаблон вещи диспетчера (PTC.BuildingBlockImpl.Manager_TT), расширяющийся из шаблона вещи диспетчера абстрактного компоновочного блока. Вещь диспетчера для компоновочного блока реализации создается на основе шаблона вещи диспетчера для компоновочного блока реализации.
Так же у шаблона вещи диспетчера абстрактного компоновочного блока есть профиль вещи реализованного управления (PTC.BuildingBlock.Management_TS). В этом профиле вещи находятся все сервисы, необходимые для компонента. Эти сервисы наследуются шаблоном вещи диспетчера компоновочных блоков реализации, где находится фактическая реализация сервиса. Для компоновочных блоков, разработанных PTC, эти сервисы могут быть переопределены в качестве пользовательской настройки, что позволяет разработчикам решений переопределять сервисы по умолчанию для своих собственных целей. Дополнительные сведения см. в разделе .
Шаблон вещи диспетчера компоновочного блока реализации может реализовывать любые дополнительные профили вещей, необходимые для этой реализации. Например, многие компоновочные блоки реализации реализуют профиль вещи PTC.DBConnection.DBManagement_TS в решении DPM, таким образом они могут получить доступ к базе данных DPM.
Дополнительные сущности
На следующей диаграмме показаны дополнительные сущности, которые могут быть включены в шаблон проектирования абстракции и реализации. На следующей диаграмме компоновочный блок PTC.MfgModel используется в качестве примера компоновочного блока с иерархией модели, актива или оборудования, шаблоны вещи которого реализуют профиль вещи логики модели в компоновочном блоке шаблона проектирования абстракции и реализации. Сущности с пунктирными контурами являются необязательными. Они включены в шаблон для конкретных целей, указанных ниже. Другие сущности ThingWorx также могут быть включены в шаблон проектирования абстракции и реализации, но у этих сущностей особое значение.
На схеме показаны необходимые и дополнительные сущности компоновочного блока, разделенного на абстрактный и компоновочный блок реализации, включая реализацию сущностей или расширение из других сущностей.
На этой схеме стрелками с незакрашенным острием и сплошными линиями () обозначены сущности, которые расширяются от сущностей, указанных стрелками, а стрелками с незакрашенным острием и пунктирными линиями () обозначены реализации сущностей, указанных стрелками.
В шаблона проектирования абстракции и реализации включены следующие дополнительные сущности:
Сущности обеспечения безопасности: группы пользователей с разрешениями можно создавать и использовать для установления различных разрешений для каждого компоновочного блока. Роль пользователя - это просто другая группа пользователей, добавленная в каждую из групп пользователей.
Мэшапы: шаблон проектирования абстракции и реализации позволяет добавлять мэшапы как часть функций компоновочного блока. Это могут быть основные мэшапы, связанные с основным мэшапом, или вложенные мэшапы, используемые различными компоновочными блоками. Разработчик компоновочного блока решает сам, какие функции должны находиться в компоновочном блоке.
Сущности логики модели: профиль вещи логики модели предназначен для использования в мэшапах или других компонентах, которые обеспечивают организационную безопасность оборудования, используя организации в соответствии с требованиями ThingWorx. Это необходимо при использовании контроля видимости для отдельного оборудования. Службы, содержащиеся в профиле вещи логики модели, применяются к иерархическим сущностям оборудования и предоставляют вложенные сервисы для вызова соответствующего настроенного диспетчера через профиль вещи управления для компоновочного блока. Все диспетчеры зарегистрированы в таблице конфигураций DefaultGlobalManagerConfiguration вещи PTC.BaseManager. Диспетчеры также можно настроить в таблице конфигураций ManagerConfiguration любой сущности, реализующей профиль вещи PTC.Base.ConfigManagement_TS, такой как вещь диспетчера для компоновочного блока или вещь модели оборудования на основе шаблона вещи, реализующего профиль вещи (например, PTC.MfgModel.DefaultWorkUnit_TT). Это позволяет использовать различные диспетчеры для различных моделей. Например, у двух организаций могут быть различные диспетчеры, которые необходимо использовать при получении данных из разных источников.
Когда сервис ссылается на другой диспетчер, она сначала просматривает таблицу ManagerConfiguration в сущности, вызывающей сервис, чтобы узнать, настроена ли запись для указанного диспетчера. Если запись отсутствует, то сервис обращается к таблице конфигураций DefaultGlobalManagerConfiguration в вещи PTC.Base.Manager.
Было ли это полезно?