개방형 상태 관리
오픈 상태 모델은 구성 상태 모델 API의 프로그래밍 방식 프레임워크로, 에 판매 및 주문 관리표시되는 제품 구성기 제품 옵션의 변형을 프로그래밍할 수 있습니다. API 프레임워크는 사용자 인터페이스의 제품 구성기 노드 표시 방법을 제어하기 위한 특정 상태 및 도우미 API 메서드를 제공합니다.
개발자는 개방형 상태 관리에 대한 확장점을 사용하여 로드 시 또는 제품 선택이 변경될 때 발생하는 이벤트를 기반으로 모든 구성기 노드에서 보기 전용 또는 편집 가능 상태를 설정할 수 있습니다. 노드의 상태 변경과 함께 정보 메시지를 선택적으로 스크립팅할 수도 있습니다. 이러한 메시지는 제품 구성자 사용자 인터페이스에 상황에 맞게 표시됩니다. 모든 노드에서 상태를 읽고 설정하는 데 다양한 도우미 API 메서드를 사용할 수 있으므로 광범위한 JSON 스크립팅이 필요하지 않습니다.
주:
권리를 확인하여 이러한 기능에 액세스할 수 있는지 확인합니다.
구성 상태 관리 사용 사례
다음 표에서는 에 제품 구성기표시되는 제품 옵션을 제어할 수 있는 다양한 방법을 보여 줍니다.
| 제품 구성기 사용 사례 | 예제 |
|---|---|
| 고객에 대한 특정 옵션 숨기기 | 주 안전 규정으로 인해 캘리포니아에 거주하는 고객에게는 제품 속성 선택이 표시되지 않습니다. |
| 고객에 대한 특정 기본 옵션 설정 | 업그레이드의 경우 프리미엄 플랜이 있는 기존 고객에게는 얼티밋 플랜만 표시됩니다. |
| 다른 속성 옵션을 기반으로 특정 옵션만 선택할 수 있도록 허용 | 노트북과 같은 특정 제품의 경우 모든 크기의 13인치, 15인치 및 17인치를 표시하지만 터치스크린 기능만 필요한 경우 15인치 및 17인치 노트북만 표시합니다. |
| 제품에 대한 수량 설정 허용 | 일부 제품은 기본 수량 값이 다를 수 있습니다. 값이 해당 제품에 허용되는 최소 수량 및 최대 수량의 범위 내에 있는 한 에이전트가 수량을 구성할 수 있도록 허용합니다. |
| 특정 특성 선택만 허용 | 특정 제품 선택에는 특정 특성 값을 선택해야 합니다. 예를 들어, Ultimate Internet 요금제를 선택할 때 선택할 수 있는 연결 속도는 5G입니다. |
구성 상태 모델 API 프레임워크를 사용하여 의 옵션 제품 구성기 표시를 관리할 수 있습니다.
노드 상태
제품 구성기의 노드에는 제품 관계 그룹, 하위 제품 및 특성 옵션이 표시됩니다. 노드의 상태는 다음과 같습니다.
- 표시 - 예(노드 표시) 또는 아니요(노드를 숨김)
- 제품 구성기에서 에이전트에게 표시되거나 표시되지 않는 구성입니다. 에이전트가 선택한 다른 항목과 호환되지 않는 경우 옵션이 표시되지 않을 수 있습니다. 예를 들어, 특정 자동차 휠 크기의 경우 호환되지 않는 타이어 옵션이 표시되지 않습니다.
- 편집 가능 - 예(노드를 표시하고 선택 가능하게 설정) 또는 아니요(노드를 표시하지만 선택 불가능하게 설정)
- 제품 구성기에서 에이전트가 편집할 수 있거나 편집할 수 없는 구성입니다. 에이전트는 제품에 필요한 제약 조건을 유지하면서 제품의 특정 측면을 개인화할 수 있습니다. 예를 들어, 특정 자동차 모델의 경우 호환되는 외부 색상만 편집할 수 있습니다.
- 수량 - 표시(예/아니요), 편집 가능(예/아니오)
- 제품의 수량을 설정하고, 수량과 관련된 규칙을 적용하고, 적절한 노드에 수량과 관련된 정보 및 오류 메시지를 표시하는 구성입니다.
- 확인됨 - 예(노드 선택 표시) 또는 아니요(노드 선택을 보이지 않게 설정)
- 컨텍스트에 따라 선택하기 위한 구성 옵션을 보여주는 구성입니다.
- 값 - 표시(예/아니요), 편집 가능(예/아니요)
- 특성에 대한 값을 설정하고, 특성과 관련된 규칙을 적용하고, 적절한 노드와 관련된 정보 또는 오류 메시지를 표시하는 구성입니다.
주:
에이전트는 상태 변경에 대한 근거를 제공하기 위해 노드 수준에서 메시지를 설정하도록 선택할 수 있습니다.
이벤트
구성 상태 모델 API 프레임워크를 사용하여 노드 상태를 관리합니다. 구성 상태 모델의 이벤트 프레임워크에서 다음 두 이벤트를 사용하여 이러한 상태를 활성화합니다.
- 로드 시 - 각 노드의 상태(가시성, 편집 가능성)는 처음에 예(예)로 설정됩니다. 열린 상태는 로드 시 호출됩니다.
- On Change 변경 시 - 유저 인터페이스에서 제품 구성기 노드 값이 변경될 때마다 호출되는 함수입니다. 그러나 이 상태는 에서 수량 변경이 발생할 제품 구성기때 호출되지 않습니다. 이러한 상태는 로드 시, 선택 중 또는 인스턴스가 트랜잭션으로 다시 동기화되기 직전의 방법 중 하나로 프로그래밍 방식으로 설정할 수 있습니다
도우미 API 메서드
다음 도우미 API 메서드를 사용하여 모든 노드에서 상태를 읽고 설정할 수 있습니다.
- 상태 적용
- Getter 및 Setter 메서드를 사용하여 제품 관계 그룹, 제품 특성 및 제품 특성 옵션에 대해 표시 및 편집 가능한 상태를 설정하여 구성 모델의 상태를 읽고 변경합니다.
- Getter 메서드
- 모든 구성 노드의 상태와 함께 노드 경로를 가져옵니다.
- getAllNodes(): 노드 경로(코드 참조)와 모든 상태가 포함된 해당 상대 경로가 포함된 JSON을 반환합니다.
- getNode(nodePath): 지정된 노드 경로에 대한 노드의 javascript 객체가 있는 경우 반환합니다.
- getNodeDetails(nodePath: 지정된 노드 경로가 있는 경우 모든 상태를 반환합니다.
- Setter 메서드
-
- 제품 관계 그룹, 제품 특성 및 제품 특성 옵션에 대해 표시 및 편집 가능한 상태를 설정합니다.
- setVisible: 모든 수준에서 참/거짓
- setVisible(참/거짓)
- setEditable: 모든 수준에서 참/거짓
- setEditable(True)
- 구현 예:
var newHandler = configInstance.getNode(nodePath); newHandler.setVisible(true, “This is a sample message for setVisible”); newHandler.setEditable(false, “This is a sample message for setEditable”);
- 오퍼 수량 및 사양을 설정합니다. nodePath는 제품을 결정하고 값은 설정할 수량입니다.
- setQuantity(값);
- 구현 예:
var newHandler = configInstance.getNode(nodePath); newHandler.setQuantity(value, “This is a sample message for setQuantity”);
- 구성 옵션을 설정하여 선택된 항목을 확인합니다.
- setChecked (값); 예/아니오
- 구현 예:
var nodePath = “QUADPLAYHO1/OPTIONALPRODUCTS/CONNECTEDC2/CONNECTEDC1/VIN” var newHandler = configInstance.getNode(nodePath); var newHandler.setChecked(true, “This is a sample message for setChecked”)
- 입력 유형이 한 줄의 텍스트인 특성 노드의 값을 설정합니다.
- setValue (값);
- 구현 예:
var nodePath = “QUADPLAYHO1/OPTIONALPRODUCTS/CONNECTEDC2/CONNECTEDC1/VIN” var newHandler = configInstance.getNode(nodePath); newHandler.setValue(“9TKN332”, “This is a sample message for setValue”);
- 제품 관계 그룹, 제품 특성 및 제품 특성 옵션에 대해 표시 및 편집 가능한 상태를 설정합니다.
- getter 컨텍스트 변수 메서드
- 사용자 인터페이스 내에서 제품 구성기 컨텍스트 변수를 검색합니다.
- getHeaderContextVariables(): 모든 헤더 컨텍스트 변수의 목록을 반환합니다.
- getHeaderContextVariableValue(contextVariable): 헤더에 있는 특정 컨텍스트 변수의 값과 표시 값을 반환합니다.
- getLineContextVariables(): 모든 라인 컨텍스트 변수의 목록을 반환합니다.
- getLineContextVariableValue(nodePath, contextVariable): 라인의 특정 컨텍스트 변수 값을 반환합니다.