IBM ODM 在创建 BOM 到 XOM 映射时导入动态域类

问题描述

我有一个使用 na Excel 文件创建的动态域类,以下每个值都返回一个字符串。值“MANUAL”具有标签“Manual”。 SegmentationResult 类位于 odm.dynamic 包中,如下所示:

Dynamic domain class

现在我在一个odm.Response 中定义了一个虚拟方法 isValuedRight,我需要在 BOM 到 XOM 的映射中使用这些值,如下所示:

BOM To XOM mapping

问题是我无法导入/使用这些值。我也尝试使用这些值:

return vysledekSegmentace != odm.dynamic.SegmentationResult.MANUAL

解决方法

问题在于 BOM 到 XOM 的映射是位于 XOM 之上的,这意味着它不能使用虚拟类和方法。

,

虚拟 BOM 成员(例如动态域类和值)在其他虚拟 BOM 成员的 B2X 代码中不可见。这可能是使用动态域的最大缺点,否则它非常有用。

但是,虚拟 BOM 成员在 BOM 功能中可用。 B2X 可以调用 BOM 函数。因此,您可能能够间接获得所需的行为。 BOM 函数不是面向对象的,它们的使用不是很广泛,我通常会避免使用它们,但它们在某些情况下很有用。

另一种选择是在 XOM 中定义 Java 枚举并使用“扩展器”类来扩充 BOM 类并提供底层 String 属性和强类型枚举属性之间的转换。不像使用动态域那么容易,但定义的值在整个 BOM 和 XOM 中都可用。