基本 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) 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\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 (:

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

以下是 Business Service 方法参数类型:

Date
与DTYPE_DATE相同。

Number
与DTYPE_NUMBER相同。

字符串
与DTYPE_TEXT相同。

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

Integration 对象
与层次结构相同。

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

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

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

XML 架构类型支持的 Facet

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

Siebel 类型 方面
DTYPE_BOOL
DTYPE_CURRENCY 精度 (22) ,刻度
DTYPE_DATE (\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。

  • 仅当两者都发布缩放方面:

    • Precision 属性已发布

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

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

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

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

即使业务组件字段在 Siebel 系统中标记为 REQUIRED,但为该字段设置了默认值或后默认值,Siebel 适配器也会将该字段标记为可选。 因此,如果用户提供要插入或更新的值,适配器将处理该值。 如果未提供任何值,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 适配器的消息和消息架构