操作栏 (测试版)
定义和用法
“操作栏”组件属于小组件,用于显示可供用户使用的一系列操作。这些操作一部分显示为一行按钮,其余则出现在随附的列表框中。组件配置和用户屏幕的大小决定了显示为按钮的操作的数量。所有不显示为按钮的操作都将显示在此列表框中。
下面是一个示例图像,其中显示了“操作栏”组件:
可通过以下方式配置“操作栏”组件:
定义“操作栏”中包括的操作
设置显示为按钮的操作的最大数量
根据操作的可用性设置操作的可见性选项
定义操作的顺序
定义操作是否需要输入
为“操作栏”选择所需的样式
操作主要用于激活服务或弹窗。必须在 ThingWorx 中单独配置服务或弹出式混搭。必须在 ThingWorx 中的相应服务或混搭中配置其他所有功能,如 toast 消息。
“操作栏”组件包括在“项列表”和“项标识”组件内。
“操作栏”组件没有任何预定义配置。
绑定属性 
输入
属性名称
说明
属性类型
Disabled
禁用混搭中的小组件。
布尔型
Input
用于标识要从后端系统中获取的数据。
CCO 格式的 JSON
ServiceActionId
单击操作时,将使用服务操作的操作 ID 来更新此字符串。
字符串
SubComponentConfiguration
如果配置在运行时发生更改,则会将其绑定到此属性。
JSON
输出
属性名称
说明
属性类型
EventTriggered
如将操作的 fireEventOnFinish 配置属性配置为 true,则在服务结束运行或弹窗显示时所触发的事件。
事件
ServiceActionIdChanged
ServiceActionId 中的值发生更改,即由“操作栏”调用的服务结束运行时所触发的事件。
事件
PopupClosed
当打开的弹窗关闭时所触发的事件。
事件
配置属性 
下表显示了用于配置此组件的 JSON 属性。
有关详细信息,请参阅组件配置结构
有关子属性的详细信息,请参阅子属性和容器键
属性名称
说明
属性类型
默认值
必需或可选
maxItemsToShow
显示的最大操作按钮数。如果操作按钮数大于指定值,则会在列表框中填充其他操作。
2
必需
modelThingName
事物的名称,该事物包含具有以下声明的服务:
public JSONObject GetActions(@ThingworxServiceParameter(name = "ccoJson", baseType = "JSON") JSONObject ccoJson)
此服务接受 CCO 格式的输入,其中包含单一项。然后返回一个包含数组的 JSONObject,该数组将可用操作的 ID 映射到从后端系统接收到的相应操作标签。请参阅下面的 JSON 配置示例。
PTC.ActionBar Model.Thing
必需
actions
需要从后端系统中获取其数据的操作列表。容器键为 actionConfiguration。请参阅下面的子属性:
不适用
必需
overrideLabel
此处设置的值将显示为操作按钮的标签,覆盖来自后端系统的值。要进行本地化,可在值两边加上双括号。
不适用
可选
actionButtonVisibility
用于确定在何种条件及何种状态下显示操作按钮。选项:AlwaysShownDisableUnavailableHideUnavailableAlwaysShown - 按钮始终可见且已启用。DisableUnavailable - 按钮始终可见,但当操作不可用于所选对象时,按钮将被禁用。HideUnavailable - 仅当操作可用于所选对象时,按钮才可见。
注意:其他配置也可能影响按钮是已启用还是已禁用。
不适用
必需
buttonStyle
确定按钮的视觉样式。选项:primarysecondarytertiarydangertransparent
不适用
必需
overrideSetDisabled
如果设置了此字段,则其值将是决定启用还是禁用按钮的唯一因素。选项:truefalse。如果为 true,则确保禁用该按钮,false 则确保启用按钮。
不适用
可选
activityType
用于确定此操作是运行服务还是显示弹出式混搭。选项:popupservice。有关弹窗和服务的必需子属性,请参阅下表。
不适用
必需
fireEventOnFinish
如果将此字段设置为 true,则当服务结束运行时,将触发 EventTriggered 事件,而当弹窗关闭时,将触发 PopupClosed 事件。
不适用
可选
inputConstraints
确定操作的输入约束。选项:InputRequiredSingleInputOnlyNoInputRequired
InputRequired:此操作必须接收输入才能运行。如果输入为空且不包含任何项,则此操作的按钮将处于禁用状态。
SingleInputOnly - 此操作必须接收单个输入才能运行。如果输入为空或包含多个项,则此操作的按钮将处于禁用状态。
NoInputRequired - 此操作可在没有任何输入的情况下运行,也可通过输入进行操作。
不适用
可选
iconWhenEnabled
如果指定了此字段,则在启用操作按钮时,操作按钮的标签左侧将有一个图标。
entityName
用作图标的媒体实体的名称。
iconWhenDisabled
如果指定了此字段,则在禁用操作按钮时,操作按钮的标签左侧将有一个图标。
entityName
用作图标的媒体实体的名称。
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 时,才会使用此属性。
不适用
可选
使用 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_InputCcoserviceParam_ActionId。参数 serviceParam_InputCco 是 JSONObject,并且是提供给“操作栏”的输入。参数 serviceParam_ActionId 是所单击操作的 ID 的字符串。如果您的服务未在其声明中包括这些参数,则不能使用它们。如果要使用它们,请使用以下方法定义您的服务声明,以使用其中一个或两个:
@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":{
"overrideLabel":{
"value":""
},
"actionButtonVisibility":{
"selectedKey":"HideUnavailable"
},
"buttonStyle":{
"selectedKey":"primary"
},
"activityType":{
"selectedKey":"popup"
},
"mashupName":{
"mashupName":"PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish":{
"value":false
},
"inputConstraints":{
"selectedKey":"SingleInputOnly"
}
}
},
"ordinal":1
},
{
"id":"Reject",
"additionalData":{
"actionConfiguration":{
"overrideLabel":{
"value":""
},
"actionButtonVisibility":{
"selectedKey":"HideUnavailable"
},
"buttonStyle":{
"selectedKey":"primary"
},
"activityType":{
"selectedKey":"popup"
},
"mashupName":{
"mashupName":"PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish":{
"value":false
},
"inputConstraints":{
"selectedKey":"SingleInputOnly"
}
}
},
"ordinal":2
},
{
"id":"Analyze",
"additionalData":{
"actionConfiguration":{
"overrideLabel":{
"value":""
},
"actionButtonVisibility":{
"selectedKey":"HideUnavailable"
},
"buttonStyle":{
"selectedKey":"primary"
},
"activityType":{
"selectedKey":"popup"
},
"mashupName":{
"mashupName":"PTC.AccessApp.WindchillServices.RoutingOptionMashup"
},
"fireEventOnFinish":{
"value":false
},
"inputConstraints":{
"selectedKey":"SingleInputOnly"
}
}
},
"ordinal":3
},
{
"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":4
}
],
"objectType":"WT.WorkItem.Actions"
}
],
"adapter":{
"instanceName":"windchill",
"thingName":"PTC.WCAdapter"
}
}
]
}
}
}
这对您有帮助吗?