2010-03-10 30 views
1

我有一个模式,它的所有元素都具有不同大小的最大长度属性。我对它进行了映射,并期望经常会超出最大长度。在映射期间自动截断为MaxLength

有没有办法告诉BizTalk自动截断而不必进入并为每个元素手动配置functoid?

除验证之外,是否有最大长度属性的用途?

回答

2

没有任何功能可以在BizTalk映射器中执行您想要的功能 - 您当然可以编写某种类型的预处理器或后处理器来执行此操作,但我建议您沿着错误的路径行进。

这将需要更多的工作,但我建议调查为什么你的源系统和目标系统有这样不同的模式。这可能是一个警告信号,您希望截断如此多的字段以便能够传递信息。

这将是值得你花时间来解决:

  • 这些是最大长度元素都严格必要的吗?
  • 截取任何字段是否会导致技术上或业务用户遇到问题?
  • 应该将这些字段中的某些字段拆分吗?也许一个系统定义了一个单一的100个字符的地址字段,而另一个系统有一个街道和一个城镇字段。

MaxLength属性定义了一个元素含量可以有多长。所以是的,它的唯一目的是为您的模式提供额外的验证规则。

W3C XML Schema definition

最大长度·提供了用于:

•至多与约束一·值空间·到 值的长度的单位,特定数目 其中 长度单位取决于{基本类型 定义}。

我更喜欢这个词验证 他们使用制约字 - 对我来说这更清楚地表达了你的XML架构是定义你的系统会通过什么其他系统合同的概念。诸如maxLength之类的方面(对于模式的读者)说,如果希望消耗此数据的系统通过比maxLength更长的时间,那么系统可能会中断。