跳至主要内容
Administrator Guide
上次更新时间 :2023-06-23
概念:错误处理程序构成

概念:错误处理程序构成

Workday Studio 在“Palette”
中提供了 3 种不同的错误处理程序
名称
函数
send-error
让您能够使用标准构成和步骤来处理错误。一种常见的模式是通过调用“PutIntegrationMessage”
通用构成,使用“send-error”
向集成事件报告错误。
log-error
可将当前错误记录到输出日志中。包括错误消息和 Java 异常的堆栈跟踪。如果无需逐个显示集成事件中的错误,但您想在错误发生时记录消息,请使用此处理程序。避免记录大型消息,因为它们会降低性能,而且可能会被截断,从而导致诊断数据丢失。
custom-error-handler
让您能够提供一个使用 Java 来处理错误的 Spring Bean。如果处理错误时需要复杂的 Java 代码,请使用此处理程序。
您可以将错误处理程序添加为中介构成的子元素,或程序集中的单个元素。添加到中介构成的错误处理程序位于本地。程序集中的错误处理程序是全局性的。
当 Workday 在 Workday Studio 集成中遇到错误时,它会停止正常处理操作并展开已处理的构成链,以便查找要调用的错误处理程序。Workday 始终会先尝试在本地处理错误。如果没有可用的本地错误处理程序,则交由全局错误处理程序来处理。如果您希望精细控制发生错误时的处理方式,或者需要报告集成在出错时所执行操作的详细相关信息,请使用本地错误处理程序。可将全局错误处理程序视为故障保护。
如果所有错误处理程序都已触发,但仍有错误未被标记为已处理,则 Workday 会处理相关消息,根据异常生成错误,并将程序集标记为已终止。它会将集成描述为“已完成但有错误”。
需要注意的默认行为:
  • 本地错误处理程序仅处理其父级中介构成中出现的错误。但是,它们也可以处理下游构成中的错误。要启用此行为,请将包含错误处理程序的中介构成的“Handle Downflow Errors”
    属性设置为“true”
  • 当您调用错误处理程序时,Workday 会将错误标记为“已处理”。但是,如果您将错误处理程序的“Rethrow Error”
    属性设置为“true”
    ,则 Workday 不会清除该错误,因此,该错误将由下一个范围内上游错误处理程序或全局错误处理程序进行处理。使用此模式可在本地报告错误的详细信息,但可在程序集中的较高级别处理整体失败或完成情况。
  • 当 Workday 处理错误时,它会从调用的错误处理程序重新启动消息处理,继续沿着响应路径找到出错的元素。但是,您可以指定从引发错误的元素处继续进行处理。要启用此行为,请将包含错误处理程序的中介构成的“Continue After Error”
    属性设置为“recover”
    。如果错误处理程序调用的代码可以更正错误条件,从而能够成功重试失败的操作,请使用此行为。
您可以通过在“Properties”
视图中添加 MVEL 条件表达式,来进一步控制错误处理程序。当存在条件表达式时,仅当它们的计算结果都为 true 时,Workday 才会调用错误处理程序。
您可以使用强制引发错误
context.setError
context.SetException
MVEL 或 Java 代码中的方法。当使用
setError
方法,您可以配置一个可由错误处理程序中的条件表达式检测到的错误编号。如果您在本地处理错误,但希望将错误类型的某些详细信息传递给上游错误处理程序进行常规处理,则可以使用此技巧。
您还可以使用“Route”
构成来处理错误:
  • “failover-strategy”会尝试使用路由,如果发生错误,则会执行故障转移路由,并将错误标记为“已处理”。
  • 通过
    custom-strategy,
    您可以提供一个名为“”的斯java - java - java
    RoutingStrategy
    接口,其具有
    isHandleError
    方法。使用此方法可指定该策略处理错误。