Loading
B2C Commerce 入门
粒度复制事件

粒度复制事件

当粒度复制任务完成、部分失败或完全失败时,B2C Commerce 系统会触发粒度复制事件。粒度复制在每个对象级别(产品、价格表、内容资产)而不是批量复制流程级别运行,因此其事件报告哪些对象 ID 成功,哪些失败。

可用于:B2C Commerce 版本 26.7 及更高版本。

事件 ID

事件 ID 描述 被解雇时
sf.cc.replication.granular.completed 粒度复制已成功完成 当粒度复制任务完成且没有目标错误且零个未启动、未发布和未失效的对象时
sf.cc.replication.granular.failed 粒度复制完全失败 当任务以错误状态完成且此执行中没有对象成功时
sf.cc.replication.granular.incomplete 完成粒度复制,成功与失败并存 当任务以错误状态完成,但此执行中至少有一个对象成功时

HTTP 标头

粒度复制事件使用《 B2C Commerce 事件的常见 HTTP 标头 》中记录的标准 Commerce Cloud 平台标头,并将 x-sf-cc-event-id 设置为粒度复制事件 ID(例如, sf.cc.replication.granular.completed)。

JSON 有效负载结构 — 公共字段

字段 类型 必填 描述
进程 ID integer 是 粒度复制运行的作业执行 ID
类型 string 是 始终是字面上的 颗粒; 将粒度复制事件与进程级复制事件区分开来
目标系统 string 是 目标系统名称,通常为“开发”或“生产”
州 string 是 作业的最终状态(请参阅细粒度流程状态)
成功 布尔 是 仅对 已完成的事件为 true; false 表示失败和不完整的事件
开始日期 string 是 作业开始的 ISO-8601 时间戳;未记录作业开始时间时为空字符串
结束日期 string 是 发出事件时的 ISO-8601 时间戳

特定于事件的字段

事件 其他字段
sf.cc.replication.granular.completed objects :成功完成的对象 ID 的每个可跟踪列表
sf.cc.replication.granular.failed errorState (始终 GRANULAR_REPLICATION_FAILURE )和 failedObjects :每个可跟踪的失败对象列表,每个对象都有一个 ID 和一个 状态
sf.cc.replication.granular.incomplete errorState (始终 GRANULAR_REPLICATION_INCOMPLETE)、 successfulObjects 和 failedObjects

精细的流程状态

状态 字段指示粒度复制作业的最终状态。

值 描述
已完成 所有排队对象均已完全导出、导入和废止
失败 作业以错误结束,并且没有生成任何成功的对象
不完整 任务以错误结束,但至少有一个对象成功(部分结果)

对象存储桶

Objects 、 successfulObjects 和 failedObjects 有效负载字段共享相同的三存储桶结构,每个可跟踪类型一个存储桶。

字段 类型 必填 描述
产品展示 阵列 是 每个产品条目
价格表 阵列 是 按价格表条目
内容素材 阵列 是 每个内容素材条目

成功的条目(in objects 和 successfulObjects )包含一个 id 字符串。失败的条目(在 failedObjects 中)包含 id 字符串和机器可读 的状态 代码。

故障状态值

每个 failedObjects 条目上的 状态 字段都包含机器可读代码。

值 描述
EXPORT_ERROR 此对象从源系统导出失败
IMPORT_ERROR 导入此对象的目标系统失败
NOT_FINISHED 对象已排队或已导出,但从未达到已完成状态
TARGET_ERROR 导出后,目标系统报告了此对象的错误
备注
备注 NOT_INVALIDATED 对象不会出现在 failedObjects 中。如果对象导入成功,但缓存失效步骤未完成,则该对象仍会在成功列表(objects 或 successfulObjects)中报告。非零作业级非无效计数是导致作业发出 sf.cc.replication.granular.incomplete 事件而不是 completed 事件的原因。

示例:成功的粒度复制事件


{
“processId”: 456,
“类型”:“GRANULAR”,“
targetSystem”:“生产”,“
状态”:“COMPLETED”,
“success”: true,
“objects”: {
“products”: [
{ “id”: “prod-001” }
],
“priceTables”: [
{ “id”: “prod-001@usd-prices” }
],
“contentAssets”: []
},“
startDate”:“2026-03-11T22:13:20Z”,“
结束日期”:"2026-03-11T22:13:25Z"
}

示例:粒度复制失败事件


{
“processId”: 456,
“类型”:“GRANULAR”,“
targetSystem”:“生产”,“
状态”:“失败”,“
成功”:false,“
errorState”:“GRANULAR_REPLICATION_FAILURE”,“
failedObjects”: {
“products”: [
{ “id”: “prod-001”, “status”:“TARGET_ERROR” }
],
“priceTables”: [],
“contentAssets”: []
},“
startDate”:“2026-03-11T22:13:20Z”,“
结束日期”:"2026-03-11T22:13:25Z"
}

示例:粒度复制事件不完整


{
“processId”: 456,
“类型”:“GRANULAR”,“
targetSystem”:“生产”,“
状态”:“不完整”,“
成功”:false,“
errorState”:“GRANULAR_REPLICATION_INCOMPLETE”,
“successfulObjects”: {
“products”: [
{ “id”: “prod-001” }
],
“priceTables”: [
{ “id”: “prod-001@usd-prices” }
],
“contentAssets”: []
},“
failedObjects”: {
“products”: [
{ “id”: “prod-002”, “status”:“IMPORT_ERROR” }
],
“priceTables”: [
{ “id”: “prod-003@eur-prices”, “status”:“NOT_FINISHED” }
],
“contentAssets”: []
},“
startDate”:“2026-03-11T22:13:20Z”,“
结束日期”:"2026-03-11T22:13:25Z"
}

粒度复制实施说明

  • type 是文本字符串 GRANULAR; 每个对象粒度复制流不同于进程级 复制、 发布 和 Code* 事件类型。
  • processId 是粒度复制作业执行 ID,而不是进程 UUID。
  • endDate 反映事件的发出时间,而不是最终任务结束时间。
  • 对于失败的事件,errorState 为 GRANULAR_REPLICATION_FAILURE ,对于不完整的事件,则为 GRANULAR_REPLICATION_INCOMPLETE。
  • 每个对象存储桶(products、 priceTables、 contentAssets )始终存在于有效负载中,即使为空也是如此。
  • 故障状态值是机器可读代码,而不是本地化文本。
  • 每个事件类型都由全局复制事件属性和每个事件功能切换(已完成、失败和未完成事件各一个)进行控制。如果禁用了其中任何一个,则不会发送该事件。
 
正在加载
Salesforce Help | Article