LeadtoCashCore - スコープ対象
LeadtoCashCore スクリプトインクルードは、「見込み顧客から現金へ」コアライフサイクルで「見込み顧客から現金へ」ワークフローを調整するためのメソッドを提供します。
LeadtoCashCore スクリプトインクルードをインスタンスで使用できるようにするには、Lead to Cash Core (com.snc.l2c.core) プラグインを有効にする必要があります。このプラグインには、ServiceNow Store の Lead to Cash コア (com.snc.l2c_core) アプリケーションからアクセスできます。このスクリプトインクルードは sn_l2c_core 名前空間に属しており、admin ロールが必要です。
「見込み顧客から現金へ」ワークフローでは、ソースエンティティをターゲットエンティティにマッピングします。エンティティはテーブルの集合として定義されます。ソースからターゲットへのマッピングを使用すると、ターゲットエンティティに必要な構造またはコンテンツに合わせて、ソースエンティティの構造またはコンテンツを変換できます。このスクリプトインクルードによって提供される機能は、「見込み顧客から現金へ」機能で利用可能なエンティティマッピング機能を表します。詳細については、「Lead to Cash Core」を参照してください。
LeadtoCash スクリプトインクルードを使用してワークフローを完了するには、あるメソッドから次のメソッドに戻りパラメーターを渡します。通常、これらのメソッドは次の順序で呼び出します。
- LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト) - スクリプトの呼び出しに使用される拡張ポイントを取得するためのユーティリティが含まれています。すべてのメソッド呼び出しで指定する必要があります。詳細については、このトピックの「前提条件」セクションを参照してください。
- LeadtoCashCore - createInstance(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams) - 指定されたエンティティのデータをフェッチします。たとえば、品目とその関連データを含む顧客の注文関連情報などです。
context パラメーターを使用して、スクリプト内で「複数選択」と呼ばれる 1 つ以上のヘッダーまたは行 ID を宣言します。context.entityConfigIdパラメーターを渡して、マッピングを定義せずにスクリプトを呼び出します。このような複数選択のユースケースでは、出力 JSON には、各エントリが単一のエンティティを表すキーアイテムアレイが含まれています。
- LeadtoCashCore:delta(オブジェクト sourceJSON, オブジェクト dirtyJSON, オブジェクト additionalParams) - 2 つの JSON 入力を比較し、それらの間に発生した変更を識別します。たとえば、エンティティで何かが追加、削除、または変更された場合などです。
- LeadtoCashCore:effect(オブジェクト sourceJSON, オブジェクト targetJSON, オブジェクト additionalParams) - ソース JSON オブジェクトをターゲット オブジェクトに変換します。
- LeadtoCashCore:commitInstance(オブジェクト targetJSON, オブジェクト additionalParams) - effect() スクリプトインクルードで行われた変換をデータベースにコミットします。
必須条件
これらの各メソッドには、拡張ポイント sn_l2c_core がバンドルされています。LeadToCashServiceEP。PrimitiveUtil() は、拡張ポイントサービスを取得するメソッドを提供し、使用可能なパラメーターに従ってスクリプトインクルードを呼び出すユーティリティです。最初に、ソースとターゲットの情報を取得するテーブルを指定するgetPrimitivesEPService()メソッドをPrimitiveUtil()に提供する必要があります。詳細については、「LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト)」を参照してください。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() メソッドを使用して既存の販売済み製品情報を取得します。
- 次に、 delta() メソッドを使用して、このソース JSON をダーティ JSON と比較します。このメソッドはデルタ JSON を返します。
- 次に、 delta() JSON は、 effect() メソッドを使用して順序型の JSON に変換されます。
- 注文 JSON は、 commitInstance() メソッドを使用してデータベースにコミットされます。
LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト)
PrimitiveUtil() ユーティリティメソッドをトリガーします。
LeadtoCashCore スクリプトインクルードで使用可能なメソッドを使用するには、まず、getPrimitivesEPService() ユーティリティメソッドを使用してスクリプト内のスクリプト拡張ポイント PrimitiveUtil() を常に呼び出して実装をトリガーする必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| コンテキスト | オブジェクト | オプション。属性値を表示し、一度に複数のインスタンスを呼び出すための追加パラメーターオプション。 |
| context.entityConfigId | 文字列 | オプション。エンティティの構成 ID。entityConfigIdとsourceToTargetConfigIDの両方が指定されている場合は、entityConfigIdが優先されます。 テーブル:「Lead-to-Cash」エンティティ [sn_l2c_core_entity] データタイプ:文字列 |
| context.isMultiSelect | ブーリアン | オプション。インスタンスを作成するために複数のエンティティを入力として渡すかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| context.loadDisplayValue | ブーリアン | オプション。各属性の表示値をロードするかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| sourceToTargetConfigID | 文字列 | ソースからターゲットへのマッピングのマッピング構成 ID。 テーブル:「Lead-to-Cash」エンティティマッピング [sn_l2c_core_entity_mapping] |
| タイプ | 説明 |
|---|---|
| なし |
次の例では、 PrimitiveUtil() を呼び出し、Lead To Cash エンティティマッピング [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() を呼び出し、Lead To Cash エンティティ [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(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams)
ヘッダー、行、子行、特性、それらの属性などのさまざまな詳細を含む JSON オブジェクトを使用して、1 つ以上の指定されたエンティティのデータを返します。
createInstance() メソッドの出力 JSON は、delta()、effect()、commitInstance() などの「見込み顧客から現金へ」コアワークフローの後続のメソッドで使用します。
要件
LeadtoCashCore スクリプトインクルードでは、スクリプトで createInstance() を呼び出す前に、最初にスクリプトユーティリティメソッド PrimitiveUtil() を LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト) ユーティリティメソッドで呼び出して実装をトリガーする必要があります。フローごとにサービスを 1 回だけ取得し、すべての LeadtoCashCore メソッドに同じサービスを使用します。
考慮事項
-
createInstance() が複数のカンマ区切りの headerID または lineID を一度に渡せるようにするには、getPrimitivesEPService() ブールパラメーターcontext.isMultiSelect true に設定します。それ以外の場合は、一度に 1 つの ID しか渡せません。複数の lineID を持つ単一の headerID のユースケースは、 context.isMultiSelect を true に設定しなくてもサポートされます。
-
エンティティの構成 ID のみで createInstance() を呼び出せるようにするには、 getPrimitivesEPService() 文字列パラメーター context.entityConfigId を設定します。entityConfigId と sourceToTargetConfigID の両方が渡された場合、entityConfigId が優先して createInstance() を実行します。
この機能の詳細については、「 LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト)」を参照してください。
createInstance() は、選択的なデータ取得と複数のルートエンティティ定義をサポートしているため、開発者は fetchRecordSysIds や multiSelectMerge などの追加パラメーターを使用してランプとヘッダーレスシナリオを明示的にフェッチできます。
| 名前 | タイプ | 説明 |
|---|---|---|
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.skipLines | ブーリアン | オプション。指定したエンティティの品目をフェッチするかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| fetchRecordSysId | オブジェクトのアレイ | テーブル名をsys_idsに明示的にマッピングすることで、ヘッダーベースとヘッダーなしの両方のシナリオでデータの選択的フェッチを有効にします。 [Behavior (動作)]:
構造: |
| multiSelectMerge | ブーリアン | ヘッダーなしのシナリオでのみ。同じコンテキストタイプのデータを単一のフラット構造に結合するかどうかを示すフラグ。 有効な値:
|
| additionalParams.allowedContextTypes | 文字列のアレイ | オプション。他のすべての無関係なセクションを除いて、allowedContextType にリストされているタイプのみへの入力と処理を制御します。 有効な値:
構造: |
| headerSysID | 文字列 | データを取得するエンティティのヘッダー sys_id。lineSysIDsパラメーターを指定しない場合に必要です。ヘッダー sys_idsを渡さない場合は null を渡します。スクリプトで 1 つ以上のヘッダー sys_idsを指定するには、getPrimitivesEPService() ユーティリティメソッドで 注: 少なくとも 1 つの headerSysID または lineSysIDs パラメーターが必要です。 |
| isTarget | ブーリアン | オプション。ターゲットエンティティデータをフェッチするかどうかを決定するフラグ。 有効な値:
デフォルト値:false |
| lineSysID | 文字列 | エンティティデータを取得するエンティティの品目sys_id。headerSysIDsを指定せず、エンティティ構造が [販売済み製品] などの品目で始まる場合は必須です。 スクリプトで 1 つ以上の品目sys_idsを指定するには、getPrimitivesEPService() ユーティリティメソッドで 注: 少なくとも 1 つの headerSysID または lineSysIDs パラメーターが必要です。複数の lineSysIDsを渡す場合は、すべてのレコードが同じ headerSysIDに属している必要があります。 |
| タイプ | 説明 |
|---|---|
| JSON オブジェクト | エンティティレコードの詳細を含む JSON。 データタイプ:オブジェクトのアレイ |
| _state | エンティティのアクティビティステータス。 可能な値:
デフォルト:アクティブ データタイプ:文字列 |
| 特性 | エンティティ特性のリスト。特性はエンティティによって異なる場合があります。 データタイプ:オブジェクトのアレイ |
| characteristics.attributes | 特性レコードに関連付けられた属性に関する情報を含む 1 つ以上のオブジェクト。<属性タイプ> は、特性に関連付けられたレコード/機能に基づいて、さまざまな値にすることができます。たとえば、このオブジェクトには、属性レコードのsys_id、関連する特性レコード、特性オプションレコード、または販売済み製品情報への参照を含めることができます。 データタイプ: オブジェクト |
| characteristics.attributes.<attribute_type> | アイテム属性のキー名に関する情報。データタイプ: オブジェクト |
| characteristics.attributes.<attribute_type>.value | 通常は、関連付けられた属性レコードのsys_idですが、関連付けられた属性タイプを説明する任意のテキスト文字列にすることもできます。 データタイプ:文字列 |
| characteristics.sys_id | 関連付けられた特性レコードのsys_idを含むオブジェクト。 データタイプ: オブジェクト |
| characteristics.sys_id.value | 関連付けられた特性レコードのSys_id。 データタイプ:文字列 |
| characteristics.table | 「見込み顧客から現金へ」エンティティの特性レコードを含むテーブルの名前。 データタイプ:文字列 |
| アイテム | context.isMultiSelect が true に設定されている場合、選択されたオブジェクトのアレイが含まれます。 データタイプ:オブジェクトのアレイ |
| items.attributes | アイテムレコードの属性。属性はエンティティによって異なる場合があります。データタイプ: オブジェクト |
| items.attributes.account | アイテム属性に関連付けられているアカウントに関する情報。 |
| items.attributes.account.value | アイテムの属性。属性はエンティティによって異なる場合があります。データタイプ: オブジェクト |
| items.attributes.<key_name> | アイテム属性のキー名に関する情報。データタイプ: オブジェクト |
| items.attributes.<key_name>.value | キー名属性の値。 データタイプ:文字列 |
| items.sys_id | エンティティアイテムに関するsys_id情報を含むオブジェクト。値はエンティティによって異なります。 データタイプ: オブジェクト |
| items.sys_id.value | 関連アイテムのSys_id。 データタイプ:文字列 |
| items.table | 「見込み顧客から現金へ」エンティティに関連付けられた品目レコードを含むテーブルの名前。 データタイプ:文字列 |
| 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.characteristics | 品目に関連付けられた特性のリスト。特性はエンティティによって異なる場合があります。 データタイプ:オブジェクトのアレイ |
| items.lineItems.characteristics.attributes | 特性レコードに関連付けられた属性に関する情報を含む 1 つ以上のオブジェクト。<属性タイプ> は、特性に関連付けられたレコード/機能に基づいて、さまざまな値にすることができます。たとえば、このオブジェクトには、属性レコードのsys_id、関連する特性レコード、特性オプションレコード、または販売済み製品情報への参照を含めることができます。 データタイプ: オブジェクト |
| items.lineItems.characteristics.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"
}
}
}
]
}
]
}
複数選択
次のスクリプトは、 isMultiSelect を使用して createInstance() メソッドを呼び出し、2 つの販売済み製品のデータを階層と特性全体とともにロードする方法を示しています。
//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() スクリプトは、header と headerRelatedParty を使用して allowedContextTypes を設定して、sn_l2c_quote_to_opportunity テーブル内のこれら 2 つの入力済みセクションのみを出力します。
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で定義されている 2 つの入力済みセクションのみが含まれます。他のすべてのコンテキストタイプ (lines、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" }
}
}
]
}
複数選択の結合
次の例では、ランプされた販売済み製品 (1 つのランプを持つ複数の販売済み製品) をフェッチし、すべてのランプとすべてのエンティティをフラットな構造に結合します。
/******** 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 オブジェクトを返します。
エンティティの構成 ID のみで delta() を呼び出せるようにするには、 getPrimitivesEPService() 文字列パラメーター context.entityConfigId を設定します。entityConfigIdとsourceToTargetConfigIDの両方が渡された場合、entityConfigIdは delta() の実行に優先順位が付けられます。
| 名前 | タイプ | 説明 |
|---|---|---|
| ソース JSON | オブジェクト | ソース「見込み顧客から現金へ」エンティティの JSON オブジェクト。 注: LeadtoCashCore - createInstance(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams) メソッドを使用して、エンティティのソース JSON を取得します。 |
| ダーティ JSON | オブジェクト | 「Lead-to-Cash」エンティティの変更済みソース 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.characteristics | 品目の特性。エンティティに基づいてさまざまなフィールドを含めることができます。 データタイプ:オブジェクトのアレイ |
| lineItems.characteristics.attributes | ヘッダーレコード特性の属性。たとえば、属性の名前と値などです。エンティティに基づいてさまざまなフィールドを含めることができます。 データタイプ: オブジェクト |
| lineitems.characteristics.attributes.<field_name> | 品目に関連付けられた特性レコードの属性名。 データタイプ: オブジェクト |
| lineitems.characteristics.attributes.<field_name>.value | エンティティの特性レコードに属する属性の値。 データタイプ:文字列 |
| 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.value | 関連アイテムレコードの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() メソッドを形成する方法を示しています。フローごとにサービスを 1 回だけ取得し、すべての 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() メソッドを使用して、変更されたエンティティをデータベースにコミットできます。
delta() メソッドの出力 JSON は、effect() リクエストで使用できます。次に、commitInstance() を使用して effect() JSON 出力をデータベースにコミットし、「見込み顧客から現金へ」ワークフローを完了します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ソース JSON | オブジェクト | ソースエンティティの詳細を含む JSON。 注: LeadtoCashCore - createInstance(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams)を使用して、エンティティのソース JSON を取得します。 |
| targetJSON | オブジェクト | ターゲットエンティティの詳細を含む JSON。 |
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.is_future_state | ブーリアン | オプション。これは、再構成のユースケースをサポートするために使用します。 指定できる値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| JSON オブジェクト | 「見込み顧客から現金へ」エンティティの各ヘッダーで、ソースからターゲットエンティティ JSON オブジェクトに発生し、適用された変更。 データタイプ: オブジェクト |
| _glide_action | ソース JSON とターゲット 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.characteristics | 品目に関連付けられた特性のリスト。特性はエンティティによって異なる場合があります。 データタイプ:オブジェクトのアレイ |
| lineItems.characteristics._glide_action | 品目で発生した変更アクション。 可能な値:
データタイプ:文字列 |
| lineItems.characteristics.attributes | 特性レコードに関連付けられた属性に関する情報を含む 1 つ以上のオブジェクト。 たとえば、このオブジェクトには、属性レコードのsys_id、関連する特性レコード、アカウントまたは連絡先、特性オプションレコード、または販売済み製品情報への参照を含めることができます。 データタイプ: オブジェクト |
| lineItems.characteristics.attributes.<attribute_type> | 属性のタイプ。この値には、特性に関連付けられたレコードまたは機能に基づいて、さまざまな値を含めることができます。 データタイプ: オブジェクト |
| lineItems.characteristics.attributes.<attribute_type>.value | 品目属性の値。 データタイプ:文字列 |
| lineitems.characteristics.attributes.<field_name> | 品目に関連付けられた特性レコードの属性名。 データタイプ: オブジェクト |
| lineitems.characteristics.attributes.<field_name>.value | エンティティの特性レコードに属する属性の値。 データタイプ:文字列 |
| 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.value | 関連アイテムレコードのSys_id。更新されるテーブルは、注文や仕様など、エンティティによって異なる場合があります。たとえば、注文 [sn_ind_tmt_orm_order] です。 データタイプ:文字列 |
| lineItems.table | 「見込み顧客から現金へ」エンティティに関連付けられたアイテムレコードを含むテーブルの名前。 データタイプ:文字列 |
| sys_id | エンティティのSys_id。 データタイプ:文字列 |
| table | エンティティが見つかったテーブルの名前。 データタイプ:文字列 |
//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 や ramp など) 別にグループ化する構造化されたdataObjectを返すため、開発者は 1 回のコミット応答で販売済み製品とそれに関連するランプに確実にアクセスできます。
| 名前 | タイプ | 説明 |
|---|---|---|
| targetJSON | オブジェクト | コミットするターゲットエンティティの「glide_action」を含む JSON オブジェクト。ここに effect() メソッドの出力を渡すことができます。 注: 「glide_action」は、「見込み顧客から現金へ」エンティティのソースとターゲット JSON の間で発生した変更アクションを示します。 |
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.useNumberGenerator | ブーリアン | オプション。sys_numbersを一括で生成するかどうかを示すフラグ。 適用可能な値:
デフォルト値:正しくありません |
| タイプ | 説明 |
|---|---|
| JSON オブジェクト | ターゲットエンティティレコードに関する詳細。 データタイプ: オブジェクト 注: headerID はヘッダーエンティティにのみ存在 rootLineIDs 、ヘッダーなしエンティティにのみ存在します。 dataObject、 displayMessage、 error、 message、および status は常に存在します。 |
| データオブジェクト | 各レベルで実行されたコミット操作に関する詳細データを含む 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。このメソッドは、 dataObject._glide_action が ENGAGE の場合にのみこのパラメーターを返します。更新されたテーブルはエンティティ間で変更される可能性があります。たとえば、注文 [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.characteristics.attributes | 特性レコードに関連付けられた属性に関する情報を含む 1 つ以上のオブジェクト。 たとえば、このオブジェクトには、属性レコードのsys_id、関連する特性レコード、アカウントまたは連絡先、特性オプションレコード、または販売済み製品情報への参照を含めることができます。 データタイプ: オブジェクト |
| dataObject.lineItems.characteristics.attributes.<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 文字列値と同じです。 データタイプ:文字列 |
| error | 次の場合を説明するエラーメッセージ... commitInstance メソッドではありません。要求が正しい場合、このパラメーターは空の文字列を返します。 データタイプ:文字列 |
| ヘッダー ID | ヘッダーを持つエンティティにのみ必要です。commitInstance メソッドによって作成または更新されたターゲットエンティティレコードのSys_id。 保存場所:販売された資料、注文などのエンティティタイプに応じた関連テーブル。 データタイプ:文字列 |
| メッセージ | 成功、エラー、またはpartially_successシナリオを説明するメッセージ。このメッセージは displayMessage 文字列値と同じであり、API への他の適用呼び出しで使用できます。 データタイプ:文字列 |
| rootLineID | ヘッダーなしエンティティにのみ必要です。commitInstance メソッドによって挿入、更新、または削除されたターゲットエンティティレコードのsys_idsのカンマ区切りリスト。 保存場所:販売された資料、注文などのエンティティタイプに応じた関連テーブル。 データタイプ:文字列のアレイ |
| status | コミットの成功を確認するステータスメッセージ。 可能な値:
データタイプ:文字列 |
次の例は、各 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));