基本 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字段。
如果业务组件字段具有上述数据类型之一,适配器会将其公开为 .Net 中的 xsd:dateTime 类型 (,这会映射到 DateTime 类型) 。
如果业务组件字段没有数据类型,适配器将在 .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 属性指定的值。 这是从字段定义存储库获取的。 如果未在字段定义存储库中指定长度,则会发布上表中括号中指定的值。
与 Siebel 数据类型相关的特殊情况
以下规则根据使用它们的操作的上下文影响业务组件字段方面。 这些规则仅适用于 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 业务组件获取有关数据类型、长度、精度和缩放的信息。