LeadtoCashCore - 범위 지정됨
LeadtoCashCore 스크립트 포함은 현금으로 연결 코어 수명주기에서 현금으로 연결 워크플로우를 오케스트레이션하는 메서드를 제공합니다.
인스턴스에서 LeadtoCashCore 스크립트 포함을 사용할 수 있으려면 현금으로 연결 코어(com.snc.l2c.core) 플러그인을 활성화해야 합니다. 이 플러그인은 의 (com.snc.l2c_core) 애플리케이션을 통해 현금으로 연결 코어 액세스할 수 있습니다.ServiceNow Store 이 스크립트 포함은 sn_l2c_core 네임스페이스에 속하며 관리자 역할이 필요합니다.
현금으로 연결 워크플로우에서는 소스 엔터티를 대상 엔터티에 매핑합니다. 엔터티는 테이블 컬렉션으로 정의됩니다. 소스-대상 매핑을 사용하면 소스 엔터티의 구조 또는 컨텐츠를 대상 엔터티에 필요한 구조 또는 컨텐츠에 맞게 변환할 수 있습니다. 이 스크립트 포함에서 제공하는 기능은 현금으로 연결 기능에서 사용할 수 있는 엔터티 매핑 기능을 나타냅니다. 자세한 내용은 Lead to Cash Core 문서를 참조하십시오.
LeadtoCash 스크립트 포함을 사용하여 워크플로우를 완료하려면 한 메서드에서 다음 메서드로 반환 매개변수를 전달합니다. 일반적으로 다음 순서로 이러한 메서드를 호출합니다.
- LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context) - 스크립트를 호출하는 데 사용되는 확장점을 검색하기 위한 유틸리티를 포함합니다. 모든 메서드 호출과 함께 제공되어야 합니다. 자세한 내용은 이 항목의 "필수 조건" 섹션을 참조하십시오.
- LeadtoCashCore - createInstance(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams) - 지정된 엔터티의 데이터를 가져옵니다. 예를 들어 라인 항목 및 관련 데이터를 포함한 고객 주문 관련 정보입니다.
이 매개변수를 context 사용하여 스크립트에서 하나 이상의 헤더 또는 라인 ID를 선언합니다("다중 선택"이라고 함). 정의된 매핑 없이 스크립트를 호출하도록 매개변수를 전달 context.entityConfigId 합니다. 이러한 다중 선택 사용 사례의 경우 출력 JSON에는 각 항목이 단일 엔터티를 나타내는 키 항목 배열이 포함됩니다.
- LeadtoCashCore - delta(객체 sourceJSON, 객체 dirtyJSON, 객체 additionalParams) - 두 JSON 입력을 비교하고 둘 사이에 발생한 변경을 식별합니다. 예를 들어 엔터티에서 항목이 추가, 삭제 또는 수정되는 경우입니다.
- LeadtoCashCore - effect(객체 sourceJSON, 객체 targetJSON, 객체 additionalParams) - 소스 JSON 오브젝트를 대상 오브젝트로 변환합니다.
- LeadtoCashCore - commitInstance(객체 targetJSON, 객체 additionalParams) - effect() 스크립트 포함에서 수행된 변환을 데이터베이스에 커미트합니다.
필수 구성요소
이러한 각 메서드는 확장점(sn_l2c_core)과 함께 번들로 제공됩니다. LeadToCashServiceEP입니다. PrimitiveUtil()은 확장점 서비스를 가져오는 메서드를 제공하고 사용 가능한 매개변수에 따라 스크립트 포함을 호출하는 유틸리티입니다. 먼저 소스 및 대상 정보를 가져올 테이블을 지정하는 getPrimitivesEPService() 메서드와 함께 PrimitiveUtil()을 제공해야 합니다. 자세한 내용은 LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context) 문서를 참조하십시오. 스크립트에 PrimitiveUtil() 및 getPrimitivesEPService() 가 제공되면 사용 사례에 필요한 대로 createInstance(), delta(), effect() 또는 commitInstance() 스크립트 포함 중 하나를 호출할 수 있습니다.
현금으로 연결 코어 워크플로우 스크립트 예시
사용 가능한 각 현금으로 연결 코어 스크립트 포함은 개별적으로 문서화되어 있지만 다음 예시를 참조하여 이러한 메서드를 함께 사용하여 현금으로 연결 워크플로우를 생성하는 방법을 알아볼 수 있습니다.
var util = new sn_l2c_core.PrimitiveUtil();
// Set the context.isMultiSelect parameter as true to enable multi-select use cases
// Set the context.entityConfigId parameter to the config id of the source entity (sold prodcut) to trigger createInstance with only configId
var context = {"isMultiSelect": false, "entityConfigId": “sn_l2c_cust_flows_sold_product”};
//Flow: Creation of an order from a sold product
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order', context);
//CREATE INSTANCE to get the data of sold product with sys_id '06670ba3c3adbd501caee74bb0013166'
var SPInstance = service.createInstance(null, '06670ba3c3adbd501caee74bb0013166');
gs.info("SPInstance: "+JSON.stringify(SPInstance));
// DELTA
// construct the dirtyJSON as required
var deltaOutput = service.delta(SPInstance, dirtyJSON);/
gs.info("deltaOutput: "+JSON.stringify(deltaOutput));
// EFFECT
var effectOutput = service.effect(deltaOutput);
gs.info("effectOutput: " + JSON.stringify(effectOutput));
// COMMIT INSTANCE
var commitOutput = service.commitInstance(effectOutput);
gs.info("commitOutput: " + JSON.stringify(commitOutput));
- 첫 번째 호출은 createInstance() 메서드를 사용하여 기존의 판매된 제품 정보를 가져옵니다.
- 그런 다음 델타 JSON을 반환하는 delta() 메서드를 사용하여 이 소스 JSON을 더티 JSON과 비교합니다.
- 그런 다음 JSON delta() 은 effect() 메서드를 사용하여 순서 유형의 JSON으로 변환됩니다.
- 주문 JSON은 commitInstance() 메서드를 사용하여 데이터베이스에 커밋됩니다.
LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context)
PrimitiveUtil() 유틸리티 메서드를 트리거합니다.
LeadtoCashCore 스크립트 포함에서 사용 가능한 메서드를 사용하려면 먼저 getPrimitivesEPService() 유틸리티 메서드를 사용하여 스크립트에서 스크립팅된 확장점 PrimitiveUtil()을 항상 호출하여 구현을 트리거해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 컨텍스트 | 객체 | 옵션입니다. 속성 값을 표시하고 한 번에 둘 이상의 인스턴스를 호출하기 위한 추가 매개변수 옵션입니다. |
| context.entityConfigId | 문자열 | 옵션입니다. 엔터티의 구성 ID입니다. 및 sourceToTargetConfigID 둘 다 entityConfigId 제공되면 에 우선순위가 부여됩니다.entityConfigId 테이블: 현금 엔터티로 연결 [sn_l2c_core_entity] 데이터 유형: 문자열 |
| context.isMultiSelect | 부울 | 옵션입니다. 인스턴스를 생성하기 위해 여러 엔터티를 입력으로 전달할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| context.loadDisplayValue | 부울 | 옵션입니다. 각 속성에 대한 표시 값을 로드할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| sourceToTargetConfigID | 문자열 | 소스-대상 매핑을 위한 매핑 구성 ID입니다. 테이블: 현금으로 연결 엔터티 매핑 [sn_l2c_core_entity_mapping] |
| 유형 | 설명 |
|---|---|
| 없음 |
다음 예제에서는 PrimitiveUtil() 을 호출하고 현금으로 연결 엔터티 매핑 [sn_l2c_core_entity_mapping] 테이블의 매핑 구성 ID인 sn_l2c_cust_flows_sp_to_order를 기반으로 구현을 선택합니다.
//Utility to invoke createInstance API
var util = new sn_l2c_core.PrimitiveUtil();
var context = {"isMultiSelect": true}; // Set the context.isMultiSelect parameter as true to enable multi-select use cases.
//Invokes the extension point and specifies an implementation based on sourceToTargetConfigID of a L2C flow.
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order’, context)
다음 예제에서는 PrimitiveUtil() 을 호출하고 현금으로 연결 엔터티[sn_l2c_core_entity] 테이블의 configId l2c_order를 기반으로 구현을 선택합니다.
//Utility to invoke createInstance API
var util = new sn_l2c_core.PrimitiveUtil();
var context = {"isMultiSelect": true, “entityConfigId”: “l2c_order”};
// Set the context.isMultiSelect parameter as true to enable multi-select use cases.
// Set the context.entityConfigId parameter if createInstance needs to be invoked with only configId.
//Invokes the extension point and uses default implementation based on entityConfigId of a L2C flow.
var service = util.getPrimitivesEPService('’, context);
LeadtoCashCore - createInstance(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams)
헤더, 라인, 하위 라인, 특성 및 해당 속성과 같은 다양한 상세 정보가 포함된 JSON 객체로 하나 이상의 지정된 엔터티의 데이터를 반환합니다.
delta(), effect() 및 commitInstance()와 같은 현금으로 연결 코어 워크플로우의 후속 메서드에서 createInstance() 메서드의 출력 JSON을 사용합니다.
요구 사항
LeadtoCashCore 스크립트 포함을 사용하려면 스크립트에서 createInstance()를 호출하기 전에 먼저 유틸리티 메서드와 함께 LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context) 스크립트 유틸리티 메서드 PrimitiveUtil()을 호출하여 구현을 트리거해야 합니다. 각 플로우마다 서비스를 한 번만 가져오고 모든 LeadtoCashCore 메서드에 대해 동일한 서비스를 사용합니다.
고려 사항
-
createInstance()가 한 번에 여러 개의 쉼표로 구분된 headerID 또는 lineID를 전달할 수 있도록 하려면 getPrimitivesEPService() 부울 매개변수 context.isMultiSelect 를 true로 설정합니다. 그렇지 않으면 한 번에 하나의 ID만 전달할 수 있습니다. 여러 lineID가 있는 단일 headerID 사용 사례는 예로 설정 context.isMultiSelect 하지 않고 지원됩니다.
-
엔터티의 구성 ID만으로 createInstance() 를 호출할 수 있도록 하려면 getPrimitivesEPService() 문자열 매개변수를 context.entityConfigId설정합니다. entityConfigId와 sourceToTargetConfigID가 모두 전달되면 createInstance()를 실행하기 위해 entityConfigId의 우선순위가 지정됩니다.
이 기능에 대한 자세한 내용은 다음 문서를 참조하십시오 LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context).
createInstance()는선택적 데이터 검색 및 여러 루트 엔터티 정의를 지원하므로 개발자는 및 multiSelectMerge와 같은 fetchRecordSysIds 추가 매개변수를 사용하여 램프 및 헤더 없는 시나리오를 명시적으로 가져올 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| additionalParams | 객체 | 옵션입니다. 사용할 추가 매개변수입니다. |
| additionalParams.skipLines | 부울 | 옵션입니다. 지정된 엔터티에 대한 라인 항목을 가져올지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| fetchRecordSysIds | 객체 배열 | 테이블 이름을 sys_ids에 명시적으로 매핑하여 헤더 기반 시나리오와 헤더 없는 시나리오 모두에 대해 데이터를 선택적으로 가져올 수 있습니다. 동작:
구조: |
| 다중 선택 병합 | 부울 | 헤더가 없는 시나리오에만 해당됩니다. 동일한 컨텍스트 유형의 데이터를 단일 플랫 구조로 병합할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| additionalParams.allowedContextTypes | 문자열 배열 | 옵션입니다. 다른 모든 관련 없는 섹션을 제외하고 allowedContextTypes에 나열된 유형으로만 채우기 및 처리를 통제합니다. 유효한 값은 다음과 같습니다.
구조: |
| 헤더 시스템 ID | 문자열 | 데이터를 검색할 엔터티의 헤더 sys_id입니다. 매개 변수를 제공하지 lineSysIDs 않는 경우 필요합니다. 헤더 sys_ids 전달하지 않는 경우 null 을 전달합니다.스크립트에서 하나 이상의 헤더 sys_ids 지정하려면 getPrimitivesEPService() 유틸리티 메서드에서 주: 하나 headerSysID 이상의 OR lineSysIDs 매개변수가 필요합니다. |
| isTarget | 부울 | 옵션입니다. 대상 엔터티 데이터를 가져올지 여부를 결정하는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| 라인 시스템 ID | 문자열 | 엔터티 데이터를 검색할 엔터티의 라인 항목 sys_id입니다. 제공 headerSysIDs 하지 않고 엔터티 구조가 판매된 제품과 같은 라인 항목으로 시작하는 경우 필수입니다. 스크립트에서 하나 이상의 라인 항목 sys_ids 지정하려면 getPrimitivesEPService() 유틸리티 메서드에서 주: 하나 headerSysID 이상의 OR lineSysIDs 매개변수가 필요합니다. 여러 lineSysIDs전달 시 모든 기록은 동일한 headerSysID에 속해야 합니다. |
| 유형 | 설명 |
|---|---|
| JSON 객체 | 엔터티 기록의 상세 정보를 포함하는 JSON입니다. 데이터 유형: 객체 배열 |
| _state | 엔터티의 활동 상태입니다. 가능한 값:
기본값: 활성 데이터 유형: 문자열 |
| 특징 | 엔터티 특성 목록입니다. 특성은 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 배열 |
| 특성.속성 | 특성 기록과 연결된 속성에 대한 정보를 포함하는 하나 이상의 객체입니다. <속성 유형>은 특성과 연관된 기록/기능에 따라 다른 값이 될 수 있습니다. 예를 들어 이 객체에는 속성 기록의 sys_id, 연결된 특성 기록, 특성 옵션 기록 또는 판매된 제품 정보에 대한 참조가 포함될 수 있습니다. 데이터 유형: 객체 |
| 특성.속성.<attribute_type> | 항목 속성의 키 이름에 대한 정보입니다.데이터 유형: 객체 |
| 특성.속성.<attribute_type>.값 | 일반적으로 연결 속성 기록의 sys_id이지만 연결된 속성 유형을 설명하는 의미 있는 텍스트 문자열일 수 있습니다. 데이터 유형: 문자열 |
| characteristics.sys_id | 연결된 특성 기록의 sys_id을 포함하는 객체입니다. 데이터 유형: 객체 |
| characteristics.sys_id.value | 연결된 특성 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| characteristics.table | 현금으로 연결 엔터티의 특성 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| 항목 | 예로 설정된 경우 context.isMultiSelect 선택한 객체의 배열을 포함합니다. 데이터 유형: 객체 배열 |
| 항목.속성 | 항목 기록의 속성입니다. 속성은 엔터티마다 다를 수 있습니다.데이터 유형: 객체 |
| 항목.속성.계정 | 항목 속성과 연결된 계정에 대한 정보입니다. |
| 항목.속성.계정.값 | 항목의 속성입니다. 속성은 엔터티마다 다를 수 있습니다.데이터 유형: 객체 |
| 항목.속성.<key_name> | 항목 속성의 키 이름에 대한 정보입니다.데이터 유형: 객체 |
| 항목.속성.<key_name>.값 | 키 이름 속성의 값입니다. 데이터 유형: 문자열 |
| items.sys_id | 엔터티 항목에 대한 sys_id 정보를 포함하는 객체입니다. 값은 엔터티마다 다릅니다. 데이터 유형: 객체 |
| items.sys_id.value | 연결된 항목의 Sys_id입니다. 데이터 유형: 문자열 |
| 항목.테이블 | 현금으로 연결 엔터티와 연결된 라인 항목 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| items.lineItems | 엔터티 기록의 라인 항목 상세 정보를 포함하는 JSON 객체입니다. 데이터 유형: 객체 배열 |
| items.lineItems._state | 라인 항목 엔터티의 활동 상태입니다. 가능한 값:
기본값: 활성 데이터 유형: 문자열 |
| items.lineItems.attributes | 라인 항목 기록의 속성입니다. 속성은 엔터티마다 다를 수 있습니다.데이터 유형: 객체 |
| items.lineItems.attributes.<key_name> | 라인 항목 속성의 키 이름에 대한 정보입니다.데이터 유형: 객체 |
| items.lineItems.attributes.<key_name>.value | 키 이름 속성의 값입니다. 데이터 유형: 문자열 |
| items.lineItems.attributes.account | 라인 항목 속성과 연결된 계정에 대한 정보입니다. |
| items.lineItems.attributes.account.value | 라인 항목 속성과 연결된 계정의 Sys_id입니다. 데이터 유형: 문자열 |
| 항목.라인항목.특성 | 라인 항목과 연결된 특성 목록입니다. 특성은 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 배열 |
| items.lineItems.특성.속성 | 특성 기록과 연결된 속성에 대한 정보를 포함하는 하나 이상의 객체입니다. <속성 유형>은 특성과 연관된 기록/기능에 따라 다른 값이 될 수 있습니다. 예를 들어 이 객체에는 속성 기록의 sys_id, 연결된 특성 기록, 특성 옵션 기록 또는 판매된 제품 정보에 대한 참조가 포함될 수 있습니다. 데이터 유형: 객체 |
| items.lineItems.특성.attributes.<attribute_type>.value | 일반적으로 연결 속성 기록의 sys_id이지만 연결된 속성 유형을 설명하는 의미 있는 텍스트 문자열일 수 있습니다. 데이터 유형: 문자열 |
| items.lineItems.characteristics.sys_id | 연결된 특성 기록의 sys_id을 포함하는 객체입니다. 데이터 유형: 객체 |
| items.lineItems.characteristics.sys_id.value | 연결된 특성 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| items.lineItems.characteristics.table | 현금으로 연결 엔터티의 특성 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| items.lineItems.lineItems | 상위 라인 항목의 하위 라인 항목입니다. 이 객체의 형식은 매개변수와 동일합니다 lineItems . 데이터 유형: 객체 |
| items.lineItems.sys_id | 연결된 라인 항목 기록에 대한 sys_id 정보를 포함하는 객체입니다. 데이터 유형: 객체 |
| items.lineItems.sys_id.value | 연결된 라인 항목 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| items.lineItems.table | 현금으로 연결 엔터티와 연결된 라인 항목 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
아래의 예시 스크립트는 createInstance() 메서드를 호출하여 판매된 제품, 전체 계층 구조 및 특성의 데이터를 로드합니다.
//Utility to invoke createInstance API
var util = new sn_l2c_core.PrimitiveUtil();
//Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID in "sn_l2c_core_entity_mapping" table.
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');
//Invoke createInstance API with required params
var SPInstance = service.createInstance(null, '4e03cda2ec873110f87727ef5883a2cf');
//Print the returned JSON
gs.info("SPInstance: "+JSON.stringify(SPInstance));
//The returned JSON can be used for subsequent methods of the flow such as delta(), effect() and commitInstance()
출력:
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "4e03cda2ec873110f87727ef5883a2cf"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "9e0301e2ec873110f87727ef5883a23a"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"_state": "active",
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
],
"characteristics": []
}
],
"characteristics": [
{
"table": "sn_prd_pm_product_characteristics",
"sys_id": {
"value": "8d669b6665ebf110f877d71ec56bf75c"
},
"attributes": {
"sys_id": {
"value": "8d669b6665ebf110f87d71ec56bf75c"
},
"_state": "active",
"characteristic_value": {
"value": ""
},
"characteristic": {
"value": "4f31999fd0a63110f8770dbf976be178"
},
"characteristic_option": {
"value": "4f31999fd0a63110f8770dbf976be179"
},
"sold_product": {
"value": "4e03cda2ec873110f87727ef5883a2cf"
}
}
}
]
}
]
}
다중 선택
다음 스크립트는 createInstance() 메서드를 호출하고 판매된 두 제품의 데이터를 전체 계층 구조 및 특성과 함께 로드하는 데 사용하는 isMultiSelect 방법을 보여줍니다.
//Utility to invoke createInstance API
var util = new sn_l2c_core.PrimitiveUtil();
//Set context variable isMultiSelect true to enable multi-select
var context = {"isMultiSelect": true};
//Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID in “sn_l2c_core_entity_mapping” table.
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order’, context);
//Multiple sold products selected
var selectedLineitems = '4e03cda2ec873110f87727ef5883a2cf,036a2349284d0210f877b68370fb2e93';
//Invoke createInstance API with required params
var SPInstance = service.createInstance(null, selectedLineitems);
//Print the returned JSON
gs.info("SPInstance: "+JSON.stringify(SPInstance));
//The returned JSON can be used for subsequent APIs of the flow such as Delta, Effect and Commit Instance
응답:
{
"items": [
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "4e03cda2ec873110f87727ef5883a2cf"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "9e0301e2ec873110f87727ef5883a23a"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [],
"characteristics": []
}
]
}
]
},
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "036a2349284d0210f877b68370fb2e93"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "4b6a2349284d0210f877b68370fb2e9c"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [],
"characteristics": []
}
],
"characteristics": [],
"_state": "active"
}
]
}
]
}
entityConfigId를 사용하여 createInstance() 호출
아래의 예시 스크립트는 createInstance() 메서드를 호출하여 주문, 전체 계층 구조 및 특성의 데이터를 로드합니다. 이 예는 SP에서 주문으로의 플로우에서 판매된 제품에 첨부된 판매 계약 데이터를 가져오려는 것을 보여줍니다.
// Utility to invoke createInstance API
var util = new sn_l2c_core.PrimitiveUtil();
var quoteToSA = "sn_l2c_quote_to_sales_agreement_pricing";
var context = {
"entityConfigId": "sn_l2c_sales_agreement"
};
var spToOrder = "sn_l2c_cust_flows_sp_to_order";
var service = util.getPrimitivesEPService(spToOrder, context);
var createInstanceOutput = service.createInstance("c8e1e678432242105eba72eb3ab8f261");
gs.info("Sales Agreement JSON " + JSON.stringify(createInstanceOutput));
// The returned JSON can be used for subsequent methods of the flow such as delta(), effect() and commitInstance()
출력:
{
"table": "sn_sales_agmt_core_sales_agreement",
"sys_id": {
"value": "c8e1e678432242105eba72eb3ab8f261"
},
"attributes": {
"account": {
"value": "051f62b0d7300200e5982cf65e610333"
},
"short_description": {
"value": "1 year sales agreement for Spark Technologies"
}
},
"lineItems": [
{
"table": "sn_sales_agmt_core_sales_agreement_line",
"sys_id": {
"value": "4104369034641210f877af77d9dd31bb"
},
"attributes": {
"sales_agreement": {
"value": "c8e1e678432242105eba72eb3ab8f261"
},
"short_description": {
"value": "Home Automation Bundle"
}
},
"lineItems": [
{
"table": "sn_sales_agmt_core_sales_agreement_line",
"sys_id": {
"value": "45e6fa4a436a02105eba72eb3ab8f247"
},
"attributes": {
"sales_agreement": {
"value": "c8e1e678432242105eba72eb3ab8f261"
},
"short_description": {
"value": "Outdoor Camera"
}
},
"lineItems": [],
"characteristics": [],
"pricingAdjustments": []
},
{
"table": "sn_sales_agmt_core_sales_agreement_line",
"sys_id": {
"value": "73e6fa4a436a02105eba72eb3ab8f25a"
},
"attributes": {
"sales_agreement": {
"value": "c8e1e678432242105eba72eb3ab8f261"
},
"short_description": {
"value": "Indoor Camera"
}
},
"lineItems": [],
"characteristics": [],
"pricingAdjustments": []
}
],
"characteristics": [],
"pricingAdjustments": []
}
]
}
allowedContextType을 사용한 관련 당사자의 부분 동기화
다음 createInstance() 스크립트 allowedContextTypes 는 헤더 및 headerRelatedParty 를 사용하여 테이블에서 채워진 두 섹션만 출력sn_l2c_quote_to_opportunity합니다.
var util1 = new sn_l2c_core.PrimitiveUtil();
var service1 = util1.getPrimitivesEPService('sn_l2c_quote_to_opportunity'); // WITH HEADER FLOW
var quoteId = '04ba9004f11f3110f8777d7194f166f6';
var additionalParams1 = {
allowedContextTypes: ["header", "headerRelatedParty"]
};
var quoteInstance = service1.createInstance(quoteId, null, false, additionalParams1);
gs.info(JSON.stringify(quoteInstance));
출력. 출력에는 에 정의된 allowedContextTypes채워진 두 섹션만 포함됩니다. 다른 모든 컨텍스트 유형(라인, childLines, 특성 등)은 비어 있거나 생략되어 부분 동기화가 허용됩니다.
{
"table": "sn_quote_mgmt_core_quote",
"sys_id": {
"value": "04ba9004f11f3110f8777d7194f166f6"
},
"attributes": {
"renewal_adjustment_value": { "value": "" },
"contract_start_date": { "value": "2024-01-01" },
"total_net_new_amount": { "value": "USD;0" },
"agreement_start_date": { "value": "" },
"total_one_time_price": { "value": "USD;214" },
"consumer": { "value": "" },
"billing_location": { "value": "" },
"document_template": { "value": "" },
"pricelist": { "value": "19d29513d0e63110f8770dbf976be122" },
"assignment_group": { "value": "a4b31c0cf1db3110f8777d7194f166e9" },
"partner_contact": { "value": "" },
"auto_generated_for_renewal": { "value": "false" },
"contract_end_date": { "value": "2025-12-31" },
"active": { "value": "true" },
"billing_state": { "value": "" },
"external_system": { "value": "" },
"renewal_adjustment_type": { "value": "" },
"source_opportunity": { "value": "" },
"total_annual_recurring_price_v2": { "value": "USD;1596" },
"internal_signer": { "value": "" },
"costbook": { "value": "a3042cdce405c210f8773750028d6f72" },
"payment_terms": { "value": "" },
"shipping_location": { "value": "" },
"seller_organization": { "value": "" },
"contact": { "value": "4d147a386f0331003b3c498f5d3ee437" },
"external_id": { "value": "" },
"transaction_date": { "value": "2023-12-18 23:37:11" },
"version": { "value": "1" },
"billing_zip": { "value": "" },
"previous_quote": { "value": "" },
"assigned_to": { "value": "b9b19484f1db3110f8777d7194f166d1" },
"total_monthly_recurring_price_v2": { "value": "USD;133" },
"agreement_end_date": { "value": "" },
"contract_type": { "value": "" },
"renewal_adjustment_basis": { "value": "" },
"header_api": { "value": "" },
"channel": { "value": "agent_assist" },
"existing_contract": { "value": "" },
"state": { "value": "draft" },
"header_id": { "value": "04ba9004f11f3110f8777d7194f166f6" },
"account": { "value": "86837a386f0331003b3c498f5d3ee4ca" },
"quote_type": { "value": "add" },
"billing_street": { "value": "" },
"same_as_shipping_address": { "value": "false" },
"work_notes": { "value": "" },
"comments": { "value": "" },
"short_description": {
"value": "B2B - Quadplay Home Tech Hub Bundle"
},
"partner": { "value": "" },
"sales_agreement": { "value": "" },
"total_renewal_amount": { "value": "USD;0" },
"sa_quote": { "value": "false" },
"external_signer": { "value": "" },
"shipping_city": { "value": "" },
"discount_percentage": { "value": "" },
"expiration_date": { "value": "" },
"billing_city": { "value": "" },
"currency": { "value": "USD" },
"shipping_country": { "value": "" },
"billing_country": { "value": "" },
"record_number": { "value": "QT0000001" },
"shipping_state": { "value": "" },
"initial_quote": {
"value": "04ba9004f11f3110f8777d7194f166f6"
},
"shipping_street": { "value": "" },
"shipping_zip": { "value": "" },
"total_amount": { "value": "USD;1897.2689" },
"term_month": { "value": "24" },
"total_upsell_downsell_amount": { "value": "USD;0" },
"auto_renew": { "value": "false" }
},
"ramp": [],
"lineItems": [],
"headerRelatedParty": [
{
"table": "sn_quote_mgmt_core_quote_related_party",
"sys_id": {
"value": "a822ac20740f3690f877229405634411"
},
"attributes": {
"type": {
"value": "e12455b553716210c6caddeeff7b12d3"
},
"seller_organization": { "value": "" },
"active": { "value": "true" },
"responsibility": {
"value": "c7ccc21b65ed1910f87764df53db7725"
},
"order": { "value": "20" }
}
}
]
}
다중 선택 병합
다음 예제에서는 램프된 판매된 제품(단일 램프가 있는 여러 판매된 제품)을 가져오고 모든 램프를 병합하고 모든 엔터티를 플랫 구조로 병합합니다.
/******** Sold Product to Order - MultiSelectMerge for Ramped SPs ********/
var util = new sn_l2c_core.PrimitiveUtil();
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');
var spIDs = 'aedfb2a6e9de4210f8774eb53302a639,28490592cc253210f87793fd12b09a97';
var additionalParams = {
"multiSelectMerge": true,
"fetchRecordSysIds": [{
"sn_install_base_sold_product_ramp": "5b8c9d9ac429b210f87756e9cf81cc6b"
}]
};
var SPInstance = service.createInstance(null, spIDs, false, additionalParams);
gs.info("SPInstance: " + JSON.stringify(SPInstance));
{
"ramp": [{"sys_id": {...}}],
"lineItems": [{"sys_id": {...}}, {"sys_id": {...}}]
}LeadtoCashCore - delta(객체 sourceJSON, 객체 dirtyJSON, 객체 additionalParams)
리드에서 현금 엔터티의 소스 JSON 객체와 수정된 소스 JSON 객체를 비교하고 추가, 삭제 또는 수정과 같은 소스 JSON의 변경 사항을 설명하는 JSON 객체를 반환합니다.
엔터티의 구성 ID만으로 delta() 를 호출할 수 있도록 하려면 getPrimitivesEPService() 문자열 매개변수를 context.entityConfigId설정합니다. 와 둘 다 entityConfigId 전달 entityConfigId 되면 delta()를 실행하는 데 우선순위가 지정됩니다.sourceToTargetConfigID
| 이름 | 유형 | 설명 |
|---|---|---|
| 소스 JSON | 객체 | 소스 리드 현금 엔터티의 JSON 객체입니다. 주: 이 메서드를 LeadtoCashCore - createInstance(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams) 사용하여 엔터티의 소스 JSON을 검색합니다. |
| 더티 JSON | 객체 | 현금으로 연결 엔터티의 수정된 소스 JSON입니다. |
| additionalParams | 객체 | 옵션입니다. 사용할 추가 매개변수입니다. |
| additionalParams.delta_ignore_attributes | 객체 | 소스와 dirtyJSON을 비교하는 동안 무시할 테이블 속성입니다. 재구성 사용 사례를 지원합니다. |
| additionalParams.delta_ignore_attributes.<table_name> | 문자열 | 무시할 테이블 및 관련 속성의 이름입니다. 예: |
| additionalParams.loadDisplayValue | 부울 | 옵션입니다. 각 속성에 대한 표시 값을 로드할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| 유형 | 설명 |
|---|---|
| JSON 객체 | sourceJSON과 dirtyJSON 사이에 발생한 변경 내용이 포함된 엔터티 기록의 상세 정보를 포함하는 객체입니다. 데이터 유형: 객체 |
| 라인 항목 | 엔터티 기록의 라인 항목 상세 정보를 포함하는 JSON 객체입니다. 예를 들어 주문 라인 항목 또는 견적 라인 항목입니다. 데이터 유형: 객체 배열 |
| lineItems._action | 소스 JSON의 라인 항목에 적용되는 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| lineItems.attributes | 라인 항목의 속성입니다. 예를 들어 속성의 이름과 값입니다. 엔터티에 따라 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| lineitems.attributes.<attribute_name> | 라인 항목 속성의 이름입니다. 예: 계정 또는 접촉 창구의 이름입니다. 엔터티의 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| lineitems.attributes.<attribute_name>.value | 라인 항목 속성의 값입니다. 데이터 유형: 문자열 |
| lineItems.attributes.account | 항목 속성과 연결된 계정에 대한 정보입니다. 데이터 유형: 객체 |
| lineItems.attributes.account.value | 라인 항목 속성과 연결된 계정의 Sys_id입니다. 데이터 유형: 문자열 |
| lineItems.특성 | 라인 항목의 특성입니다. 엔터티에 따라 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 배열 |
| 라인 항목.특성.속성 | 헤더 기록 특성의 속성입니다. 예를 들어 속성의 이름과 값입니다. 엔터티에 따라 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| 품목.특성.속성.<field_name> | 라인 항목과 연결된 특성 기록의 속성 이름입니다. 데이터 유형: 객체 |
| 라인 항목.특성.속성.<field_name>.값 | 엔터티의 특성 기록에 속하는 속성의 값입니다. 데이터 유형: 문자열 |
| lineItems.characteristics.sys_id | 특성 기록의 Sys_id 객체입니다. 데이터 유형: 객체 |
| lineItems.characteristics.sys_id.value | 연결된 특성 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| lineItems.characteristics.table | 특성 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| lineItems.lineItems | 상위 라인 항목의 하위 라인 항목입니다. 이 객체의 형식은 매개변수와 동일합니다 lineItems . 데이터 유형: 객체 배열 |
| lineItems.sys_id | 연결된 항목 기록의 Sys_id입니다. 데이터 유형: 객체 |
| lineItems.sys_id.값 | 연결된 항목 기록의 Sys_id입니다. 업데이트된 테이블은 주문 또는 사양과 같은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| lineItems.table | 현금으로 연결 엔터티와 연결된 항목 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
다음 예제에서는 먼저 PrimitiveUtil 유틸리티 메서드 및 getPrimitiesEPService()를 호출한 다음 원본 및 대상 JSON 개체를 제공하여 delta() 메서드를 호출하는 방법을 보여 줍니다.
//Utility to invoke Delta API
var util = new sn_l2c_core.PrimitiveUtil();
//Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID in “sn_l2c_core_entity_mapping” table.
var service = util.getPrimitivesEPService('sp_order_macd');
//Invoke delta API with required params
// sourceJSON can be the output of createInstance or null
//dirtyJSON is the modified sourceJSON
var deltaOutput= service.delta(sourceJSON, dirtyJSON);
//Print the returned JSON
gs.info(" deltaOutput: "+JSON.stringify(deltaOutput));
//The returned JSON can be used for subsequent APIs of the flow such as Effect and Commit Instance
출력 JSON은 판매된 기본 제품에 여러 라인 항목이 추가되었음을 보여줍니다.
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "-1"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "-1"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "-1"
},
"attributes": {
"name": {
"value": "Solana Sports streaming channel"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [],
"characteristics": [],
"_action": "add"
}
],
"characteristics": [],
"_action": "add"
}
],
"characteristics": [
{
"table": "sn_prd_pm_product_characteristics",
"sys_id": {
"value": "-1"
},
"attributes": {
"characteristic_value": {
"value": ""
},
"characteristic": {
"value": "4f31999fd0a63110f8770dbf976be178"
},
"characteristic_option": {
"value": "4f31999fd0a63110f8770dbf976be179"
},
"sold_product": {
"value": "4e03cda2ec873110f87727ef5883a2cf"
},
"action": {
"value": "add"
}
},
"_action": "add"
}
],
"_action": "add"
}
]
}
다중 선택
다음 예제에서는 먼저 PrimitiveUtil 및 getPrimitivesEPService를 호출한 다음 여러 줄 또는 헤더 ID에 대한 원본 및 대상 JSON 개체를 제공하여 다중 선택 delta() 메서드를 형성하는 방법을 보여 줍니다. 각 플로우마다 서비스를 한 번만 가져오고 모든 LeadtoCashCore 메서드에 대해 동일한 서비스를 사용합니다.
/Utility to invoke Delta API
var util = new sn_l2c_core.PrimitiveUtil();
//Set context variable isMultiSelect true to enable multi-select
var context = {"isMultiSelect": true};
//Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID in “sn_l2c_core_entity_mapping” table.
var service = util.getPrimitivesEPService(‘sn_l2c_cust_flows_sp_to_order’, context);
//Invoke delta API with required params
// sourceJSON can be the output of createInstance for multiple lineIDs or headerIDs or null
//dirtyJSON is the modified sourceJSON
var deltaOutput= service.delta(sourceJSON, dirtyJSON);
//Print the returned JSON
gs.info(" deltaOutput: "+JSON.stringify(deltaOutput));
//The returned JSON can be used for subsequent APIs of the flow such as Effect and Commit Instance
출력 JSON은 판매된 기본 제품에 여러 라인 항목이 추가되었음을 보여줍니다.
{
"items": [
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "4e03cda2ec873110f87727ef5883a2cf"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "9e0301e2ec873110f87727ef5883a23a"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [],
"characteristics": [],
"_action": "disconnect"
}
],
"characteristics": [],
"_action": "disconnect"
}
]
},
{
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "036a2349284d0210f877b68370fb2e93"
},
"attributes": {
"name": {
"value": "Quadplay Home Tech Hub Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [
{
"table": "sn_install_base_sold_product",
"sys_id": {
"value": "4b6a2349284d0210f877b68370fb2e9c"
},
"attributes": {
"name": {
"value": "Internet and OTT Bundle"
},
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
}
},
"lineItems": [],
"characteristics": [],
"_action": "disconnect"
}
],
"characteristics": [],
"_action": "disconnect"
}
]
}
]
}
LeadtoCashCore - effect(객체 sourceJSON, 객체 targetJSON, 객체 additionalParams)
지정된 엔터티의 소스 JSON 구조를 변환하고 다른 엔터티의 대상 JSON에 적용합니다. 그런 다음 commitInstance() 메서드를 사용하여 변경된 엔터티를 데이터베이스에 커밋할 수 있습니다.
effect() 요청에서 delta() 메서드의 출력 JSON을 사용할 수 있습니다. 그런 다음 commitInstance()를 사용하여 데이터베이스에 effect() JSON 출력을 커밋하여 현금으로 연결 워크플로우를 완료합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 소스 JSON | 객체 | 소스 엔터티의 상세 정보를 포함하는 JSON입니다. 주: |
| targetJSON | 객체 | 대상 엔터티의 세부 정보를 포함하는 JSON입니다. |
| additionalParams | 객체 | 옵션입니다. 사용할 추가 매개변수입니다. |
| additionalParams.is_future_state | 부울 | 옵션입니다. 이를 사용하여 재구성 사용 사례를 지원합니다. 허용되는 값:
기본값: false |
| 유형 | 설명 |
|---|---|
| JSON 객체 | 발생하여 소스에서 대상 엔터티로 적용된 변경 현금으로 연결 엔터티의 각 헤더에 있는 JSON 객체입니다. 데이터 유형: 객체 |
| _glide_action | 소스와 대상 JSON 간의 항목 수준에서 발생한 변경 내용을 나타냅니다. 가능한 값(대/소문자 구분):
데이터 유형: 문자열 |
| _records_count | 각 테이블에 대해 삽입된 새 기록의 상세 정보입니다. 데이터 유형: 객체 |
| _records_count.tableName | 새 기록이 삽입되는 테이블의 이름입니다. 데이터 유형: 객체 |
| _records_count.tableName.insert | 테이블에 삽입된 새 기록 수입니다. 데이터 유형: 숫자 |
| _source_object | 변경 내용이 적용된 소스 JSON 객체입니다. 객체 구조는 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 |
| _source_object.sys_id | 업데이트된 소스 엔터티 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| _source_object.table | 업데이트된 소스 엔터티 기록의 테이블 위치입니다. 이 값은 엔터티마다 다를 수 있습니다. 데이터 유형: 문자열 |
| lineItems._glide_action | 라인 항목에서 발생한 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| lineItems._source_object | _glide_action이 적용된 소스 엔터티 기록 상세 정보입니다. 이 객체는 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 |
| lineItems._source_object.sys_id | 업데이트된 소스 엔터티 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| lineItems._source_object.table | 업데이트된 소스 엔터티 기록의 테이블 위치입니다. 이 값은 엔터티마다 다를 수 있습니다. 데이터 유형: 문자열 |
| lineItems._state | 엔터티의 상태입니다. 데이터 유형: 객체 |
| lineItems._state.value | 엔터티의 현재 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| lineItems.attributes | 라인 항목의 속성입니다. 예를 들어 속성의 이름과 값입니다. 엔터티에 따라 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| lineitems.attributes.<attribute_name> | 라인 항목 속성의 이름입니다. 예: 계정 또는 접촉 창구의 이름입니다. 엔터티의 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| lineitems.attributes.<attribute_name>.value | 라인 항목 속성의 값입니다. 데이터 유형: 문자열 |
| lineItems.attributes.account | 항목 속성과 연결된 계정에 대한 정보입니다. 데이터 유형: 객체 |
| lineItems.attributes.account.value | 라인 항목 속성과 연결된 계정의 Sys_id입니다. 데이터 유형: 문자열 |
| lineItems.attributes.short_description | 라인 항목 속성에 대한 간략한 설명입니다. 데이터 유형: 문자열 |
| lineItems.특성 | 라인 항목과 연결된 특성 목록입니다. 특성은 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 배열 |
| lineItems.characteristics._glide_action | 라인 항목에서 발생한 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| 라인 항목.특성.속성 | 특성 기록과 연결된 속성에 대한 정보를 포함하는 하나 이상의 객체입니다. 예를 들어 이 객체에는 속성 기록의 sys_id, 연결된 특성 기록, 계정 또는 접촉 창구, 특성 옵션 기록 또는 판매된 제품 정보에 대한 참조가 포함될 수 있습니다. 데이터 유형: 객체 |
| lineItems.characteristics.attributes.<attribute_type> | 속성의 유형입니다. 이 값에는 특성과 연관된 기록 또는 기능에 따라 다른 값이 포함될 수 있습니다. 데이터 유형: 객체 |
| lineItems.특성.속성.<attribute_type>.값 | 라인 항목 속성의 값입니다. 데이터 유형: 문자열 |
| 품목.특성.속성.<field_name> | 라인 항목과 연결된 특성 기록의 속성 이름입니다. 데이터 유형: 객체 |
| 라인 항목.특성.속성.<field_name>.값 | 엔터티의 특성 기록에 속하는 속성의 값입니다. 데이터 유형: 문자열 |
| lineItems.characteristics.sys_id | 연결된 특성 기록의 Sys_id입니다. 데이터 유형: 객체 |
| lineItems.characteristics.sys_id.value | 연결된 특성 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| lineItems.characteristics.table | 특성 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| lineItems.lineItems | 상위 라인 항목의 하위 라인 항목입니다. 이 객체의 형식은 매개변수와 동일합니다 lineItems . 데이터 유형: 객체 배열 |
| lineItems.sys_id | 연결된 항목 기록의 Sys_id입니다. 데이터 유형: 객체 |
| lineItems.sys_id.값 | 연결된 항목 기록의 Sys_id입니다. 업데이트된 테이블은 주문 또는 사양과 같은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| lineItems.table | 현금으로 연결 엔터티와 연결된 항목 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| sys_id | 엔터티의 Sys_id입니다. 데이터 유형: 문자열 |
| 테이블 | 엔터티가 있는 테이블의 이름입니다. 데이터 유형: 문자열 |
//Utility to invoke effect API
var util = new sn_l2c_core.PrimitiveUtil();
//Invoke extension point, picks an implementation based on sourceToTargetConfigID of a L2C flow, the Mapping Config ID in “sn_l2c_core_entity_mapping” table.
var service = util.getPrimitivesEPService('sp_order_macd');
//Invoke effect API with required params
var effectOutput = service.effect(deltaOutput, null);
//Print the returned JSON
gs.info("effectOutput: " + JSON.stringify(effectOutput));
//The returned JSON can be used in the subsequent commitInstance() method.
출력:
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order",
"_glide_action": "INSERT",
"_source_object": {},
"lineItems": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_line_item",
"attributes": {
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
},
"short_description": {
"value": "Quadplay Home Tech Hub Bundle"
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "-1",
"table": "sn_install_base_sold_product"
},
"lineItems": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_line_item",
"attributes": {
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
},
"short_description": {
"value": "Internet and OTT Bundle"
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "-1",
"table": "sn_install_base_sold_product"
},
"lineItems": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_line_item",
"attributes": {
"account": {
"value": "9e2fd2ee11b43110f877366201dea674"
},
"short_description": {
"value": "Solana Sports streaming channel"
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "-1",
"table": "sn_install_base_sold_product"
},
"lineItems": [],
"characteristics": []
}
],
"characteristics": []
}
],
"characteristics": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_characteristic_value",
"attributes": {
"characteristic_option": {
"value": "4f31999fd0a63110f8770dbf976be179"
},
"characteristic": {
"value": "4f31999fd0a63110f8770dbf976be178"
},
"characteristic_option_value": {
"value": ""
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "-1",
"table": "sn_prd_pm_product_characteristics"
}
}
]
},
"_state": {
"value": "active"
}
],
"_records_count":
{
"sn_ind_tmt_orm_order":
{
"insert": 1
},
"sn_ind_tmt_orm_order_line_item":
{
"insert": 3
},
"sn_ind_tmt_orm_order_characteristic_value":
{
"insert": 1
}
}
}
LeadtoCashCore - commitInstance(객체 targetJSON, 객체 additionalParams)
지정된 현금으로 연결 엔터티의 JSON을 인스턴스에 커밋하고, 업데이트된 정보가 포함된 상태 메시지를 반환하고, 결과적으로 현금으로 연결 핵심 엔터티 테이블을 업데이트합니다.
2026년 3월(v1.8) 스토어 릴리스부터 현재 commitInstance() 메서드는 모든 루트 엔터티를 유형(예: lineItems 및 램프)별로 그룹화하는 구조를 dataObject 반환하므로 개발자는 한 번의 커밋 응답에서 판매된 제품 및 관련 램프에 안정적으로 액세스할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| targetJSON | 객체 | 커밋할 대상 엔터티의 "glide_action"을 포함하는 JSON 객체입니다. 여기에서 effect() 메서드의 출력을 전달할 수 있습니다. 주: "glide_action"은 현금으로 연결 엔터티의 소스와 대상 JSON 간에 발생한 변경 작업을 식별합니다. |
| additionalParams | 객체 | 옵션입니다. 사용할 추가 매개변수입니다. |
| additionalParams.useNumberGenerator | 부울 | 옵션입니다. sys_numbers 대량으로 생성할지 여부를 나타내는 플래그입니다. 적용 가능한 값:
기본값: 잘못됨 |
| 유형 | 설명 |
|---|---|
| JSON 객체 | 대상 엔터티 기록에 대한 상세 정보입니다. 데이터 유형: 객체 주: headerID 은(는) 헤더 엔터티에만 존재하고 rootLineIDs 헤더가 없는 엔터티에만 존재합니다. dataObject, displayMessage, error, message, status 및 항상 존재합니다. |
| dataObject | 각 수준에서 수행된 커밋 작업에 대한 자세한 데이터가 있는 JSON 객체입니다. 주: 2026년 3월 스토어 릴리스를 기준으로 현재 필드는 dataObject 모든 루트 엔터티에 대한 데이터를 보존하는 typeValue 키(예: lineItems, ramp)로 모든 루트 엔터티 유형을 누적합니다. 데이터 유형: 객체 엔터티에 헤더가 있는 경우의 구조: |
| dataObject._commitObjectInfo | 라인 항목 변경이 ENGAGE 작업인지 여부를 커밋 상태 및 sys_id합니다. 데이터 유형: 객체 |
| dataObject.ramp | 헤더 또는 판매된 자재와 연결된 램프 그룹을 나타냅니다. 객체 배열 |
| dataObject.ramp.sys_id | 경사로의 Sys_id. 상위 매핑 없이 램프 ID를 제공하면 헤더 없음 및 다중 선택 패턴에 대해 잘못된 입력으로 간주됩니다. 데이터 유형: 문자열 |
| dataObject.ramp.table | 커밋된 판매된 자재 또는 헤더와 연결된 램프 엔터티의 테이블 이름입니다. 예: "sn_install_base_sold_product_ramp".데이터 유형: 문자열 |
| dataObject.ramp.attribute | 램프의 속성입니다. 데이터 유형: 객체 |
| dataObject.ramp.attribute.parent | 램프의 상위 속성 Sys_id입니다. 데이터 유형: 문자열 |
| dataObject.ramp.attribute.parent_table | 속성의 테이블 위치입니다. 예를 들면 table_name입니다.데이터 유형: 문자열 |
| dataObject.ramp.attribute.ramp_type | 램프 유형입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.ramp.attribute.term | 용어. 데이터 유형: 문자열 |
| dataObject.ramp.attribute.start_date | 램프의 시작 날짜입니다. 데이터 유형: 문자열 |
| dataObject.ramp.attribute.end_date | 램프의 종료 날짜입니다. 데이터 유형: 문자열 |
| dataObject._commitObjectInfo.status | 특정 엔터티에서 수행된 커밋 작업의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject._commitObjectInfo.sys_id | 삽입된 기록의 Sys_id입니다. 메서드는 ENGAGEdataObject._glide_action인 경우에만 이 매개변수를 반환합니다. 업데이트된 테이블은 엔터티 간에 변경될 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다.데이터 유형: 문자열 |
| dataObject._glide_action | 라인 항목에서 발생한 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject._source_object | 변경 내용이 적용된 소스 JSON 객체입니다. 개체 구조는 엔터티 간에 변경될 수 있습니다. 데이터 유형: 객체 |
| dataObject._source_object.sys_id | _glide_action이 적용된 소스 엔터티 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티 간에 변경될 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| dataObject._source_object.table | _glide_action이 적용된 소스 엔터티 기록이 있는 테이블의 이름입니다. 이는 엔터티 간에 변경될 수 있습니다. 데이터 유형: 문자열 |
| dataObject.lineItems | 엔터티 기록의 라인 항목 상세 정보입니다. 예를 들어 라인 항목을 주문하거나 라인 항목을 제공합니다. 데이터 유형: 객체 배열 |
| dataObject.lineItems._action | 소스 JSON의 라인 항목에 적용되는 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.lineItems._commitObjectInfo | 라인 항목 변경이 ENGAGE 작업인 경우 반환됩니다. 객체의 커밋 상태와 sys_id이 있습니다.데이터 유형: 객체 |
| dataObject.lineItems._commitObjectInfo.status | 특정 엔터티에서 수행된 커밋 작업의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.lineItems._commitObjectInfo.sys_id | 삽입된 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티 간에 변경될 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| dataObject.lineItems._glide_action | 라인 항목에서 발생한 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.lineItems._source_object | _glide_action이 적용된 소스 엔터티 기록 상세 정보입니다. 이 객체는 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 |
| dataObject.lineItems._source_object.sys_id | _glide_action이 적용된 소스 엔터티 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| dataObject.lineItems._source_object.table | _glide_action이 적용된 소스 엔터티 기록의 테이블 이름입니다. 데이터 유형: 문자열 |
| dataObject.lineItems._state | 객체의 조건입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.lineItems.attributes | 라인 항목의 속성입니다. 예를 들어 속성의 이름과 값입니다. 엔터티에 따라 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| dataObject.lineItems.attributes.<attribute_name> | 라인 항목 속성의 이름입니다. 예: 계정 또는 접촉 창구의 이름입니다. 엔터티의 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| dataObject.lineItems.attributes.<attribute_name>.value | 라인 항목 속성의 값입니다. 데이터 유형: 문자열 |
| dataObject.lineItems.characteristics | 라인 항목과 연결된 특성 목록입니다. 특성은 엔터티마다 다를 수 있습니다. 데이터 유형: 객체 배열 |
| dataObject.lineItems.characteristics._glide_action | 라인 항목에서 발생한 변경 작업입니다. 가능한 값:
데이터 유형: 문자열 |
| dataObject.lineItems.특성.속성 | 특성 기록과 연결된 속성에 대한 정보를 포함하는 하나 이상의 객체입니다. 예를 들어 이 객체에는 속성 기록의 sys_id, 연결된 특성 기록, 계정 또는 접촉 창구, 특성 옵션 기록 또는 판매된 제품 정보에 대한 참조가 포함될 수 있습니다. 데이터 유형: 객체 |
| dataObject.lineItems.특성.속성.<attribute_type> | 품질 속성의 이름입니다. 엔터티의 다양한 필드를 포함할 수 있습니다. 데이터 유형: 객체 |
| dataObject.lineItems.characteristics.attributes.<attribute_type>.<attribute_name> | 품질 속성의 이름입니다. 데이터 유형: 객체 |
| dataObject.lineItems.characteristics.attributes.<attribute_type>.<attribute_name>.value | 라인 항목 속성의 값입니다. 데이터 유형: 문자열 |
| dataObject.lineItems[0].characteristics.sys_id | 연결된 특성 기록의 Sys_id입니다. 데이터 유형: 객체 |
| dataObject.lineItems[0].characteristics.sys_id.value | 연결된 특성 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| dataObject.lineItems[0].characteristics.table | 특성 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| dataObject.lineItems[0].lineItems | 상위 라인 항목의 하위 라인 항목입니다. 이 객체의 형식은 매개변수와 동일합니다 lineItems . 데이터 유형: 객체 배열 |
| dataObject.lineItems[0].sys_id | 연결된 항목 기록의 Sys_id입니다. 데이터 유형: 객체 |
| dataObject.lineItems[0].sys_id.value | 연결된 항목 기록의 Sys_id입니다. 업데이트된 테이블은 주문 또는 사양과 같은 엔터티마다 다를 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| dataObject.lineItems[0].table | 현금으로 연결 엔터티와 연결된 항목 기록이 포함된 테이블의 이름입니다. 데이터 유형: 문자열 |
| dataObject.sys_id | 연결된 라인 항목 기록의 Sys_id입니다. 업데이트된 테이블은 엔터티 간에 변경될 수 있습니다. 예를 들어, 주문 [sn_ind_tmt_orm_order]입니다. 데이터 유형: 문자열 |
| dataObject.table | 현금으로 연결 엔터티의 기록이 있는 테이블의 이름입니다. 데이터 유형: 문자열 |
| displayMessage | UI에서 사용자에게 표시되는 메시지입니다. 표시 메시지는 문자열 값과 동일합니다 message . 데이터 유형: 문자열 |
| 오류 | if 설명하는 오류 메시지... commitInstance 메서드가 아닙니다. 요청이 올바르면 이 매개변수는 빈 문자열을 반환합니다. 데이터 유형: 문자열 |
| 헤더 ID | 헤더가 있는 엔터티에만 필요합니다. commitInstance 메서드에서 생성되거나 업데이트된 대상 엔터티 기록의 Sys_id입니다. 저장 위치: 판매된 자재, 주문 등 엔터티 유형에 따른 관련 테이블입니다. 데이터 유형: 문자열 |
| 메시지 | 성공, 오류 또는 partially_success 시나리오를 설명하는 메시지입니다. 이 메시지는 문자열 값과 displayMessage 동일하며 API에 대한 다른 적용 호출에 사용할 수 있습니다. 데이터 유형: 문자열 |
| rootLineID | 헤더가 없는 엔터티에만 필요합니다. commitInstance 메서드에서 삽입, 업데이트 또는 삭제한 대상 엔터티 기록 sys_ids의 쉼표로 구분된 목록입니다. 저장 위치: 판매된 자재, 주문 등 엔터티 유형에 따른 관련 테이블입니다. 데이터 유형: 문자열 배열 |
| 상태 | 커밋의 성공을 확인하는 상태 메시지입니다. 가능한 값:
데이터 유형: 문자열 |
다음 예제에서는 각 LeadtoCashCore 메서드를 사용하여 원본-대상 엔터티의 세부 정보를 검색, 적용 및 커밋하는 방법을 보여 줍니다. 이 예에서 commitInstance() 메서드는 변경된 JSON을 인스턴스의 현금으로 연결 엔터티로 커밋하는 데 사용됩니다.
//Utility to invoke commitInstance API
var util = new sn_l2c_core.PrimitiveUtil();
//Invokes the PrimitiveUtil extension point, picks an implementation based on sourceToTargetConfigID of a Lead to Cash (L2C) flow. The Mapping Config ID in “sn_l2c_core_entity_mapping” table.
var service = util.getPrimitivesEPService('sp_order_macd');
//Invoke commitInstance API with the required params
var effectOutput = service.effect(sourceInstance);
//Print the returned JSON
gs.info("commitOutput: "+JSON.stringify(commitOutput));
출력:
{
"status": "success",
"error": "",
"message": "Commit operation successfully processed.",
"displayMessage": "Commit operation successfully processed.",
"dataObject": {
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order",
"_glide_action": "INSERT",
"_source_object": {},
"lineItems": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_line_item",
"attributes": {
"account": {
"value": "86837a386f0331003b3c498f5d3ee4ca"
},
"sold_product": {
"value": "e4bbf902b7343300ece839a6ee11a937"
},
"short_description": {
"value": "Network Monitoring"
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "e4bbf902b7343300ece839a6ee11a937",
"table": "sn_install_base_sold_product"
},
"lineItems": [
{
"sys_id": "-1",
"table": "sn_ind_tmt_orm_order_line_item",
"attributes": {
"account": {
"value": "86837a386f0331003b3c498f5d3ee4ca"
},
"sold_product": {
"value": "23dbbd02b7343300ece839a6ee11a98e"
},
"short_description": {
"value": "Remote Monitoring"
}
},
"_glide_action": "INSERT",
"_source_object": {
"sys_id": "23dbbd02b7343300ece839a6ee11a98e",
"table": "sn_install_base_sold_product"
},
"lineItems": [],
"characteristics": [],
"coveredProducts": [],
"_commitObjectInfo": {
"sys_id": "d2d5b868488d5610f877a23d5db8922f",
"status": "success"
}
}
],
"characteristics": [],
"coveredProducts": [],
"_commitObjectInfo": {
"sys_id": "92d5b868488d5610f877a23d5db89229",
"status": "success"
}
}
],
"_commitObjectInfo": {
"sys_id": "46d5b0a4488d5610f877a23d5db892ef",
"status": "success"
}
},
"headerID": "46d5b0a4488d5610f877a23d5db892ef",
"rootLineIDs": [
"92d5b868488d5610f877a23d5db89229"
]
}
fetchRecordSysIds를 통해 램프 sys_id 전달하여 JSON에 램프 데이터를 포함시키려고 합니다. 출력이 판매된 자재(lineItems)와 램프 기록(램프)을 모두 백업하고자 합니다.
var util = new sn_l2c_core.PrimitiveUtil();
// Extension point for SP → Order flow (example from uptake doc)
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');
// Parent Sold Product sys_id
var spID = 'aedfb2';
// Ramp sys_id that should be included in output
var rampID = '8565f';
// NEW: additionalParams.fetchRecordSysIds (selective record fetch)
var additionalParams = {
"fetchRecordSysIds": [{
"sn_install_base_sold_product": spID,
"sn_install_base_sold_product_ramp": rampID
}]
};
// createInstance: headerId = null for no-header entities
var sourceInstance = service.createInstance(null, spID, false, additionalParams);
gs.info("createInstance output: " + JSON.stringify(sourceInstance));
/*
* Expected high-level output shape (no-header):
* {
* "ramp": [ { "sys_id": "...", "attributes": {...} } ],
* "lineItems": [ { "sys_id": "...", "attributes": {...} } ]
* }
*/
// ---- Typical next steps in Primitives flow (delta/effect/commit) ----
// In a real flow you usually have a target instance too.
// For illustration we reuse the same structure as a placeholder.
var targetInstance = sourceInstance;
// Compute changes -> effect -> commit
var effectOutput = service.effect(sourceInstance);
var commitOutput = service.commitInstance(effectOutput);
gs.info("commitInstance output: " + JSON.stringify(commitOutput));
/*
* In no-header scenarios, commitInstance returns dataObject that groups
* root entity types (ex: lineItems, ramp) instead of a single root.
*//***************************************************************
* Goal: createInstance returns a flat structure:
* - lineItems: [ ...all selected SPs... ]
* - ramp: [ ...all ramps... ]
*/
var util = new sn_l2c_core.PrimitiveUtil();
var service = util.getPrimitivesEPService('sn_l2c_cust_flows_sp_to_order');
// Multiple SPs selected
var spIDs = 'aedfb2,28490592';
// Selective ramp sys_id(s) to include (merged output)
var rampID = '5b8c9d9';
var additionalParams = {
"multiSelectMerge": true,
"fetchRecordSysIds": [{
"sn_install_base_sold_product_ramp": rampID
}]
};
var mergedInstance = service.createInstance(null, spIDs, false, additionalParams);
gs.info("Merged createInstance output: " + JSON.stringify(mergedInstance));
/*
* Expected high-level output shape for merge:
* {
* "ramp": [ { ... }, { ... } ],
* "lineItems":[ { ... }, { ... } ]
* }
*/
// Optional: Commit example (same pattern)
var effectOutput = service.effect(mergedInstance);
var commitOutput = service.commitInstance(effectOutput);
gs.info("commitInstance output: " + JSON.stringify(commitOutput));