基本 Siebel 数据类型

本部分介绍 Siebel eBusiness 应用程序的 Microsoft BizTalk 适配器如何支持 Siebel 数据类型。

支持的 Siebel 数据类型

下表显示了 Siebel 适配器支持的 Siebel 数据类型,以及 BizTalk (XSD 类型) 和 WCF 服务模型 (.NET 类型) 中的适配器如何表示它们。 有关用星号标记的类型,请参阅表后面的说明。

数据类型 XSD 类型 .NET 类型 说明
DTYPE_BOOL xsd:boolean Boolean -
DTYPE_CURRENCY xsd:decimal 小数 -
DTYPE_DATE xsd:dateTime* DateTime 该值不得为协调世界时 (UTC) 。

- 对于 xsd:dateTime,值应遵循以下模式:“ (\d\d\d-\d-\d-\d\d) T (00:00:00) (.*) ”。
- 对于 DateTime 对象,DateTime.Kind 必须为 DateTimeKind.Unspecified

适配器将忽略时间分量。

对于出站消息,适配器执行运行时验证以确保指定的值不是 UTC (z 或 UTC 偏移量) 。 如果验证失败,适配器将引发异常。

当此类型公开为 xsd:string (时,根据以下) 介绍的规则:

- 格式由基础数据库确定。
- 不对 值执行运行时验证。
DTYPE_DATETIME xsd:dateTime* DateTime 该值可以包含日期和时间部分,并且不能是 UTC。

- 对于 DateTime 对象, DateTime.Kind 必须为 DateTimeKind.Unspecified

对于出站消息,适配器执行运行时验证以确保满足这些条件;如果验证失败,适配器将引发异常。

当此类型公开为 xsd:string (时,根据以下) 介绍的规则:

- 格式由基础数据库确定。
- 不对 值执行运行时验证。
DTYPE_ID xsd:string 字符串 -
DTYPE_INTEGER xsd:int Int32 -
DTYPE_NOTE xsd:string 字符串 -
DTYPE_NUMBER xsd:decimal 小数 -
DTYPE_PHONE xsd:string 字符串 -
DTYPE_TEXT xsd:string 字符串 -
DTYPE_TIME xsd:dateTime* DateTime 该值不得为 UTC。

- 对于 xsd:dateTime,值应遵循以下模式: (1753-01-01) T (\d\d:\d\d:\d\d) (.*) ”。
- 对于 DateTime 对象,DateTime.Kind 必须为 DateTimeKind.Unspecified

对于出站消息,适配器执行运行时验证以确保指定的值不是 UTC (z 或 UTC 偏移量) 。 如果验证失败,适配器将引发异常。

当此类型公开为 xsd:string (时,请根据下面介绍的规则) :

- 格式由基础数据库确定。
- 不对 值执行运行时验证。
DTYPE_UTCDATETIME xsd:dateTime* DateTime 该值可以包含日期和时间部分,并且必须是 UTC。

- 对于 xsd:dateTime,该值必须以 UTC ('Z' 表示法或 UTC 偏移量) 表示。
- 对于 DateTime 对象 ,DateTime.Kind 必须为 DateTimeKind.Utc

对于出站消息,适配器执行运行时验证以确保满足这些条件;如果验证失败,适配器将引发异常。

当此类型公开为 xsd:string (时,根据以下) 介绍的规则:

- 格式由基础数据库确定。
- 不对 值执行运行时验证。

以下是业务服务方法参数类型:

日期
与 DTYPE_DATE 相同。

Number
与 DTYPE_NUMBER 相同。

字符串
与 DTYPE_TEXT 相同。

层次结构
对应于 XSD 类型 xsd:string,对应于 .Net 类型 String。 在 XML 消息中,必须将其放置在 CDATA 节点中。

集成对象
与 Hierarchy 相同。

*适配器确定是使用以下方式使用 xsd:dateTime 还是 xsd:string 来表示业务组件中的DTYPE_DATE、DTYPE_DATETIME、DTYPE_TIME和DTYPE_UTCDATETIME字段。

  1. 如果业务组件字段具有上述数据类型之一,适配器会将其公开为 .Net 中的 xsd:dateTime 类型 (,这会映射到 DateTime 类型) 。

  2. 如果业务组件字段没有数据类型,适配器将在 .Net 中将其公开为 xsd:string (,这会映射到 String 类型) 。

XML 架构类型支持的方面

Siebel 适配器支持 XML 架构类型的以下方面。

Siebel 类型 方面
DTYPE_BOOL
DTYPE_CURRENCY 精度 (22) ,刻度
DTYPE_DATE (\d\d\d\d-\d\d-\d-\d\d) T (00:00:00) (.*)
DTYPE_DATETIME
DTYPE_ID MaxLength (15)
DTYPE_INTEGER 精度 (22)
DTYPE_NOTE MaxLength (16384)
DTYPE_NUMBER 精度 (22) ,刻度
DTYPE_PHONE MaxLength (40)
DTYPE_TEXT MaxLength (2048)
DTYPE_TIME (1753-01-01) T (\d\d:\d:\d:\d\d\d) (.*)
DTYPE_UTCDATETIME

下面是一些规则,用于控制分面及其值的发布方式和时间:

如果字段的 Length 属性设置为大于零且小于或等于上表中括号中指定的最大值 () :

  • “精度”分面的发布如下:

    • 如果为字段设置了 Precision 属性,则发布与 Precision facet 相同的值。

    • 如果未为字段设置 Precision 属性,则 Length 值将发布为 Precision facet。

  • 仅当同时有以下两种时,才会发布 Scale facet:

    • Precision 属性已发布

    • 字段的 Scale 属性设置为大于零且小于作为 Precision facet 的一部分发布的值

  • MaxLength 分面是为 Length 属性指定的值。 这是从字段定义存储库获取的。 如果未在字段定义存储库中指定长度,则会发布上表中括号中指定的值。

以下规则根据使用它们的操作的上下文影响业务组件字段方面。 这些规则仅适用于 INSERT 和 UPDATE 操作。 对于 QUERY 操作,所有业务组件字段都向用户公开。

Siebel 中标记为必需的业务组件字段

即使业务组件字段在 Siebel 系统中标记为必需,但为该字段设置了前默认值或后默认值,Siebel 适配器也会将该字段标记为 OPTIONAL。 因此,如果用户提供要插入或更新的值,适配器将处理该值。 如果未提供任何值,则 Siebel 使用默认值前/后默认值。

Siebel 中业务组件字段未标记为只读

如果业务组件字段未标记为只读,则 Siebel 适配器将其公开为可写字段。 但是,此规则有一些例外。 它们是:

  • 如果业务组件字段是 Siebel 中的 计算 字段,则它不会显示在“插入”或“更新”操作中,因为 Siebel 将自动处理 计算 字段。

  • 如果业务组件字段是通过另一个表) 上的显式联接 (表联接获取的,则它通常是只读的。 但是,如果数据是选取列表字段,则 Siebel 允许将数据写入此字段。 因此,如果业务组件字段来自显式联接,并且该字段不是选择列表字段,则它将不会显示在“插入”或“更新”操作中,因为适配器客户端无法将数据写入此类字段。

    业务组件中未指定的字段的数据类型

    如果未在业务组件中指定字段的数据类型,则 Siebel 适配器会使用以下试探法公开字段元数据。

  • 如果字段是特殊字段 (即选择列表或联接) ,则 Siebel 适配器将在目标业务组件中查找映射的字段。 如果该字段具有与之关联的类型,则 Siebel 适配器会将该类型公开为该字段的类型。 但是,如果该类型DTYPE_DATE、DTYPE_TIME、DTYPE_DATETIME或DTYPE_UTCDATETIME,则 Siebel 适配器会将字段公开为 xsd:string 类型。 如果映射的字段没有关联的类型,则 Siebel 适配器会将原始字段公开为 xsd:string 类型。

  • 如果字段不是选择列表或联接字段,则 Siebel 适配器会将它公开为 xsd:string 类型。

    父业务组件的数据类型、字段长度或精度不可用

    如果父业务组件的数据类型、长度或字段精度 (具有基于选取列表或 MVL) 的子业务组件的业务组件,则 Siebel 适配器将从选取列表业务组件或 MVL 业务组件获取有关数据类型、长度、精度和缩放的信息。

另请参阅

适用于 Siebel eBusiness 应用程序的 BizTalk 适配器的消息和消息架构