LeadtoCashCore - スコープ対象
LeadtoCashCore スクリプトインクルードは、「見込み顧客から現金へ」コアライフサイクルにおける「見込み顧客から現金へ」のワークフローを調整するためのメソッドを提供します。
LeadtoCashCore スクリプトインクルードをインスタンスで使用できるようにするには、Lead to Cash Core (com.snd.l2c.core) プラグインを有効にする必要があります。このスクリプトインクルードは sn_l2c_core 名前空間に属しており、admin ロールが必要です。
「見込み顧客から現金へ」ワークフローでは、ソースエンティティをターゲットエンティティにマッピングします。エンティティはテーブルの集合として定義されます。ソースからターゲットへのマッピングを使用すると、ターゲットエンティティに必要な構造またはコンテンツに合わせて、ソースエンティティの構造またはコンテンツを変換できます。このスクリプトインクルードによって提供される機能は、「見込み顧客から現金へ」機能で使用できるエンティティマッピング機能を表します。詳細については、「Lead to Cash」を参照してください。
LeadtoCash スクリプトインクルードを使用してワークフローを完了するには、あるメソッドから次のメソッドに戻りパラメーターを渡します。通常、これらのメソッドは次の順序で呼び出します。
- LeadtoCashCore - createInstance(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams) - 指定されたエンティティのデータをフェッチします。たとえば、品目とその関連データを含む顧客の注文関連情報などです。
context パラメーターを使用して、スクリプト内で 1 つ以上のヘッダーまたは行 ID を宣言します。このような複数選択のユースケースでは、出力 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();
var context = {"isMultiSelect": false}; // Set the context.isMultiSelect parameter as true to enable multi-select use cases
//Flow: Creation of 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.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)
LeadtoCashCore - createInstance(文字列 headerSysIDs, 文字列 lineSysIDs, ブール値 isTarget, オブジェクト additionalParams)
ヘッダー、行、子行、特性、それらの属性などのさまざまな詳細を含む JSON オブジェクトを使用して、1 つ以上の指定されたエンティティのデータを返します。
createInstance() メソッドの出力 JSON は、delta()、effect()、commitInstance() などの「見込み顧客から現金へ」コアワークフローの後続のメソッドで使用します。
getPrimitivesEPService() ブールパラメーター context.isMultiSelect を true に設定すると、createInstance() が複数のカンマ区切りの headerID または lineID を一度に渡すことができます。それ以外の場合は、一度に 1 つの ID しか渡せません。詳細は、「LeadtoCashCore - getPrimitivesEPService(文字列 sourceToTargetConfigID, オブジェクトコンテキスト)」を参照してください。複数の lineID を持つ単一の headerID のユースケースは、 context.isMultiSelect を true に設定しなくてもサポートされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.skipLines | ブール | オプション。指定したエンティティの品目をフェッチするかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| 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"
}
]
}
]
}
LeadtoCashCore:delta(オブジェクト sourceJSON, オブジェクト dirtyJSON, オブジェクト additionalParams)
「見込み顧客から現金へ」エンティティのソースオブジェクトと変更されたソース JSON オブジェクトを比較し、追加、削除、変更など、ソース JSON に加えられた変更を記述する JSON オブジェクトを返します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ソース 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。 データタイプ:文字列 |
| テーブル | エンティティが見つかったテーブルの名前。 データタイプ:文字列 |
//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 をインスタンスにコミットし、更新された情報を含むステータスメッセージを返して、結果として「見込み顧客から現金へ」コアエンティティテーブルを更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| targetJSON | オブジェクト | コミットするターゲットエンティティの「glide_action」を含む JSON オブジェクト。ここに effect() メソッドの出力を渡すことができます。 注: 「glide_action」は、「見込み顧客から現金へ」エンティティのソースとターゲット JSON の間で発生した変更アクションを示します。 |
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.useNumberGenerator | ブール | オプション。sys_numbersを一括で生成するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| JSON オブジェクト | ターゲットエンティティレコードに関する詳細。 データタイプ:オブジェクト |
| データオブジェクト | 各レベルで実行されたコミット操作に関する詳細データを含む JSON オブジェクト。 データタイプ:オブジェクト |
| dataObject._commitObjectInfo | 品目の変更が INSERT アクションである場合は、ステータスをコミットしてsys_idします。 データタイプ:オブジェクト |
| dataObject._commitObjectInfo.status | 特定のエンティティで実行されたコミット操作のステータス。 可能な値:
データタイプ:文字列 |
| dataObject._commitObjectInfo.sys_id | 挿入されたレコードのSys_id。このメソッドは、 dataObject._glide_action が INSERT の場合にのみこのパラメーターを返します。更新されるテーブルはエンティティによって異なる場合があります。たとえば、注文 [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 | 品目の変更が INSERT アクションの場合は返されます。オブジェクトのコミットステータスと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 文字列値と同じです。 データタイプ:文字列 |
| エラー | commitInstance メソッドの失敗を説明するエラーメッセージ。要求が成功した場合、このパラメーターは空の文字列を返します。 データタイプ:文字列 |
| headerID | 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 commitOutput = service.commitInstance(effectOutput);
//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"
]
}