293.5. URI 和路径语法
以下示例演示了如何在 Java DSL 中调用 schematron 处理器。schematron 规则文件从类路径提供:
from("direct:start").to("schematron://sch/schematron.sch").to("mock:result")
以下示例演示了如何在 XML DSL 中调用 schematron 处理器。schematron 规则文件从文件系统中提供:
<route>
<from uri="direct:start" />
<to uri="schematron:///usr/local/sch/schematron.sch" />
<log message="Schematron validation status: ${in.header.CamelSchematronValidationStatus}" />
<choice>
<when>
<simple>${in.header.CamelSchematronValidationStatus} == 'SUCCESS'</simple>
<to uri="mock:success" />
</when>
<otherwise>
<log message="Failed schematron validation" />
<setBody>
<header>CamelSchematronValidationReport</header>
</setBody>
<to uri="mock:failure" />
</otherwise>
</choice>
</route>
提示
在哪里存储架构规则?架构规则可能会随着业务要求而改变,因此建议将这些规则存储在文件系统中。当 schematron 组件端点启动时,规则将编译到 XSLT 中,作为 Java 模板对象。这只执行一次来减去实例化 Java 模板对象的开销,对于大量规则集来说,这可能会产生昂贵的操作,并且假定进程通过 XSLT 转换 的四个管道。因此,如果您发生将规则存储在文件系统中,在更新时,您需要重启路由或组件。然而,在类路径中不会损害这些规则,但您必须构建和部署组件来获取更改。