트랜잭션 관리자: 레이아웃 - UI 효과
YAML 또는 JSON으로 UI 효과를 프로그래밍하여 버튼에 기능을 추가하는 방법에 대해 알아봅니다.
트랜잭션 관리자에서 UI 효과는 버튼에 기능을 추가하는 레이아웃 요소입니다. 사용자는 설정된 UI 효과를 CPQ 사용자 지정할 수 있습니다. 그러나 사용자는 이벤트를 수행하는 동안 새 UI 효과를 만들 수 없습니다.
UI 효과와 이벤트가 같은 버튼에 있는 경우 이벤트가 실행된 후 UI 효과가 실행됩니다.
예: 목록 열기
예를 들어, UI 효과를 사용하면 트랜잭션에 추가할 수 있는 검색 가능한 제품 목록을 열 수 있습니다. 레이아웃에서 작성할 수 있는 방법은 다음과 같습니다.
...
{
"type": "button",
"event": "productSearch",
"label": "Add Products",
"uiEffect": {
"type": "productSearch",
"target": "slideout"
},
"columnOrder": 6,
"variableName": "productSearch"
},
...
결과 UI에 해당 버튼이 표시되는 방식은 다음과 같습니다.
UI 효과 프로그래밍
UI 효과는 매개변수의 조합으로 정의됩니다. 모든 UI 효과에는 유형이 있으며 일부 효과에는 대상, 위치 또는 옵션이 있을 수 있습니다.
각 매개변수에는 다음과 같은 가능한 값이 있습니다.
- type: , , anchor, productSearch, reconfigurerefreshSessionmanageFavoritesaddFavoritelineDetailurlshowTier
- target: inline, , tab, windowmodal, slideout, , lineDrawer,fullScreen
- location: [URL 또는 요소 ID]
- options: [유형에 따라 다름]
유형 분석
- url 에는 URL 형식의 위치가 필요합니다. 버튼을 누르면 특정 대상(인라인, 탭, 창, 모달 iframe 또는 슬라이드아웃 iframe)을 통해 사용자가 URL로 이동합니다. 관리자는 중괄호를 사용하여 필드 값을 URL에 동적으로 전달할 수 있습니다. 일반적인 사용 사례는 출력 문서에 값을 전달하거나 Salesforce에서 기록 페이지를 여는 것입니다.
- anchor 에는 위치가 레이아웃의 요소 ID로 필요합니다. 버튼을 누르면 요소에 포커스를 맞추거나 스크롤합니다. 관련 상위 요소는 탭 또는 아코디언 구조로 열립니다. 대상은 인라인이어야 합니다.
- productSearch 슬라이드아웃 또는 모달 창의 대상에서 제품 카탈로그를 엽니다. 변수 이름이 필요합니다. UI 효과를 gridHeaderButtons 요소에 추가해야 합니다. 옵션은 다음과 같습니다.
- 제품 목록 표시: products - true (표시), false (숨기기)
- 즐겨찾기 목록 표시: favorites - true (표시), 아니오(숨기기)
- 버튼 배치 위치: actionLocation - footer, header또는 둘 다
- 지정되지 않은 경우 기본값으로 설정됩니다.footer
- 버튼에는 "취소", "라인 추가", "구성" 및 "구성 완료"가 포함됩니다.
다음 코드는 제품을 표시하고, 즐겨찾기를 숨기고, 헤더에만 버튼을 배치합니다.
... "options": { "products": true, "favorites": false, "actionLocation": header }, ... - lineDetail 은(는) 라인 수준 버튼에 있어야 합니다. 이 버튼을 누르면 대상(modal, slideout, 또는 lineDrawer)에서 줄 상세 정보 레이아웃이 열립니다.
- exportLines 헤더 수준 버튼에 있어야 합니다. 버튼을 누르면 트랜잭션 라인이 CSV 파일로 익스포트됩니다.
- reconfigure 라인 수준 또는 헤더 수준 버튼에 있을 수 있습니다. 버튼이 헤더 수준인 경우 줄을 선택해야 합니다. 유형은 reconfigure 대상(modal, slideout또는 lineDrawer)에서 구성을 엽니다. 에는 버튼 위치를 정의하는 옵션이 포함되어 있습니다. reconfigure 자세한 내용은 위를 참조하십시오 productSearch .
- addFavorites 라인 수준 버튼 또는 헤더 수준 버튼에 있을 수 있습니다. 버튼이 헤더 수준인 경우 줄을 선택해야 합니다. addFavorites 선택 항목에서 즐겨찾기를 설명하고 생성할 수 있는 창을 엽니다. 다른 속성은 지원되지 않습니다.주:즐겨찾기를 공유하려면 테넌트 설정을 사용하도록 설정해야 합니다. 즐겨찾기 공유를 사용하려면 지원 티켓을 제출하십시오.
- manageFavorites 지정된 대상(modal, slideout, inline또는 )에서 즐겨찾기 관리자를 엽니다.
- refreshSession 세션이 수정되었는지 여부를 확인합니다. 그렇다면 refreshSession sessionId를 새로 고치고 변경 내용을 병합합니다.
- showTier
target = fullScreen및위치 = lineItems인 경우 전체 화면으로 라인 항목 그리드를 엽니다. showTier 모든 계층에서 작동하지만 이 기능의 목적을 위해 위치를 라인 항목의 계층 변수 이름으로 채워야 합니다.
현재 레이아웃 JSON은 확인되지 않았으며 일부 속성 조합은 지원되지 않습니다. 지원되지 않는 조합은 오류를 표시하지 않고 실패할 수 있습니다.
암시적 이벤트 호출
일부 UI 효과에는 관련 이벤트 실행이 포함됩니다. 예를 들어 UI 효과 reconfigure 나 UI 효과를 트리거하면 productSearch 이벤트가 실행됩니다upsertLines.
액세스 조건
UI 효과에 액세스하는 사용자의 기능은 이벤트와 같은 방식으로 제어할 수 없습니다. 다음 이벤트 설정에 필적할 수 있는 설정은 없습니다.
그러나 UI 효과에 대한 액세스 조건은 트랜잭션의 컨텍스트 또는 관련 이벤트에 의해 변경될 수 있습니다.
UI 효과에 암시적 이벤트가 연결되어 있는 경우 이벤트의 액세스 조건에 따라 버튼의 액세스 조건이 결정되고 UI 효과도 결정됩니다. 따라서 관리자가 UI 효과를 트리거할 수 있는 productSearch 조건을 제한하려는 경우 이러한 제한 사항을 이벤트에 upsertLines 추가할 수 있습니다.
UI 효과가 reconfigure 있는 라인 그리드의 버튼은 구성할 수 없는 라인에서 숨겨져 있습니다. 헤더 수준에서는 선택한 모든 라인을 구성할 수 있는 경우에만 활성화됩니다.
이벤트와 UI 효과가 모두 버튼에 있는 경우 둘 다에 대한 액세스는 개별 액세스 설정의 교집합에 따라 결정됩니다. 버튼에 액세스할 수 있으려면 UI 효과와 이벤트에 모두 액세스할 수 있어야 합니다. 둘 중 하나가 비활성화되거나 숨겨져 있으면 전체 버튼이 비활성화되거나 숨겨집니다.
일반적인 케이스
- 제품 검색(
addLinesUI 효과는 암시적으로upsertLines이벤트를 호출함):- JSON 코드 스니펫
{ "type": "button", "variableName": "addLines", "label": "Add Lines", "uiEffect": { "type": "productSearch", "target": "slideout" } } - YAML 코드 스니펫
type: button variableName: addLines label: Add Lines uiEffect: type: productSearch target: slideout
- JSON 코드 스니펫
- 라인 상세 정보 서랍:
- JSON 코드 스니펫
"lineLevelButtons": [ { "icon": "settings", "label": "reconfig", "uiEffect": { "type": "lineDetail", "target": "lineDrawer" }, "variableName": "reconfig" } - YAML 코드 스니펫
lineLevelButtons: -icon: settings label: reconfig uiEffect: type: lineDetail target: lineDrawer variableName: reconfig
- JSON 코드 스니펫
- 즐겨찾기를 활성화한 제품 검색:
- JSON 코드 스니펫
{ "type": "button", "variableName": "addLines", "label": "Add Lines", "uiEffect": { "type": "productSearch", "target": "slideout" "options": { "products": true, "favorites": true, } } } - YAML 코드 스니펫
type: button variableName: addLines label: Add Lines uiEffect: type: productSearch target: slideout options: products: true favorites: true
- JSON 코드 스니펫
- 새 탭에서 URL 링크 열기:
- JSON 코드 스니펫
{ "columnorder": 1, "label": "Google it", "type": "event", "variableNane": "LinkToSite", "uieffect": { "type": "url", "target": "tab", "location": "https://google.com/search?q=I{txn.search}" } } - YAML 코드 스니펫
columnorder: 1 label: Google it type: event variableName: LinkToSite uieffect: type: url target: tab location: "https://google.com/search?q=I{txn.search}"
- JSON 코드 스니펫
- 세션 새로 고침:
- JSON 코드 스니펫
{ "type": "button", "variableName": "Refresh", "label": "Refresh", "uiEffect": { "type": "refreshSession" } } - YAML 코드 스니펫
type: button variableName: Refresh label: Refresh uiEffect: type: refreshSession
- JSON 코드 스니펫
- 재구성:
- JSON 코드 스니펫
"lineLevelButtons": [ { "icon": "settings", "label": "Reconfigure", "uiEffect": { "type": "reconfigure", "target": "modal" }, "variableName": "reconfig" } - YAML 코드 스니펫
lineLevelButtons: -icon: settings label: Reconfigure uiEffect: type: reconfigure target: modal variableName: reconfig
- JSON 코드 스니펫
- 즐겨찾기에 추가:
- JSON 코드 스니펫
{ "label": "Add To Favorites", "uiEffect": { "type": "addFavorite" }, "variableName": "addFavorites" } - YAML 코드 스니펫
label: Add To Favorites uiEffect: type: addFavorite variableName: addFavorites
- JSON 코드 스니펫
- 즐겨찾기 관리:
- JSON 코드 스니펫
{ "label": "Manage Favorites", "uiEffect": { "type": "manageFavorites", "target": "modal" }, "variableName": "manageFavorites" } - YAML 코드 스니펫
label: Manage Favorites uiEffect: type: manageFavorites target: slideout variableName: manageFavorites
- JSON 코드 스니펫
- 라인 익스포트 YAML 스니펫:
label: Export Lines uiEffect: type: exportLines variableName: exportLines