您在此处:
InsProductService:getRatedProducts
使用此服务获取一个或多个产品的阵列,使用附加到这些产品的评级程序定价。此服务还包括额外的功能,例如税费计算、筛选和性能优化。
工作原理
-
该服务搜索 Salesforce,以检索有效开始和结束日期内的一组有效产品。有关更多信息,请查看下面的 effectiveDate。
作为查询的一部分,服务使用在筛选器选项中传递的条件来获取一组初始产品。从 Salesforce 中提取的数据包括产品的资格规则和评级程序、保险项目规格、保险方规格、承保范围规格、评级事实规格及其所有属性。
-
根据资格规则评估初始集中的每个产品,进一步减少产品集。
-
在输入 JSON 中搜索
userInputs密钥并检索密钥值。userInputs是评级程序用于获取产品价格的输入数据集。服务根据产品评级输入映射评估此对象,以创建评级程序所需的输入 JSON。根据产品定义和评级配置,您可以以不同方式格式化
userInputs。为了防止错误,请筛选所有使用相同类型userInputs格式的产品。 -
对步骤 2 中创建的集中的每个产品进行评级。它使用步骤 3 中的输入 JSON 调用产品的关联评级程序。
-
返回产品对象的数组,其中包含每个产品的总价格和总保险金额。
每个返回的产品对象还包括评级程序中的输出 JSON,作为
CalculatedPriceData的值。如果在产品上设置了公式,服务还会设置price和totalSumInsured。请记住:
-
如果单个属性同时设置了“设置值”属性规则和“设置默认值”属性规则,则
getRatedProducts仅应用“设置默认值”属性规则。 -
作为最佳实践,在设置属性规则表达式时,请勿在较低级别的结构中引用属性值。
-
远程选项
选项 |
说明 |
|---|---|
|
在设置 例如,对于为多辆汽车投保了多个司机的汽车保险单,需要将 |
|
将此选项设置为在层次结构的给定级别中具有多个子规格、没有孙规格且只有一个根级别评级程序的产品的 对于不符合所有这些条件的产品,省略此选项。 要格式化此类产品的 |
|
包含在 只有计算程序使用的输入键在结果中具有值。 |
|
将此选项用于小组评级。 |
|
PartOfAProductName 如果使用此选项,服务仅会获取名称包含您提供值的产品。 |
|
productField1、productField2。 按照您指定的顺序对服务获得的产品进行排序。 您可以使用具有此选项的 如果不为此选项指定值,服务会按名称升序排序返回的产品。 |
选项 |
说明 |
|---|---|
|
仅返回满足筛选器中提供的属性值的产品。 |
|
默认为今天的日期。 服务拉取 该服务还使用该 |
|
使用带有冒号的 API 名称,后跟值或变量。例如,在 OmniScript 中,变量可以是元素的名称,例如输入选项列表。 使用逗号分隔多个筛选器参数:
筛选器可以包括 |
|
默认为 在输出 JSON 中,与产品阵列一起,添加 不包括子产品属性。 |
|
输入任何有效的 Salesforce SOQL 语句作为此选项的值。 当您需要此服务以在搜索产品时查看多选列表字段时,请使用此选项。 例如,该语句 重要
从筛选器密钥中删除对 例如,如果您在筛选器中有 |
选项 |
说明 |
|---|---|
|
默认为 将此选项设置为 如果产品不使用可选承保范围,请使用默认设置 |
|
默认为 在 |
|
在设置为 在设置为 当没有 UI 使用服务的结果时,此选项非常有用。例如,如果您在批处理模式下运行包含此服务的集成程序。 |
|
默认为 通过使用相同的评级程序按产品分组评级程序呼叫,优化评级呼叫。它使用输入对象数组进行一次评级调用。 这在提取大量产品列表时非常有用。多个评级调用可以达到 SQL 限制。评级程序架构已优化,以处理一系列输入对象,并最大限度地减少所需的 SQL 查询数量。 |
|
仅当您也将 |
|
如果为真,服务将返回没有定价的产品。 |
|
“ProductClassName1,ProductClassName2” 产品类名称的逗号分隔列表。将产品列表限制为这些产品类。 |
|
默认为 此选项通过减少堆大小来提高性能。 如果您使用的评级程序仅在根产品级别定义,您可以将此选项设置为 |
选项 |
说明 |
|---|---|
|
|
|
默认为 在设置为 相反,您必须在输入映射或选项映射的关键 |
|
在设置为 在设置为 |
|
如果您有需要服务运行的验证规则,设置为 |
选项 |
说明 |
|---|---|
|
指定服务提取到 UI 中的最后一个产品 ID。 将此选项与 |
|
确定服务在一次调用中返回到 UI 的产品数量。 |
输入 JSON
InsProductService: getRatedProducts 在输入 JSON 中查找userInputs键。根据产品定义和评级配置,使用适当的userInputs格式。该服务一次仅接受一种 userInputs 格式。
-
为每个根产品使用单一评级程序的产品格式化
userInputs。 -
对于 getRatedProducts,每个产品的多个评级程序或任意级别的多个规格
使用产品层次结构中的多个评级程序或层次结构中任何级别的多个子规格的产品的格式
userInputs。
输出 JSON
该服务返回一个或多个产品对象的数组。有关此对象的更多信息,请查看产品 JSON 结构模型。
来自输入 JSON 的任何映射userInputs会作为映射属性的单个实例的userValues键添加到产品对象中。
对于每个产品,评级程序计算的输出 JSON 会通过 CalculatedPriceData 密钥添加到产品中。如果在产品上设置了定价公式,Price的值将设置为其计算值。如果在产品上设置了总保险公式,TotalInsured值将设置为其计算值。
在此示例中,定价公式在产品上设置,但总保险公式未设置。将CalculatedPriceData添加到评级程序的结果中,然后根据公式计算价格。总保险公式不会出现在数据中,TotalInsured也不会出现。
{
"totalSize": 2,
"records": [{
"displaySequence": -1,
"CalculatedPriceData": {
"ID": "1",
"basePremium": 719,
"premGenlLiab": "356"
},
"Id": "01t6A000000FshIQAS",
"Name": "Economy Business",
"Family": "Commercial Lines",
"ProductCode": "bop-ECON",
"LineOfBusiness__c": "Property & Casualty",
"Type__c": "BusinessOwners",
"IsRecommended__c": false,
"RecordTypeName__c": "Product",
"IsConfigurable__c": true,
"PricingFormula__c": "basePremium + premGenlLiab",
"Term__c": "Annual",
"productId": "01t6A000000FshIQAS",
"Price": 1075,
"childProducts": {
...
},
"attributeCategories": {
...
}
},
{
...
}
}filterAttrValues Key
includeFilterAttrValues选项将产品阵列放在ratedProducts节点中,并添加filterAttrValues结果。
{
"result": {
"filterAttrValues": {
"covType": {
"listOfValues": [
"Superior",
"Economy"
],
"valueDataType": "Text",
"attributeName": "Type",
"categoryName": "Policy Terms"
},
"covDeductible": {
"listOfValues": [
"1000",
"250"
],
"valueDataType": "Currency",
"attributeName": "Deductible",
"categoryName": "Policy Terms"
}
},
"ratedProducts": {
"totalSize": 2,
"records": [{
"displaySequence": -1,
"CalculatedPriceData": {
"ID": "1",
"basePremium": 719,
"premGenlLiab": "356"
},
"Id": "01t6A000000FshIQAS",
"Name": "Economy Business",
"Family": "Commercial Lines",
"ProductCode": "bop-ECON",
...,
"Price": 1075,
"childProducts": {
...
},
"attributeCategories": {
...
}
},
{
...
}
}
}
}每个可筛选属性会添加到对象,其中密钥设置为属性代码。每个筛选器属性的值是包含以下内容的对象:
关键字 |
值 |
|---|---|
|
属性的名称。 |
|
类别的名称。 |
|
数组中产品的可能值列表。 |
|
属性的数据类型,例如文本或货币。 |
税费
如果税费使用该服务,计算的税费将以三种不同的方式显示在 JSON 记录中:
-
如果记录已计算税费,它们将作为列表存储在
taxesAndFees字段中。{ "taxesAndFees": [{ "Id": 1, "calculatedAmount": 10, "Type__c": "Tax" }, { "Id": 2, "calculatedAmount": 15, "Type__c": "Fee" }] } -
如果记录已计算其自己或子项的税额,则其自己及其子项的计算税额总和将存储在
taxAmount字段中。{ "taxAmount”: 25 // 10 from self, 15 from children} -
如果记录已计算自身或子级的费用,则自身及其子级的费用总和将存储在
feeAmount字段中。{ "feeAmount”: 30 // 15 from self, 15 from children}
JSON 输出示例,其中包含子记录以及根记录的税费,如下所示:
{
"Id": 1,
"productName": "Product",
"taxesAndFees": [{
"Id": 1,
"calculatedAmount": 10,
"Type__c": "Tax"
}, {
"Id": 2,
"calculatedAmount": 15,
"Type__c": "Fee"
}],
"taxAmount": 25
"feeAmount": 30
"childProducts": {
"records": [{
"Id": 2,
"productName": "Insured Item",
"taxesAndFees": [{
"Id": 3,
"calculatedAmount": 15,
"Type__c": "Tax"
}],
"taxAmount": 15
}, {
"Id": 3,
"productName": "Coverage",
"taxesAndFees": [{
"Id": 4,
"calculatedAmount": 15,
"Type__c": "Fee"
}],
"feeAmount": 15
}]
}
}
- getRatedProducts 的每个产品一个评级程序
为每个根产品使用单一评级程序的产品格式化InsProductService:getRatedProducts userInputs。 - getRatedProducts 的每个产品的多个评级程序或任意级别的多个规格
使用产品层次结构中的多个评级程序或层次结构中任何级别的多个子规格的产品的格式InsProductService:getRatedProducts userInputs。
