AEMaaCS中的批量翻译作业中的自定义PageEvent处理程序间歇性失败
在Adobe Experience Manager as a Cloud Service (AEMaaCS)中,批量翻译作业完成后无法始终触发已翻译页面的自定义后处理。 因此,即使翻译成功完成,某些翻译页面也不会运行别名更新和预览复制。 在批量处理期间,当自定义逻辑无法检测到已完成的转换时,会出现此问题。 要解决此问题,请使用支持的作业级别API检测已完成的翻译。
描述 description
环境
- 产品:Adobe Experience Manager as a Cloud Service (AEMaaCS) — 站点
- 方案:使用第三方翻译连接器(如Lionbridge)执行的批量翻译作业
- 约束:问题间歇性出现,仅影响特定环境,包括暂存环境和生产环境
问题/症状
- 批量翻译完成后,别名设置不会应用于某些已翻译页面。
- 对于某些已翻译的页面,不会触发预览复制。
- 此问题间歇出现,不会影响批量翻译作业中的每个页面。
- 所有受影响的页面都会显示完全翻译的版本,并显示正确的JCR属性。
- 对于受影响的页面,将不会调用事件处理程序和相关后处理管道。
解决方法 resolution
要解决此问题,请执行以下步骤:
- 查看自定义PageEvent处理程序使用的检测逻辑,并注意当前实现错误地依赖于
PageModification.getUserId()与特定服务用户匹配以及检测修改路径中的内部属性,如cq:translationStatus。 - 请注意,在AEM as a Cloud Service上,
PageModification.getUserId()可以返回oak:unknown,这使得基于用户的检查不可靠,并且由于批处理和异步翻译回写,内部属性(如cq:translationStatus)并非始终存在于所有修改事件中。 - 更新翻译完成检测方法,避免依赖内部或未记录的JCR属性或特定用户ID,因为这些机制不受支持并且可能会发生更改,而是使用受支持的信号,例如翻译作业事件以及公共翻译REST API。
- 通过通过Adobe Experience Manager API记录的支持翻译REST API端点查询翻译作业状态,并使用返回的作业状态触发所需的后处理操作(如别名更新或预览复制),在页面级别以编程方式检测已完成的翻译。
- 请注意,如果与HTTP调用相比,更喜欢使用内部Java API,则目前不存在为此目的而支持的内部Java API,并且已向Adobe工程部门提交增强请求以解决此限制。
- 验证在更新检测逻辑以仅依赖支持的API和信号后,所有预期的后处理操作在批量翻译作业之后是否都可靠地运行。
注意:
- 不支持依赖内部JCR属性更改或特定服务用户来处理事件,并且这些更改可能会因平台更新而中断。
- 公共翻译REST API当前支持现成的翻译项目,在未来的增强功能之前,对第三方连接器项目的支持可能仍然有限。
3d58f420-19b5-47a0-a122-5c9dab55ec7f