Расширенная настройка > Создание нового задания для ThingWorx Navigate с нуля
  
Создание нового задания для ThingWorx Navigate с нуля
Стандартные блоки задания
Задание составляется из нескольких основных деталей:
Мэшап - интерфейс пользователя задания.
Сервисы - команды Java или сценарии Java, выполняющие действия. Сервисы находятся в ptc-windchill-integration-connector.
Windchill - источник данных.
Используйте приложение ThingWorx Composer, чтобы создать мэшап и подключить его к сервисам.
Пример. Создание нового задания
В приведенных ниже разделах описано создание нового задания в ThingWorx Composer от начала до конца. В задании примера пользователи должны выполнить поиск данных Windchill и получить результаты в таблице. При выборе элемента в таблице пользователь увидит дополнительные свойства в приведенной ниже таблице и интерактивное 3D-представление элемента. Можно щелкнуть ссылку, чтобы открыть представление в Creo View. Окончательно задние будет выглядеть следующим образом:
В этом примере демонстрируется, как скомбинировать стандартные блоки задания в рабочий мэшап. Может оказаться, что многие сервисы, необходимые вашей организации, уже включены вместе с примером мэшапа и ptc-windchill-integration-connector.
В результате многие пользовательские задания можно собрать, используя только интерфейс пользователя ThingWorx и эти стандартные сервисы. Если необходимо написать собственные сервисы, вам могут быть полезны предоставляемые пошаговые инструкции для создания ряда часто используемых сервисов. Просмотрите руководство по Windchill Extension на сайте PTC в разделе Reference Documents (Справочные документы).
Но сначала создадим пример задания.
Запланируйте задание
Рекомендуется планировать функциональность и компоновку задания, прежде чем начать его создание. Тогда будет известно, какие потребуются сервисы, какие панели необходимы для каждого сервиса и как они будут расположены. После создания плана можно начать сборку сервисов, которые вам требуются на соединителе. Переходите к выполнению шагов из следующего раздела.
Дублирование соединителя интеграции и медиаобъекта
1. Слева на вкладке Обзор в разделе ВИЗУАЛИЗАЦИЯ выберите Медиа. Справа откроется список медиаобъектов.
2. Установите флажок ptc-windchill-integration-connector-proxy и щелкните Дублировать. Справа откроется окно "Новый медиаобъект" с настройками из ptc-windchill-integration-connector-proxy.
3. Задайте наименование нового медиаобъекта. Для этого примера будем использовать sample-connector-proxy.
* 
Удостоверьтесь, что наименования медиаобъекта и соединителя интеграции связаны:
<connector_name>
<connector_name>-proxy
4. Щелкните Сохранить. Медиаобъект будет продублирован.
5. Затем продублируется соединитель интеграции. Слева на вкладке Обзор в разделе МОДЕЛИРОВАНИЕ выберите Соединители интеграции. Справа откроется список соединителей интеграции.
6. Установите флажок ptc-windchill-integration-connector и щелкните Дублировать. Справа откроется окно "Новая вещь" с настройками из ptc-windchill-integration-connector:
Теги - PTC Navigate
Базовый шаблон вещи - WindchillSwaggerConnector
Внедренные структуры - WindchillContentProxyServiceProvider
7. Задайте наименование нового соединителя. Для этого примера используем sample-connector. Щелкните Сохранить.
8. Щелкните Сервисы, чтобы открыть сервисы для нового соединителя интеграции. Выполните поиск сервиса Search_Get_SavedSearches, а затем щелкните его, чтобы открыть и править.
9. В разделе Сведения о маршруте щелкните +Создать карту API. Откроется диалоговое окно Создать карту API.
10. Задайте следующие свойства.
Идентификатор сопоставления - SavedSearch
Конечная точка - findSavedSearch
Выбор профиля данных - ptc-savedSearch-demo-shape
11. Перетащите атрибут name из дерева Конечная точка в атрибут name структуры данных.
12. Перетащите id из дерева Конечная точка в атрибут objectid структуры данных. Новая карта интерфейса API должна быть похожа на эту:
13. Щелкните Готово, а затем на странице маршрута Search_Get_SavedSearches щелкните Сохранить и продолжить.
14. Проверьте сервис, введя в разделе Входные данные следующие данные:
$filter - scope ne null
$select - name
Щелкните Выполнить. В разделе Выходные данные в таблице результатов отобразятся глобальные сохраненные поиски из Windchill.
15. Нажмите кнопку Готово. Маршрут обновится.
Добавьте новый локальный сервис: "Выполнение сохоаненного поиска"
1. На странице Сервисы щелкните +Добавить, а затем выберите Локальные (JavaScript). Откроется страница Новое устройство.
2. В разделе Информация о сервисе в поле Наименование введите ExecuteSavedSearch.
3. Щелкните раздел Входные данные, а затем щелкните +Добавить.
4. В диалоговом окне Новые входные данные введите наименование входных данных oid и убедитесь, что Базовый тип имеет значение СТРОКА.
5. Нажмите кнопку Готово.
6. В разделе Выходные данные задайте следующие параметры.
Тип выходных данных - INFOTABLE
Структура данных - ptc-part-demo-shape
7. В инструменте "Фрагменты" скопируйте следующий код:
// result: JSON
var csrf_token = me.Security_Get_CSRF().items[0].attributes.nonce;
var params = {
infoTableName : "InfoTable",
dataShapeName : "ptc-part-demo-shape"
};
// CreateInfoTableFromDataShape(ptc-part-demo-shape)
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var select = "";
// infotable datashape iteration
var dataShapeFields = result.dataShape.fields;
for (var fieldName in dataShapeFields) {
select += ',' + fieldName;
}
// result: JSON
var searchResult = me.Search_Get_SavedSearch_Results({
arguments: undefined /* JSON */,
oid: oid /* STRING */,
CSRF_NONCE: csrf_token /* STRING */,
$select: select /* STRING */
});
var row = {};
for each (var hit in searchResult.items) {
row = hit.attributes;
row.objectId = hit.id;
result.AddRow(row);
}
8. Нажмите кнопку Готово.
Добавьте новый локальный сервис: "Получение ссылок на объекты визуализации"
1. Вернитесь на страницу Сервисы, щелкните еще раз Добавить > Локальные (JavaScript), чтобы добавить еще один новый сервис.
2. В поле Информация о сервисе введите наименование сервиса GetViewableLinks.
3. Щелкните Входные данные и добавьте следующие входные данные.
Наименование - oid
Базовый тип - СТРОКА
4. Нажмите кнопку Готово.
5. Щелкните Выходные данные, а затем задайте следующие выходные данные.
INFOTABLE
Структура данных - ptc-creoview-info-shape
6. В инструменте "Фрагменты" скопируйте следующий код:
var params = {
infoTableName : "InfoTable",
dataShapeName : "ptc-creoview-info-shape"
};
// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(ptc-creoview-info-shape)
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
// result: JSON
var vizResult = me.Visualization_Get_Viewable({
forceCreoViewPlugin: undefined /* BOOLEAN */,
navigationCriteria: undefined /* STRING */,
oid: oid /* STRING */
});
// ptc-creoview-info-shape object
for each (var rep in vizResult.attributes.representations) {
// loop through all reps until the default rep is discovered
if (rep.attributes.default) {
// result: JSON
var fieldvalues = me.RewriteContentProxyFieldValues({
object:
{"twodthumbnail":rep.attributes.twodthumbnail,
"threedthumbnail" :
rep.attributes.threedthumbnail, // STRING
"structure":
vizResult.attributes.structure } /* JSON */
});
fieldvalues.launchCreoViewUrl = rep.attributes.launchCreoView; // HYPERLINK
result.AddRow(fieldvalues);
result.AddRow(fieldvalues);
break;
}
}
Теперь ваш сервис выглядит следующим образом:
7. Нажмите кнопку Готово. Сервис создан.
8. Теперь щелкните Сохранить, чтобы сохранить соединитель.
Создание нового мэшапа и задание компоновки
С готовым соединителем интеграции можно построить мэшап для задания.
1. В верхнем меню ThingWorx Composer нажмите + НОВЫЙ. Начните вводить мэшап, затем выберите Мэшап в списке. Откроется диалоговое окно Новый мэшап.
2. В разделе Заготовка выберите Адаптивную компоновку и нажмите кнопку ОК.
3. На странице Общая информация введите имя мэшапа и нажмите кнопку Сохранить.
4. Нажмите Конструирование. Откроется редактор мэшапа.
5. С вкладки Виджеты перетащите элемент Компоновка в рабочую область редактора мэшапа. Откроется диалоговое окно Настроить компоновку.
* 
Можно ввести наименование в поле, чтобы быстро получить виджет без прокрутки списка.
6. Щелкните Горизонтально и в разделе Опции компоновки настройте следующую компоновку:
Левая боковая панель - установите флажок
Столбцы - 1
7. Нажмите кнопку Готово.
8. Перетащите другую компоновку в область столбца (справа). Определите следующие опции:
Вертикальный
Заголовок - установите этот флажок
Строки - 2
9. Щелкните Готово, а затем щелкните Сохранить.
Ниже показан мэшап на данный момент:
Теперь давайте добавим виджеты.
Добавьте виджеты в компоновку
Теперь у нас есть основная платформа задания. Далее добавим виджеты, чтобы определить визуальные компоненты для каждой панели.
1. Найдите эти виджеты и перетащите их в следующие расположения:
Список - левая боковая панель. Отображает список сохраненных поисков из Windchill. При выборе элемента из списка сведения о нем появятся на панели Сетка.
Сетка - верхняя строка правой компоновки. Отображает сведения об элементе, выбранном пользователем.
Панель - нижняя строка правой компоновки. Показывает 3D-визуализацию детали или сборки с отображением свойств выбранных деталей.
2. Выберите графический фрагмент Панель и перетащите графический фрагмент Отображение свойств на левую сторону панели.
3. Перетащите графический фрагмент ThingView на правую сторону той же панели, рядом с элементом Отображение свойств. Этот виджет отображает 3D-представление выбранного элемента.
4. Щелкните Сохранить.
Пользовательский интерфейс задания готов. Переходите к следующему разделу для добавления сервисов.
Добавление сервисов
Теперь, когда виджеты добавлены, можно компоновать интерфейс пользователя. Соединим источники информации с помощью ранее созданного соединителя интеграции sample-connector. На следующем шаге будут добавлены источник данных и сервисы, необходимые, чтобы мэшап начал работать.
1. На вкладке Данные в правой верхней панели редактора мэшапа щелкните , чтобы добавить новый источник данных. Откроется диалоговое окно Добавить данные.
2. В поле Искать в сущностях начните вводить наименование соединителя интеграции, например sample-connector.
3. Выберите в результатах соединитель интеграции. Сервисы, доступные для этой сущности, будут отображены слева.
4. Найдите следующие сервисы и щелкните , чтобы выбрать каждый сервис:
Search_Get_SavedSearches
ExecuteSavedSearch
GetViewableLinks
Службы добавятся в список Выбранные сервисы.
5. В разделе Выбранные сервисы для Search_Get_SavedSearches установите флажок Мэшап загружен?. Эта настройка покажет сохраненные поиски из Windchill сразу после загрузки мэшапа.
6. Щелкните Готово, а затем щелкните Сохранить, чтобы сохранить мэшап в текущем состоянии.
Соедините сервисы с виджетами
В нашем распоряжении имеются сервисы данных вместе с элементами интерфейса пользователя. На следующих шагах мы соединим все.
1. На панели Данные в разделе Search_Get_SavedSearches разверните раздел Возвращаемые данные.
2. Перетащите Все данные на виджет Список. Будут возвращены все данные, найденные в сохраненном поиске.
3. Для поля Выбор цели привязки выберите значение Данные. Будет создано соединение. В нижней части окна Composer появится схема соединений.
* 
Этот шаг заменяет написание сценария Java на стороне клиента вручную, которое необходимо для более ранних версий ThingWorx.
4. Далее можно сконфигурировать виджет. На вкладке Свойства виджета в левой части Mashup Builder задайте следующие параметры.
AutoSelectFirstRow - выбрана
DisplayField - name
ValueField - objectid
DisplayName - введите Сохраненные поиски
* 
Щелкайте вне текстового поля, чтобы сохранить каждую сущность.
5. Удостоверьтесь, что флажок Search_Get_SavedSearches на вкладке Данные все еще установлен. На вкладке Свойства данных добавьте следующие значения в столбец Значение.
$filter - scope ne null
$select - name
6. В верхней части щелкните Сохранить.
Свяжите данные сервисов
Работа некоторых сервисов базируется на данных из другого сервиса. Например, если мы выбираем сохраненный поиск в списке, мы хотим, чтобы он выполнялся. На следующих шагах будут созданы эти соединения между сервисами. Это называется привязыванием.
1. В разделе ExecuteSavedSearch разверните Параметры.
2. В разделе Search_Get_SavedSearches разверните Возвращаемые данные, затем разверните Выбранные строки.
3. В разделе Выбранные строки перетащите поле objectId в поле oid, которое находится в подразделе Параметры раздела ExecuteSavedSearch.
Первое соединение завершено.
4. Для второго соединения выберите Search_Get_SavedSearches. На правой нижней панели на вкладке Свойства данных появятся события.
5. Затем перетащите SelectedRowsChanged с панели Свойства данных в раздел ExecuteSavedSearch.
Это соединение выполняет сервис ExecuteSavedSearch, когда пользователь выбирает строку в списке.
Для следующего соединения свяжите данные с сеткой и графическим фрагментом ThingView.
1. На вкладке Данные на верхней панели разверните ExecuteSavedSearch, а затем перетащите Все данные в виджет сетки.
2. Чтобы связать данные, в разделе Выбор цели привязки выберите Данные.
3. Если нужно изменить отображение столбцов, в виджете сетки наведите указатель на и щелкните Конфигурировать виджет. Откроется диалоговое окно Конфигурировать виджет. Можно настроить порядок, форматирование, отображение и другие атрибуты, а затем щелкнуть Готово.
Показ 3D-представления структуры
Структура связывается с виджетом ThingView для добавления области визуализации в задание.
1. Разверните ExecuteSavedSearch, а затем - Выбранные строки. Затем разверните GetViewableLinks.
2. Перетащите вывод objectId из ExecuteSavedSearch в GetViewableLinks к входному параметру oid.
3. Разверните GetViewableLinks, затем разверните Все данные. Перетащите выходной параметр structure в графический фрагмент ThingView. Это позволяет отображать структуру изделия в виджете ThingView.
4. В разделе Выбор цели привязки выберите ProductToView.
5. Выберите ExecuteSavedSearch. События появятся на вкладке Свойства данных ниже.
6. Перетащите событие SelectedRowsChanged в GetViewableLinks на верхней панели. В результате при выборе пользователем другой строки в сетке будет обновляться структура объекта визуализации.
7. Щелкните Сохранить.
Проверьте соединения
Ниже приведены соединения, которые должны быть видны к этому моменту. Выберите каждый из приведенных ниже объектов, чтобы увидеть его соединение:
Виджет списка
ExecuteSavedSearch
Search_Get_SavedSearches
GetViewableLinks
Просмотр нового задания
Щелкните Просмотр мэшапа. Откроется новое задание. Поздравляем!
Теперь можно добавить задание на главную страницу ThingWorx Navigate и добавить настройку. См. следующий раздел "Добавление пользовательского задания на главную страницу".
Требуется дополнительная информация? Ниже перечислены некоторые ресурсы
Виджеты
Сервисы данных и связывание
Усовершенствованное расширение виджетов сетки
Добавление 3D-визуализации к заданию