M3 客户定义的字段 (CDF)

本文档描述了在 M3 中使用客户定义的字段(以下称为 CDF)的概念。CDF 用于将客户的专属信息添加到 M3 数据库中,而无需进行修改。CDF 也可以直接用在可配置列表、专项报告、XML 输出等对象中。

背景

M3 Business Engine 包含用于选择信息类型的各种用户自定义字段。但是,这些字段类型有限,往往太少而无法满足所有需求。添加 CDF 功能是为了补充这些字段,并最大限度地减少向 M3 数据库添加附加信息时的修改需求。

CDF 的定义

用于定义要使用的 CDF 的元数据是通过程序客户定义字段。打开 (CMS080) 添加的。该元数据包含一些要扩展的 M3 表(请参阅下文)、信息类型(字符串、数字信息等)以及所使用的长度、小数位数等。用户还可以设置在列表、报表等对象中用作列标题的 CDF 描述。

该信息的初始选择由用户在下拉列表中选择尽可能接近最终定义的字段来完成。用户可以选择各种类型,例如复选框、日期和数字字段,以及不同长度的字母数字字段。

请注意,必须定义 CDF 的元数据才能将信息添加到 CDF 表中的字段内,或者才能在 M3 列表、报表等对象中使用 CDF 信息。

添加 CDF 以扩展 M3 标准信息

用户指定要扩展的 M3 表的名称,然后选择要使用的字段类型。

添加与 M3 标准信息无关的 CDF

此类型的 CDF 用于存储未关联到或直接与标准 M3 信息相关的信息。它也用于存储比标准 M3 信息需要更多或更少键的相关信息。

为了添加此类型的 CDF,用户可以选择要存储信息的表(CUGEX2 或 CUGEX3),然后可以按客户扩展参考的形式定义信息的 ID,再选择要使用的字段的类型。稍后客户扩展参考将用作分隔同一个表中存储的不同信息的键。这应该以方便知道所存储信息的类型的方式进行命名。

定义有效值

CDF 定义还可以包含用于验证所输入值的规则。这包括一个有效范围和数字值的倍数(例如,有效值为 4-12,但每个值必须可以被 4 整除,这意味着只有 4、8 和 12 有效)以及数字和字母数字值的列表。后者通过一个单独的程序进行维护:客户定义的字段值映射。打开 (CMS081)请注意,CDF 类型的日期的输入值必须作为 M3 系统日历中的有效日期存在。

维护 CDF 字段

存储为 CDF 的信息通过 CDF API (CUSEXTMI) 进行维护。此 API 会根据 CDF 元数据中定义的规则执行验证。这些信息也符合将其存储在 M3 数据库中的既定方式。

CDF 字段的用法

存储为 CDF 字段的信息可以用作 M3 的一部分,而不需要任何特殊编码或修改。其例外情况为,必须将 CDF 添加到详细的 M3 Business Engine 屏幕或用作现有或新业务逻辑的一部分时。

  • 可在可配置列表、自定义列表、可配置 XML 和专项报告中使用 CDF

    有两种不同的用例,如下所示:

    1. 创建列表或报表时 CDF 已存在

      创建新的可配置列表或报表时,已为列表/报表的主表定义的 CDF 将自动添加到列表或报表中作为可用字段。当用户在列表或报表中定义列时,可以直接使用它们。如果稍后将新的 CDF 添加到主表中,则必须人工将其添加为可用字段(这是根据相关表的定义执行的)。

    2. 在创建列表或报表后添加 CDF

      当 CDF 添加到已存在列表或报表的主表中时,必须人工将其作为相关表添加到每个要使用它们的列表和报表中。用户添加 CDF 表 (CUGEX1) 并验证默认值。必须使用同一过程添加与主表无关的 CDF。唯一的区别是,用户必须知道要使用 CUGEX2 还是 CUGEX3 表。用户还必须选择要用于检索正确信息的扩展参考。

  • 在 API 和基于搜索的提示中使用 CDF

    另外,对于 API 交易,通过 CMS100MI 和搜索提示管理 CDF 的方式与上述内容相同。这些都基于自定义列表程序信息浏览器类别。打开 (CMS010)

  • 在较旧的不可配置列表中使用 CDF

    目前还不支持此功能,并且由于存在性能问题,不推荐使用 UI 脚本来解决此问题。其中一个变通方法是通过 (CMS010) 中的自定义列表为已用表创建一个新列表。

  • 在详细的 M3 屏幕上使用 CDF

    目前不支持此功能。推荐的解决方案是使用通过 CMS080MI 和 CUSEXTMI 来检索/更新相关信息的 UI 脚本。

  • 在 M3 Mashup 中使用 CDF

    推荐的解决方案是始终使用 CDF API (CUSEXTMI) 来管理信息并对所存储的信息执行任何维护。

  • 使用 CDF 作为 M3 业务逻辑的一部分

    这需要修改代码。其替代方法是通过其他编码框架(包括 Mongoose 等)编写 M3 标准以外的功能。任何更新 M3 CDF 的信息都通过 CDF API 添加。

  • 将 CDF 与 Enterprise Search 结合使用

    CDF 信息是在 IES 中建立索引的标准数据集的一部分,可用于没有任何特定要求的筛选。请注意,已建立索引的表包含许多扩展表或不同类型的不相关数据的信息。要消除错误匹配,搜索查询应始终包含文件的名称或扩展参考。还需要注意的是,必须使用键搜索。打开 (CMS030) 来搜索 CDF。应该为每个表扩展创建特定的键搜索,并在键搜索中嵌入所使用的表名作为预定义查询的一部分。还必须在字段别名。打开 (CMS031) 中创建别名,作为标准表键与扩展表键之间的转换。应将别名限制为针对特定表的 CDF 键搜索。

CDF 在 M3 数据库中的技术存储

存储为 CDF 的信息由 M3 数据库中的三个特殊 CDF 表进行管理。因此,如果 CDF 信息用于扩展标准表,则不会将其存储在原始表中,而是在单独的数据库访问中进行检索。以下是这些表的名称:

  • CUGEX1:用于使用 CDF 扩展 M3 标准表
  • CUGEX2:用于存储与 M3 无关的数字信息
  • CUGEX3:用于存储与 M3 无关的字母数字信息

存储为 CDF 的信息存储在 M3 数据库中扩展表的 CUGEX1 表内,或者对于无关信息,存储在 CUGEX2/CUGEX3 中。CDF 信息存储在 CDF 定义中选择的字段内。CUGEX1 表中的扩展信息使用扩展表名称存储为第一个键(在 FILE 字段中)。其余键的设置与扩展表的主键相同。无关信息存储在 CUGEX2 或 CUGEX3 中,具体根据定义 CDF 时的选择。第二个键是定义期间同时选择的客户扩展参考。其他键由更新控制,并且未进行验证。

限制

CDF 最多可以使用八个键来分隔信息。这意味着,无法扩展包含八个以上主键的 M3 表。

客户定义的字段 (CDF) 有一个限制,即只在主数据表中强制使用。在创建或更新以事务数据表为目标的 CDF 时,您会看到错误和警告消息。

最初,此限制适用于以下表:
  • CINACC
  • CRACTR
  • FPLEDG
  • FSLEDG
  • FGLEDG
  • MDOPLP
  • MGLINE
  • MGHEAD
  • MITPLO
  • MITTRA
  • MHDISH
  • MHDISL
  • MHPICH
  • MHPICL
  • MMOPLP
  • MMOHED
  • MMOMAT
  • MMOOPE
  • MPHEAD
  • MPLINE
  • MPOPLP
  • ODHEAD
  • ODLINE
  • OINACC
  • OINVOH
  • OINVOL
  • OOCHRG
  • OOHEAD
  • OOLINE
  • OOLICH
  • OPROMT
  • OPROML
  • OSASTD
  • OSBSTD