虚拟实体的实体建模
要开始使用虚拟实体的流程,首先需要从目录中查询它们,用户可以在目录中选择一个或多个实体。 然后,Dataverse 生成的请求即是您选择的每个财务和运营应用实体的相应虚拟实体。
当您第一次为财务和运营应用实体创建虚拟实体时,系统会尝试在 Dataverse 内的相应虚拟实体中创建财务和运营应用中的每个字段。 理想情况下,存在一对一的关系,财务和运营应用实体中的每个字段都存在于 Dataverse 实体中。 通常情况下,除非财务和运营应用与 Dataverse 之间支持的数据类型不匹配,否则会出现这种情况。 如果出现不匹配,那么系统在集成调用期间执行的翻译步骤将与这些字段匹配。
下表显示了财务和运营应用中的数据类型以及它们在 Dataverse 中的建模方式。 每种类型都是特定的,根据类型的不同,可能存在或大或小的差异。
例如,系统在财务和运营应用中生成枚举 (enum),而在 Dataverse 中则为全局选项集。 然而,两个系统之间的枚举整数值无法保证稳定,您不应该依赖它们。 另一个例子是,财务和运营应用中的实数类型和长类型字段,在 Dataverse 中建模为小数数据类型。 因为这两种数据类型的精度和小数位数不匹配,所以需要包括其他行为注意事项。 您可以在实体建模页面中查看这些注意事项,以及有关数据类型和每种建模所需的转换的其他信息。
有关详细信息,请参阅实体建模。
财务和运营应用中的数据类型 | 在 Dataverse 中建模的数据类型 |
---|---|
实数 | 小数,可能不匹配,取决于精度范围 |
长 | 小数,精度等于 0(零) |
Int | 整数 |
字符串(非备忘录)、字符串(备忘录) | 字符串 - 单行文本。 字符串 - 多行文本 |
UTCDateTime | DateTime(DateTimeFormat、DataAndTime、DateTimeBehavior、TimeZoneindependent)空日期(在财务和运营应用中为 1900 年 1 月 1 日,在 Dataverse 中显示为空值) |
日期 | DateTime(DateTimeFormat、DataAndTime、DateTimeBehavior、TimeZoneindependent)空日期(在财务和运营应用中为 1900 年 1 月 1 日,在 Dataverse 中显示为空值) |
枚举 | 选择列表,系统生成财务和运营应用枚举 (enum),在 Dataverse 中则为全局选项集。 您可以使用外部名称属性值来完成系统之间的匹配。 不保证 Dataverse 中的枚举整数值在系统之间保持稳定。 因此,您不应依赖它们,尤其是在财务和运营应用中存在可扩展枚举的情况下,因为这些枚举也没有稳定的 ID。 如果有人更新使用 OptionSet 的实体,系统将更新 OptionSet 元数据。 |
除了数据类型之外,还可以为 Dataverse 中的虚拟实体建模。 系统会将来自财务和运营应用的实体键转换为数据实体 ID + RecID,以便为每个实体创建全局唯一标识符 (GUID)。 财务和运营应用中的每个实体键可以有各种数据类型的多个字段,其中 Dataverse 需要每个字段的字符串。 因此,在特定实体的转换和建模中,系统会将实体键上的字段格式化为每个键的字符串,通过它们之间的管道连接起来,在 Dataverse 中创建一个字符串。
该字符串类似于以下示例:strfmt of entitykey1|strfmt of entitykey2 |strfmt of entitykey3...(最大长度为 255 个字符)
Dataverse 要求每个实体都有主字段;使用实体键可以使用本字段。 这个主字段必须是字符串类型的单个字段,您可以在以下情况下在 Dataverse 中使用它:
为实体创建的默认视图包括主字段。
实体窗体上的快速视图包括主字段。
对另一个实体的查找将添加到页面中,并显示主字段中的数据。
由于 Dataverse 会以这种方式使用主字段,因此财务和运营应用中虚拟实体的主字段也使用财务和运营应用中相应实体的实体键。
需要为虚拟实体建模数据实体的另一个概念是关系,您要在 Dataverse 中启用它。 在财务和运营应用中,关系可建模为一对多或多对一关系。 在 Dataverse 中,存在关系的架构名称,您可使用相关实体的 GUID 来解析它们。 但是,要为财务和运营关系转换关系,系统会将关系生成为 GUID 字符串,然后使用主键来连接它们。
系统在生成虚拟实体时生成关系。 如果虚拟实体和只存在于 Dataverse 中的本地实体之间需要其他关系,那么在财务和运营应用实体上需要使用额外的 X++ 代码来创建和维护这些连接。