LeadtoCashCore - スコープ対象
LeadtoCashCore スクリプトインクルードは、Lead-to-Cash Core ライフサイクルで「lead-to-cash」ワークフローを調整するメソッドを提供します。
LeadtoCashCore スクリプトインクルードをインスタンスで使用できるようにするには、Lead to Cash Core (com.snd.l2c.core) プラグインを有効にする必要があります。このスクリプトインクルードは sn_l2c_core 名前空間に属しており、admin ロールが必要です。
「Lead-to-Cash」ワークフローでは、ソースエンティティをターゲットエンティティにマッピングします。エンティティは、テーブルのコレクションとして定義されます。ソース間マッピングを使用すると、ソースエンティティの構造またはコンテンツを、ターゲットエンティティに必要な構造またはコンテンツに合わせて変換できます。このスクリプトインクルードによって提供される機能は、Lead-to-Cash 機能で利用可能なエンティティマッピング機能を表します。詳細については、「Lead to Cash」を参照してください。
LeadtoCash スクリプトインクルードを使用してワークフローを完了するには、あるメソッドから次のメソッドにリターンパラメーターを渡します。通常、これらのメソッドは次の順序で呼び出します。
- LeadtoCashCore - createInstance(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams) - 指定されたエンティティのデータをフェッチします。たとえば、品目とその関連データを含む顧客の注文関連情報などです。
context パラメーターを使用して、スクリプトで 1 つ以上のヘッダーまたは行 ID を宣言します。このような複数選択のユースケースでは、出力 JSON には、各エントリが 1 つのエンティティを表すキーアイテムアレイが含まれます。
- 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(String sourceToTargetConfigID, Object context)」を参照してください。スクリプトで PrimitiveUtil() と getPrimitivesEPService() を指定すると、ユースケースに応じて createInstance()、delta()、effect()、commitInstance() スクリプトインクルードのいずれかを呼び出すことができます。
「Lead to Cash Core」ワークフロースクリプトの例
使用可能な Lead to Cash Core スクリプトインクルードはそれぞれ個別に文書化されていますが、次の例を参照して、これらのメソッドを組み合わせて Lead to Cash ワークフローを作成する方法を確認できます。
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() メソッドを使用して既存の販売済み製品情報を取得します。
- 次に、デルタ JSON を返す delta() メソッドを使用して、このソース JSON とダーティ JSON を比較します。
- 次に、 delta() JSON は、 effect() メソッドを使用して order 型の JSON に変換されます。
- 順序JSONは 、commitInstance() メソッドを使用してデータベースにコミットされます。
LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context)
PrimitiveUtil() ユーティリティメソッドをトリガーします。
LeadtoCashCore スクリプトインクルードで使用可能なメソッドのいずれかを使用するには、まず常に、getPrimitivesEPService() ユーティリティメソッドを使用してスクリプト内のスクリプト拡張ポイント PrimitiveUtil() を呼び出し、実装をトリガーする必要があります。
| 名前 | タイプ | 説明 |
|---|---|---|
| context | オブジェクト | オプション。属性値を表示し、一度に複数のインスタンスを呼び出すための追加パラメーターオプション。 |
| 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(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams)
ヘッダー、行、子行、特性、それらの属性などのさまざまな詳細を含む JSON オブジェクトを使用して、1 つ以上の指定されたエンティティのデータを返します。
createInstance() メソッドの出力 JSON は、delta()、effect()、commitInstance() などの Lead to Cash Core ワークフローの後続のメソッドで使用します。
getPrimitivesEPService() ブールパラメーター context.isMultiSelect を true に設定すると、createInstance() は一度に複数のカンマ区切りのヘッダー ID または lineID を渡すことができます。それ以外の場合は、一度に渡すことができる ID は 1 つだけです。詳細については、「LeadtoCashCore - getPrimitivesEPService(String sourceToTargetConfigID, Object context)」を参照してください。複数の lineID を持つ単一の headerID ユースケースは、 context.isMultiSelect を true に設定しなくてもサポートされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| additionalParams | オブジェクト | オプション。使用する追加パラメーター。 |
| additionalParams.skipLines | ブール | オプション。指定されたエンティティの品目をフェッチするかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| ヘッダー SysID | 文字列 | データを取得するエンティティのヘッダー sys_id。lineSysIDsパラメーターを指定しない場合に必要です。ヘッダー sys_ids渡さない場合は 、null を渡します。スクリプトで 1 つ以上のヘッダー sys_idsを指定するには、getPrimitivesEPService() ユーティリティメソッドで 注: 少なくとも 1 つの headerSysID または lineSysIDs パラメーターが必要です。 |
| ターゲットか | ブール | オプション。ターゲットエンティティデータをフェッチするかどうかを決定するフラグ。 有効な値:
デフォルト値:false |
| lineSysID | 文字列 | エンティティデータを取得するエンティティの品目sys_id。headerSysIDsを指定しない場合、およびエンティティ構造が販売済み製品などの品目で始まる場合は必須です。 スクリプトで 1 つ以上の品目sys_idsを指定するには、getPrimitivesEPService() ユーティリティメソッドで 注: 少なくとも 1 つの headerSysID または lineSysIDs パラメーターが必要です。複数の lineSysIDsを渡す場合は、すべてのレコードが同じ headerSysIDに属している必要があります。 |
| タイプ | 説明 |
|---|---|
| JSON オブジェクト | エンティティレコードの詳細を含む JSON。 データタイプ: オブジェクトのアレイ |
| _状態 | エンティティのアクティビティステータス。 可能な値:
デフォルト:active データタイプ:文字列 |
| 特性 | エンティティ特性のリスト。特性はエンティティによって異なる場合があります。 データタイプ: オブジェクトのアレイ |
| 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 | 「見込み顧客から現金へ」エンティティの特性レコードを含むテーブルの名前。 データタイプ:文字列 |
| アイテム | true に設定されている場合 context.isMultiSelect 選択されたオブジェクトのアレイが含まれます。 データタイプ:オブジェクトのアレイ |
| 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 | 品目エンティティのアクティビティステータス。 可能な値:
デフォルト:active データタイプ:文字列 |
| 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 | オブジェクト | ソース「Lead-to-Cash」エンティティの 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 の間で発生した変更を含むエンティティレコードの詳細を含むオブジェクト。 データタイプ: オブジェクト |
| lineItem | エンティティレコードの品目の詳細を含む 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。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [sn_ind_tmt_orm_order]。 データタイプ:文字列 |
| lineItems.characteristics.table | 特性レコードを含むテーブルの名前。 データタイプ:文字列 |
| lineItems.lineItems | 親品目の子品目。このオブジェクトの形式は lineItems パラメーターと同じです。 データタイプ:オブジェクトのアレイ |
| lineItems.sys_id | 関連アイテムレコードのSys_id。 データタイプ: オブジェクト |
| lineItems.sys_id.value | 関連アイテムレコードのSys_id。更新されたテーブルは、注文や仕様などのエンティティによって異なる場合があります。例:Order [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(String headerSysIDs, String lineSysIDs, Boolean isTarget, Object additionalParams)を使用して、エンティティのソース JSON を取得します。 |
| ターゲット JSON | オブジェクト | ターゲットエンティティの詳細を含む 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。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [sn_ind_tmt_orm_order]。 データタイプ:文字列 |
| lineItems.characteristics.table | 特性レコードを含むテーブルの名前。 データタイプ:文字列 |
| lineItems.lineItems | 親品目の子品目。このオブジェクトの形式は lineItems パラメーターと同じです。 データタイプ:オブジェクトのアレイ |
| lineItems.sys_id | 関連アイテムレコードのSys_id。 データタイプ: オブジェクト |
| lineItems.sys_id.value | 関連アイテムレコードのSys_id。更新されたテーブルは、注文や仕様などのエンティティによって異なる場合があります。例:Order [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)
指定された「Lead-to-Cash」エンティティの JSON をインスタンスにコミットし、更新された情報を含むステータスメッセージを返して、結果として「Lead-to-Cash Core エンティティ」テーブルを更新します。
| 名前 | タイプ | 説明 |
|---|---|---|
| ターゲット JSON | オブジェクト | コミットするターゲットエンティティの「glide_action」を含む JSON オブジェクト。ここで effect() メソッドの出力を渡すことができます。 注: 「glide_action」は、「Lead-to-Cash」エンティティのソース JSON とターゲット 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 の場合にのみこのパラメーターを返します。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [sn_ind_tmt_orm_order]。データタイプ:文字列 |
| dataObject._glide_action | 品目で発生した変更アクション。 可能な値:
データタイプ:文字列 |
| dataObject._source_object | 変更が適用されたソース JSON オブジェクト。オブジェクト構造はエンティティによって異なる場合があります。 データタイプ: オブジェクト |
| dataObject._source_object.sys_id | _glide_actionが適用されたソースエンティティレコードのSys_id。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [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。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [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。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [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。更新されたテーブルは、注文や仕様などのエンティティによって異なる場合があります。例:Order [sn_ind_tmt_orm_order]。 データタイプ:文字列 |
| dataObject.lineItems[0].table | 「見込み顧客から現金へ」エンティティに関連付けられたアイテムレコードを含むテーブルの名前。 データタイプ:文字列 |
| dataObject.sys_id | 関連付けられた品目レコードのSys_id。更新されたテーブルは、エンティティによって異なる場合があります。例:Order [sn_ind_tmt_orm_order]。 データタイプ:文字列 |
| dataObject.table | 「見込み顧客から現金へ」エンティティのレコードを含むテーブルの名前。 データタイプ:文字列 |
| displayMessage | UI でユーザーに表示されるメッセージ。表示メッセージは、 message 文字列値と同じです。 データタイプ:文字列 |
| エラー | 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 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"
]
}