跳转到主要内容
条件映射编辑器支持向目标节点添加条件,以便仅在条件为真时它们才包含在输出文档中。该编辑器还允许根据源的值设置目标节点的值。可以通过添加单个规则和/或规则组来构建复杂的条件,然后指定满足条件时映射应采取的操作。 要打开编辑器,请将鼠标悬停在目标文档中的节点上,然后单击过滤器 filter 图标。 为条件命名,然后单击添加规则或添加组。值字段会预先填入源元素的 XPath。如果需要选择其他源值,请单击该字段以打开下拉列表。 构建规则时,请使用下拉菜单进行选择。可以从以下选项中进行选择:
  • 输入 XML
    • 值:正在评估的 XPath 处的值
    • 值类型:值的数据类型(字符串、数字、日期时间)
    • 出现次数:XPath 在文档中出现的次数
    • 索引:表示正在评估的 Foreach 循环当前迭代的索引
  • 消息头
    • 值:正在评估的消息头的值
    • 值类型:值的数据类型(字符串、数字、日期时间)
  • 变量
    • 值:被评估变量的值
    • 值类型:值的数据类型(字符串、数字、日期时间)
每条规则的右侧(运算符之后)都有自己的源下拉列表。除了左侧可用的源之外,右侧还包含仅在右侧可用的静态值:
  • 静态值(默认):用于输入字面比较值的自由文本输入框。仅在右侧可用。
  • 输入 XML
  • 消息头
  • 变量
右侧下拉列表有以下限制:
  • 当运算符为包含、开头是、结尾是、匹配 glob、匹配正则表达式、在列表中或不在列表中时,或者当左侧类型为索引或出现次数时,源下拉列表会锁定为静态值
  • 当运算符不需要值(为空、不为空、为 null 和不为 null)时,右侧会完全隐藏
  • 当左侧类型为值类型时,右侧下拉列表会显示一组固定选项:字符串、数字或日期时间
为条件选择 XPath 时,编辑器会显示文档的树形表示形式,以便可以轻松找到所需的 XPath,如下图所示。 可以对规则和组重新排序。单击手柄 handle 并将对象拖动到新位置。 完成条件定义后,使用右侧窗格指定满足条件时应发生的情况。 选择以下状态:
  • 成功
  • 警告
  • 错误
选中发送通知并填写发送给和主题字段,以发送有关条件状态的电子邮件。
单击配置警报会在新的浏览器选项卡中打开通知页面,可以在其中配置电子邮件设置。如果这些配置不正确,电子邮件通知将失败。
最后,使用右侧窗格的 Else 部分来指定当条件不满足时应该发生什么。 使用 否则,将操作设置为 下拉列表选择是否:
  • 排除元素,从映射中完全排除元素
  • 映射值,无论如何都映射该值
  • 分配不同的值,分配不同的值(保存条件后定义为表达式或自定义脚本)
状态和通知选项的工作方式与顶部部分相同。 保存条件时,它会出现在映射编辑器中,并且其行为方式与映射中任何其他叶节点相同。可以从源端拖放元素,或为其编写表达式或自定义脚本。 条件逻辑也可以使用前瞻语法来实现。父元素通常由子元素限定,子元素会为父元素中的值提供上下文。在这些情况下,使用前瞻语法可能比创建多个条件来排除不需要的值更容易。有关使用前瞻语法的更多详细信息,请参阅前瞻。

脚本模式

可以使用 ArcScript 语法来指定自定义条件,只需打开右上角的“脚本模式”开关即可。

映射条件中的脚本模式

打开脚本模式后,使用窗口编写自定义条件,然后按照上述方法使用右侧窗格:
  • 设置消息的状态
  • 发送通知
  • 将 Else 条件添加到映射中,包括在不满足条件时从映射中排除元素
  • 编辑器会在输入时验证条件。如果看到无效条件消息,则表示存在某种语法问题,需要解决。
  • 如果创建的 ArcScript 条件无法在设计器中呈现,则当切换回设计器模式时,系统会警告 知行之桥 无法在设计器模式下呈现此配置。如果切换到设计器模式,将丢失对现有配置的所有更改。

示例

自定义条件编辑器的一种常见用途是比较源文档中的两个动态值(而不是将单个动态值与静态值进行比较)。例如,可以使用以下自定义条件来查看源 XML 中的两个值是否相等: '[xpath(element1)]' == '[xpath(data/element2)]'
上例中的单引号是必需的。
还可以使用 ArcScript 格式化器在自定义条件中执行布尔逻辑,如下例所示: [xpath(element1) | equals([xpath(data/element2])])] 请注意,此语法不需要单引号。 以下示例将 XPath 与映射中先前设置的 _map 变量进行比较。def(0) 格式化器会在比较运行之前,为缺失的 XPath 值提供回退值。 [xpath(FST/FST01) | def(0) | greaterthan([_map.OverUnderShipQty])]
此示例使用脚本模式,因为设计器右侧的源下拉列表中无法使用 _map 变量。对于其他动态值之间的比较(例如 XPath 与 XPath,或 XPath 与消息头或变量),可以在条件编辑器设计器中使用右侧的源下拉列表,而无需使用脚本模式。
此示例根据相对于今天的日期进行筛选。当需要检查某个日期字段是否落在相对于当前日期的时间范围内时,可以使用此模式。例如,如果 Datetime 为 2026-10-05,而今天是 2026-09-28,则 datediff('day') 返回 7,因此满足条件。 [xpath(Datetime) | datediff('day') | isbetween(0, 15)] datediff('day') 返回日期字段与今天之间相差的天数:未来日期为正值,过去日期为负值。isbetween(0, 15) 包含上下两个边界值,因此该条件匹配从今天到 15 天后的日期,而过去日期对应的负值不在该范围内。 有关所有 ArcScript 格式化器的详细信息,请参阅格式化器。