고급 사용자 지정 > 재사용 가능 컴포넌트 사용 > 사용할 수 있는 재사용 가능 컴포넌트 > 작업 모음
  
작업 모음
정의 및 사용
작업 모음 재사용 가능 컴포넌트는 사용자가 사용할 수 있는 일련의 작업을 표시하는 위젯입니다. 작업은 버튼 행으로 표시되고 해당 드롭다운 메뉴에 표시됩니다. 컴포넌트 구성 및 사용자 화면의 크기에 따라 버튼으로 표시되는 작업 수가 결정됩니다. 버튼으로 표시되지 않는 작업은 드롭다운 메뉴에 표시됩니다. 다음과 같은 방법으로 작업 모음 재사용 가능 컴포넌트를 구성할 수 있습니다.
작업 모음에 포함되는 작업을 정의합니다.
버튼으로 표시할 최대 작업 수를 설정합니다.
사용 가능 여부에 따라 작업의 표시 유형 옵션을 설정합니다.
작업 순서를 정의합니다.
작업에 입력이 필요한지 여부를 정의합니다.
작업 모음에 대해 원하는 스타일을 선택합니다.
작업은 서비스 또는 팝업을 활성화하도록 설계되었습니다. 서비스 또는 팝업 매쉬업은 ThingWorx에서 별도로 구성해야 합니다. 알림 메시지와 같은 추가 기능은 ThingWorx의 해당 서비스 또는 매쉬업에서 구성되어야 합니다.
작업 모음은 항목 목록 및 항목 ID 재사용 가능 컴포넌트 내에 포함됩니다.
다음은 작업 모음 재사용 가능 컴포넌트를 보여주는 샘플 이미지입니다.
작업 모음 재사용 가능 컴포넌트에 사용할 수 있는 미리 정의된 구성이 없습니다.
바인딩 속성
작업 모음 컴포넌트의 속성 8가지를 바인딩에 사용할 수 있습니다.
Disabled - 매쉬업에서 위젯을 비활성화하는 부울입니다.
EventTriggered - 작업의 fireEventOnFinish가 true로 구성된 경우 서비스가 실행을 마치거나 팝업이 표시되면 트리거되는 이벤트입니다.
Input - 백 엔드 시스템에서 데이터를 가져와야 하는 입력 ID인 JSON입니다. 이 정보는 CCO(Common Communication Object) 형식으로 제공됩니다.
PopupClosed - 열린 팝업이 닫히면 트리거되는 이벤트입니다.
ServiceActionId - 작업을 클릭하면 서비스 작업의 작업 ID로 업데이트되는 문자열입니다.
ServiceActionIdChanged - ServiceActionId의 값이 변경되어 작업 모음에서 호출한 서비스가 실행을 끝냈음을 나타내면 트리거되는 이벤트입니다.
SubComponentConfiguration - 구성 JSON이 런타임에 변경되면 구성 JSON에 바인딩할 수 있는 JSON입니다. 런타임에 구성이 변경되지 않으면 다음 단원에서 설명하는 구성 필드를 사용하십시오.
구성 필드
다음 표에는 이 컴포넌트를 구성하는 데 사용할 수 있는 JSON 필드가 나와 있습니다.
속성 이름
설명
유형
기본값
필수 사항 또는 선택 사항
maxItemsToShow
표시되는 최대 작업 버튼 수입니다. 작업 버튼 개수가 지정된 값보다 많은 경우 드롭다운 메뉴에서 추가 작업이 채워집니다.
정수
2
필수 사항
modelThingName
다음 서명이 있는 서비스를 포함하는 사물의 이름입니다.
public JSONObject GetActions(@ThingworxServiceParameter(name = "ccoJson", baseType = "JSON") JSONObject ccoJson)
이 서비스는 단일 항목을 포함하는 CCO 형식의 입력을 받습니다. 그런 다음 사용 가능한 작업의 ID를 백 엔드에서 받은 해당 레이블에 매핑하는 배열을 포함하는 JSONObject를 반환합니다. 아래의 샘플 JSON 구성에 있는 예를 참조하십시오.
문자열
"PTC.ActionBar Model.Thing"
필수 사항
actions
작업 모음에서 사용할 수 있는 작업입니다. 다음 하위 속성을 참조하십시오.
문자열
해당 없음
필수 사항
id
백 엔드 시스템에서 받은 작업의 ID입니다. 하위 속성은 다음 표를 참조하십시오.
문자열
해당 없음
필수 사항
objectType
작업을 가져올 객체 유형입니다.
문자열
해당 없음
필수 사항
adapter
백 엔드 시스템에 대한 소스 구성입니다. 다음 하위 속성을 참조하십시오.
문자열
해당 없음
필수 사항
instanceName
백 엔드 시스템에 연결하는 데 사용할 커넥터를 의미하는 커넥터 인스턴스입니다.
문자열
"windchill"
필수 사항
thingName
데이터를 검색할 백 엔드 시스템 또는 어댑터의 이름입니다.
문자열
"PTC.WCAdapter"
필수 사항
id 아래의 구성 필드
속성 이름
설명
유형
기본값
필수 사항 또는 선택 사항
overrideLabel
여기에 설정된 값은 작업 버튼의 레이블로 표시되며 백 엔드 시스템에서 가져온 값을 재정의합니다. 로컬리제이션하려면 이중 괄호 안에 값을 넣으십시오.
문자열
해당 없음
선택 사항
actionButtonVisibility
작업 버튼이 표시되는 조건 및 상태를 결정합니다. 옵션은 AlwaysShown, DisableUnavailable, HideUnavailable입니다. AlwaysShown의 경우 버튼은 항상 표시되고 활성화됩니다. DisableUnavailable의 경우 버튼은 항상 표시되지만 지정된 선택에 대해 작업을 사용할 수 없을 때 비활성화됩니다. HideUnavailable의 경우 버튼은 지정된 선택에 대해 작업을 사용할 수 있을 때에만 표시됩니다.
참고: 버튼의 활성화 또는 비활성화에 영향을 주는 다른 구성이 있습니다.
문자열
해당 없음
필수 사항
buttonStyle
버튼의 표시 스타일을 결정합니다. 옵션은 primary, secondary, tertiary, danger, transparent입니다.
문자열
해당 없음
필수 사항
overrideSetDisabled
이 필드를 설정하면 해당 값이 버튼의 활성화/비활성화 여부를 결정하는 유일한 요소가 됩니다. 옵션은 true, false입니다. true이면 버튼이 비활성화되고, false이면 버튼이 활성화됩니다.
부울
해당 없음
선택 사항
activityType
이 작업에서 서비스를 실행할지 아니면 팝업 매쉬업을 표시할지를 결정합니다. 옵션은 popup, service입니다. 팝업 및 서비스에 대한 필수 하위 속성은 아래 표를 참조하십시오.
문자열
해당 없음
필수 사항
fireEventOnFinish
이 필드를 true로 설정하면 서비스가 실행을 마칠 때 EventTriggered 이벤트가 트리거되고 팝업이 닫히면 PopupClosed 이벤트가 트리거됩니다.
부울
해당 없음
선택 사항
inputConstraints
작업에 대한 입력 제약 조건을 결정합니다. 옵션은 InputRequired, SingleInputOnlyNoInputRequired입니다.
InputRequired: 이 작업은 작동을 위해 입력을 수신해야 합니다. 입력이 비어 있고 아무 항목도 없으면 이 작업의 버튼이 비활성화됩니다.
SingleInputOnly: 이 작업은 작동을 위해 단일 입력을 받아야 합니다. 입력이 비어 있거나 단일 항목이 둘 이상 있으면 이 작업의 버튼이 비활성화됩니다.
NoInputRequired: 이 작업은 입력 없이 또는 입력을 사용하여 작동할 수 있습니다.
문자열
해당 없음
선택 사항
ordinal
작업 버튼이 표시되는 순서입니다. 서수가 가장 낮은 작업이 초기 맨 왼쪽 위치에 표시됩니다. 음수 값이 허용됩니다.
정수
해당 없음
필수 사항
iconWhenEnabled
이 필드가 지정되면 작업 버튼이 활성화될 때 작업의 버튼에 레이블 왼쪽의 아이콘이 포함됩니다.
문자열
해당 없음
선택 사항
entityName
아이콘으로 사용할 미디어 엔티티의 이름입니다.
문자열
해당 없음
선택 사항
iconWhenDisabled
이 필드가 지정되면 작업 버튼이 비활성화될 때 작업의 버튼에 레이블 왼쪽의 아이콘이 포함됩니다.
문자열
해당 없음
선택 사항
entityName
아이콘으로 사용할 미디어 엔티티의 이름입니다.
문자열
해당 없음
선택 사항
popupactivityType에 대한 하위 속성
속성 이름
설명
유형
기본값
필수 사항 또는 선택 사항
mashupName
팝업으로 나타나는 매쉬업의 이름입니다.
문자열
해당 없음
필수 사항
redirectAfterPopupSuccess
작업이 성공한 후 팝업이 닫히면 다른 매쉬업으로 리디렉션합니다.
팝업에서 수행한 작업의 성공 여부를 작업 모음에 알리려면 PTC.ActionBar.popupCloseParameters라는 세션 매개 변수가 성공 또는 실패를 표시하도록 설정해야 합니다. 예를 들어, 팝업 매쉬업에서 팝업이 수행한 작업이 완료된 후 실행되는 표현식이 있을 수 있으며 이 표현식에서 세션 매개 변수가 설정됩니다. 다음 예에서는 작업이 성공했으므로 JSON 속성 operationSuccessful이 true로 설정됩니다.
sessionStorage.setItem("PTC.ActionBar.popupCloseParameters", JSON.stringify( { operationSuccessful: true } ));
문자열
해당 없음
선택 사항
popupWidth
표시되는 팝업의 너비를 지정합니다. 이 필드를 비워 두면 팝업의 기본 너비는 1024가 됩니다.
정수
해당 없음
선택 사항
popupHeight
표시되는 팝업의 너비를 지정합니다. 이 필드를 비워 두면 팝업의 기본 너비는 640이 됩니다.
정수
해당 없음
선택 사항
serviceactivityType에 대한 하위 속성
속성 이름
설명
유형
기본값
필수 사항 또는 선택 사항
thingWithService
실행할 서비스를 포함하는 사물의 이름입니다.
문자열
해당 없음
필수 사항
serviceName
실행할 서비스의 이름입니다.
문자열
해당 없음
필수 사항
parameters
이 선택적 필드를 사용하면 하드 코딩된 매개 변수를 서비스에 전달할 수 있습니다. 매개 변수는 JSONObject에서 정의되지만 이스케이프된 인용구를 사용하여 JSON 객체의 문자열로 형식을 지정해야 합니다. 매개 변수는 구성 파일에 "{\"myParamName\": \"hardcodedValue\"}" 형식으로 입력해야 합니다. 아래 추가 정보를 참조하십시오.
StringRepresentationOfJSONObject
해당 없음
선택 사항
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"
}
}
]
}
}