Панель действий (BETA)
Определение и использование
Компонент "Панель действий" представляет собой виджет, отображающий набор действий, доступных пользователю. Действия отображаются в виде ряда кнопок и в сопутствующем поле списка. Число действий, которые отображаются в виде кнопок, определяется конфигурацией компонента и размером экрана пользователя. Все действия, не отображающиеся в виде кнопок, появятся в поле списка, если щелкнуть действие, обозначенное многоточием.
На приведенном ниже изображении показан компонент "Панель действий".
Можно сконфигурировать компонент "Панель действий" следующими способами.
Определить действия, которые будут включены в панель действий
Задать максимальное число действий для показа в виде кнопок
Задать опции видимости для действий в зависимости от их доступности
Определить порядок действий
Определить, требуются ли для действия входные данные
Выбрать нужный стиль для панели действий
Сконфигурировать кнопку меню на панели действий
Действия предназначены для активации сервиса или всплывающего окна. Сервис или мэшап всплывающего окна необходимо отдельно сконфигурировать в ThingWorx. Любые дополнительные возможности, такие как всплывающие сообщения, должны быть сконфигурированы в соответствующем сервисе или мэшапе в ThingWorx. Можно также сконфигурировать открытие URL-адреса на панели действий - например, сконфигурировав кнопку Показать в Windchill.
Панель действий включается в компоненты "Список элементов" и "Реквизиты элемента". Ее также можно включить в панель предварительного просмотра заданий "Просмотр списка деталей", "Просмотр структуры детали" и "Просмотр структуры документа". Панель предварительного просмотра заменяет панель выбранных документа или детали и находится в правом верхнем углу данного задания.
Для компонента "Панель действий" доступны следующие типы конфигурации: "Панель действий", "Панель действий с деталью" и "Панель действий с документом". В следующей таблице перечислены действия, доступные для каждой из этих конфигураций. Также в таблице для каждого действия указан идентификатор, представляющий собой значение свойства id в конфигурации.
Тип конфигурации
Действия по умолчанию
Идентификатор действия
Панель действий
Согласовать
Approve
Отклонить
Reject
Анализ
Analyze
переназначить
Reassign
Панель действий с деталью
Сообщить о проблеме
PTC.Nav.ReportAProblem
Показать в Windchill
PTC.Nav.ViewInWindchill
Панель действий с документом
Открыть документ
PTC.Nav.OpenDocument
Сообщить о проблеме
PTC.Nav.ReportAProblem
Показать в Windchill
PTC.Nav.ViewInWindchill
Свойства привязки 
Входные данные
Имя свойства
Описание
Тип свойства
Disabled
Отключает виджет в мэшапе.
Логический
Input
Используется для идентификации данных, которые должны вызываться из серверной системы.
JSON в формате CCO
ServiceActionId
Если щелкнуть действие, эта строка обновится и будет содержать ИД действия сервиса.
Строка
SubComponentConfiguration
Привяжите конфигурацию к этому свойству, если оно изменяется во время выполнения.
JSON
Выходные данные
Имя свойства
Описание
Тип свойства
EventTriggered
Событие, которое инициируется при завершении работы сервиса или при отображении всплывающего окна, если при конфигурировании этого действия для свойства fireEventOnFinish задано значение true.
Событие
ServiceActionIdChanged
Событие, которое инициируется при изменении значения в ServiceActionId, свидетельствующем о завершении выполнения сервиса, вызванного на панели действий.
Событие
PopupClosed
Событие, которое инициируется при закрытии открытого всплывающего окна.
Событие
Свойства конфигурации 
В следующих таблицах показаны свойства JSON, используемые для конфигурирования этого компонента.
Дополнительные сведения о структуре конфигурации см. в разделе Структура конфигурации компонента.
Дополнительные сведения о подсвойствах см. в разделе Подсвойства и ключи контейнера.
Имя свойства
Описание
Тип свойства
Значение по умолчанию
Обязательное или необязательное
maxItemsToShow
Максимальное число отображаемых кнопок действий. Если имеется больше кнопок действий, чем указывает это значение, в поле списка будут помещены дополнительные действия.
2
Обязательный
modelThingName
Имя вещи, содержащей сервис со следующей сигнатурой:
public JSONObject GetActions(@ThingworxServiceParameter(name = "ccoJson", baseType = "JSON") JSONObject ccoJson)
Этот сервис получает входные данные, содержащие один элемент, в формате CCO (Common Communication Object). Затем он возвращает JSONObject, содержащий массив, который сопоставляет идентификатор доступного действия с его меткой, полученной из серверной системы. См. приведенный ниже пример с образцом конфигурации JSON.
PTC.ActionBar Model.Thing
Обязательный
actions
Список действий, для которых необходимо вызывать данные из серверной системы. Ключ контейнера: actionConfiguration. См. ниже список подсвойств:
Н/Д
Обязательный
overrideLabel
Здесь набор значений представлен меткой кнопки действия, которая переопределяет значение, поступающее из серверной системы. Для локализации заключите это значение в двойные скобки.
Н/Д
Необязательный
actionButtonVisibility
Определяет, при каких условиях отображаются кнопки действий и в каком состоянии. Опции: AlwaysShown, DisableUnavailable, HideUnavailable. Кнопка AlwaysShown всегда видима и включена. Кнопка DisableUnavailable всегда видима, но отключена, если действие недоступно для данного выбора. Кнопка HideUnavailable видима, только если действие доступно для данного выбора.
Примечание. Существуют другие конфигурации, влияющие на включение или выключение кнопки.
Н/Д
Обязательный
buttonStyle
Определяет визуальный стиль кнопки. Опции: primary, secondary, tertiary, danger, transparent.
Н/Д
Обязательный
overrideSetDisabled
Если это поле задано, то его значение будет единственным фактором, определяющим включение или выключение кнопки. Опции: true, false. При значении true эта кнопка будет выключена, а при значении false - включена.
Н/Д
Необязательный
fireEventOnFinish
Если для этого поля задано значение true, при завершении работы сервиса инициируется событие EventTriggered, а при закрытии всплывающего окна инициируется событие PopupClosed.
Н/Д
Необязательный
inputConstraints
Определяет ограничение входных данных для этого действия. Опции: InputRequired, SingleInputOnly и NoInputRequired.
InputRequired - это действие должно получать входные данные для работы. При пустых входных данных, когда они не содержат ни одного элемента, кнопка этого действия выключена.
SingleInputOnly - это действие должно получать один входной параметр для работы. Если входные данные пустые или содержат более одного элемента, кнопка этого действия выключена.
NoInputRequired - это действие может выполняться без входных данных или с входными данными.
Н/Д
Необязательный
iconWhenEnabled
Если это поле указано, то кнопка действия, когда она включена, содержит соответствующий значок слева от метки.
entityName
Наименование медиаобъекта, который должен использоваться в качестве значка.
iconWhenDisabled
Если это поле указано, то кнопка действия, когда она выключена, содержит соответствующий значок слева от метки.
entityName
Наименование медиаобъекта, который должен использоваться в качестве значка.
activityType
Определяет, запускает ли данное действие сервис или отображает всплывающий мэшап. Опции: openUrl (доступно в Windchill Navigate 9.3.4 и более поздних версий), popup, service и parent (доступно в Windchill Navigate 9.4.0 и более поздних версий). В приведенных ниже таблицах представлены необходимые подсвойства для свойств popup, service и parent.
Н/Д
Обязательный
mashupName
Имя мэшапа, которое отображается в виде всплывающего окна.
Это свойство используется, только если для activityType задано значение popup.
Н/Д
Обязательный
redirectAfterPopupSuccess
Перенаправляет в другой мэшап, если всплывающее окно закрылось после успешной операции.
Чтобы передать в панель действий информацию, была ли успешно завершена операция, выполняемая всплывающим окном, задайте для параметра сессии с наименованием PTC.ActionBar.popupCloseParameters значение, обозначающее успешное завершение или сбой. Например, мэшап всплывающего окна может содержать выражение, вычисляемое по завершении операции, выполняемой всплывающим окном, а в этом выражении задан параметр сессии. В следующем примере атрибут JSON operationSuccessful имеет значение true, после того как операция была успешно выполнена:
sessionStorage.setItem("PTC.ActionBar.popupCloseParameters", JSON.stringify( { operationSuccessful: true } ));
Это свойство используется, только если для activityType задано значение popup.
Н/Д
Необязательный
popupWidth
Определяет ширину появляющегося всплывающего окна.
Это свойство используется, только если для activityType задано значение popup.
1024
Необязательный
popupHeight
Определяет ширину появляющегося всплывающего окна.
Это свойство используется, только если для activityType задано значение popup.
640
Необязательный
thingWithService
Наименование вещи, содержащей сервис, который будет выполняться.
Это свойство используется, только если для activityType задано значение service.
Н/Д
Обязательный
serviceName
Имя сервиса, который должен выполняться.
Это свойство используется, только если для activityType задано значение service.
Н/Д
Обязательный
parameters
Это необязательное поле позволяет передавать жестко закодированные параметры в сервис или во всплывающий мэшап. Параметры, определяемые в JSONObject, должны иметь формат строки объекта JSON с обратной косой чертой и кавычками. Параметры необходимо вводить в файл конфигурации в формате "{\"myParamName\": \"hardcodedValue\"}" . Дополнительные сведения см. ниже.
Это свойство используется, только если для activityType задано значение service или popup.
Н/Д
Необязательный
openUrl
Разрешает задание URL-адреса в кнопке действия. Если задано допустимое значение, при выборе кнопки действия открывается новое окно или вкладка с заданным URL-адресом.
Это свойство используется, только если для activityType задано значение openUrl.
Н/Д
Необязательный
parentId
Это необязательное поле позволяет задать идентификатор родительского действия. Если задано допустимое значение, значит, существует родительское действие с этим идентификатором и опция для этого действия задана под кнопкой родительского меню. Если нет действия с идентификатором, который задан в parentId, действие игнорируется и не отображается.
Это свойство используется, только если для activityType задано значение parentId.
ИД родителя
Необязательный
Использование parameters для конфигурирования действия сервиса:
Ниже приведена сигнатура примера сервиса с именем MyService:
@ThingworxServiceDefinition(name = "MyService", category = "MyCategory")
public void MyService(
@ThingworxServiceParameter(name = "exampleInt", baseType = "INTEGER") Integer exampleInt,
@ThingworxServiceParameter(name = "ExampleString", baseType = "STRING") String exampleString,
@ThingworxServiceParameter(name = "ExampleBoolean", baseType = "BOOLEAN") Boolean exampleBoolean)
Значения параметров для MyService имеют следующий вид:
{
\"exampleInt\": 123,
\"exampleString\": \"Hello\",
\"exampleBoolean\": true
}
* 
Существует два параметра, которые сервис получает автоматически, если определена сигнатура сервиса для их получения: serviceParam_InputCco и serviceParam_ActionId. Параметр serviceParam_InputCco - это JSONObject и входное значение, предоставляемое на панели действий. Параметр serviceParam_ActionId - это строка, содержащая ИД действия, которое было выбрано. Если эти параметры не включены в сигнатуру сервиса, их нельзя использовать. Если нужно использовать эти параметры, определите свою сигнатуру сервиса для использования любого из них или обоих, выполнив следующие действия.
@ThingworxServiceDefinition(name = "MyService", category = "MyCategory")
public void MyService(
@ThingworxServiceParameter(name = "serviceParam_InputCco", baseType = "JSON")
JSONObject serviceParam_InputCco,
@ThingworxServiceParameter(name = "serviceParam_ActionId", baseType = "STRING")
String serviceParam_ActionId)
Пример конфигурации 
Пример конфигурации со стандартными кнопками
{
"maxItemsToShow": {
"value": 3
},
"modelThingName": {
"entityName": "PTC.ActionBarModel.Thing"
},
"actions": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Approve",
"additionalData": {
"actionConfiguration": {
"actionButtonVisibility": {
"selectedKey": "HideUnavailable"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "SingleInputOnly"
}
}
},
"ordinal": 10
}, {
"id": "Reassign",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": "Reassign"
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.ReassignActionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "InputRequired"
}
}
},
"ordinal": 20
}, {
"id": "PTC.Nav.OpenDocument",
"additionalData": {
"actionConfiguration": {
"openUrl": {
"value": "https://www.ptc.com"
},
"overrideLabel": {
"selectedKey": "[[PTC.AccessApp.OpenDocument]]"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "openUrl"
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
}
},
"ordinal": 30
}
}, {
"id": "ProblemReport",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": "[[PTC.Nav.CreateProblemReport.AppTitle]]"
},
"popupHeight": {
"value": 640
},
"popupWidth": {
"value": 800
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
},
"buttonStyle": {
"selectedKey": "primary"
},
"mashupName": {
"mashupName": "PTC.Nav.CreateProblemReportAppMashup"
},
"activityType": {
"selectedKey": "popup"
},
"parameters": {
"value": "{\"affectedItemsCCO\":{\"timeStamp\":\"2021-11-24 22:45:54.528\",\"data\":[{\"itemListsData\":[{\"items\":[{\"id\":{\"value\":\"OR:wt.part.WTPart:100447\"}}],\"objectType\":\"PTC.ProdMgmt.Part\"}],\"adapter\":{\"instanceName\":\"windchill\",\"thingName\":\"PTC.WCAdapter\"}}],\"version\":\"1.0.0\",\"statusMessage\":\"OK\",\"status\":\"200\"},\"isPopup\":true}"
}
}
},
"ordinal": 40
}
],
"objectType": "WT.WorkItem.Actions"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
}
}
Пример конфигурации с кнопкой меню
{
"maxItemsToShow": {
"value": 3
},
"modelThingName": {
"entityName": "PTC.ActionBarModel.Thing"
},
"actions": {
"selectedValues": {
"data": [{
"itemListsData": [{
"items": [{
"id": "Approve",
"additionalData": {
"actionConfiguration": {
"actionButtonVisibility": {
"selectedKey": "HideUnavailable"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "SingleInputOnly"
}
}
},
"ordinal": 10
}, {
"id": "Reassign",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": "Reassign"
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "popup"
},
"mashupName": {
"mashupName": "PTC.AccessApp.WindchillServices.ReassignActionMashup"
},
"fireEventOnFinish": {
"value": false
},
"inputConstraints": {
"selectedKey": "InputRequired"
}
}
},
"ordinal": 20
}, {
"id": "PTC.Nav.OpenDocument",
"additionalData": {
"actionConfiguration": {
"openUrl": {
"value": "https://www.ptc.com"
},
"overrideLabel": {
"selectedKey": "[[PTC.AccessApp.OpenDocument]]"
},
"buttonStyle": {
"selectedKey": "primary"
},
"activityType": {
"selectedKey": "openUrl"
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
}
},
"ordinal": 30
}
}, {
"id": "ProblemReport",
"additionalData": {
"actionConfiguration": {
"overrideLabel": {
"value": "[[PTC.Nav.CreateProblemReport.AppTitle]]"
},
"popupHeight": {
"value": 640
},
"popupWidth": {
"value": 800
},
"actionButtonVisibility": {
"selectedKey": "AlwaysShown"
},
"buttonStyle": {
"selectedKey": "primary"
},
"mashupName": {
"mashupName": "PTC.Nav.CreateProblemReportAppMashup"
},
"activityType": {
"selectedKey": "popup"
},
"parameters": {
"value": "{\"affectedItemsCCO\":{\"timeStamp\":\"2021-11-24 22:45:54.528\",\"data\":[{\"itemListsData\":[{\"items\":[{\"id\":{\"value\":\"OR:wt.part.WTPart:100447\"}}],\"objectType\":\"PTC.ProdMgmt.Part\"}],\"adapter\":{\"instanceName\":\"windchill\",\"thingName\":\"PTC.WCAdapter\"}}],\"version\":\"1.0.0\",\"statusMessage\":\"OK\",\"status\":\"200\"},\"isPopup\":true}"
}
}
},
"ordinal": 40
}
],
"objectType": "WT.WorkItem.Actions"
}
],
"adapter": {
"instanceName": "windchill",
"thingName": "PTC.WCAdapter"
}
}
]
}
}
}
Было ли это полезно?