映射文档改进 Mendix 平台 - 示例

跳到主要内容

映射文档改进 Mendix 6

映射文档 Mendix 帮助连接您的 Mendix 应用程序与其他系统(如外部 Web 服务)之间的转换。它们通过帮助您指定如何在应用程序之间进行转换来实现这一点 Mendix 对象和 XML,基于 XML 架构或 WSDL 文档。在 Mendix 6.1 这些文档已经得到了显著的改进,在这篇博客中我将解释如何使您能够处理更复杂的情况,使映射文档更易于使用并节省您宝贵的时间。

目录

  1. 映射文档的价值 Mendix
  2. 名称变更和箭头方向
  3. 如何使用导入映射
  4. 如何使用导出映射
  5. 改进了选择元素的选择树
  6. 其他重要改进
  7. 结语

1. 映射文档的价值 Mendix

通过 Mendix 您可以开发功能齐全的独立应用程序。然而,许多现实世界的应用程序并不存在于真空中,需要与外界集成和通信。为此,需要从您的应用程序导出数据并将其导入 Mendix 应用程序。因为 Mendix 由于其他应用程序具有不同的域模型,因此需要就数据格式达成一致。指定此类数据格式的标准化方法是 XML 架构 (XSD)。此格式也用于 Web 服务标准,作为 WSDL(Web 服务描述语言)文件的一部分。 Mendix 支持 XML 模式和 WSDL。

选择格式后,您需要指定 Mendix 域需要进行转换才能适合该数据格式。这就是映射文档的作用所在。指定如何转换数据不是一件容易的事。映射文档 Mendix 旨在通过可视化转换来简化这一过程。这非常重要,因为它使业务分析师能够阅读和理解映射。因此,他们可以验证映射是否正确,甚至可以自己创建映射。这是关键,因为业务分析师是拥有业务知识的人。如果其他人需要执行实施,信息可能会丢失。集成的最大挑战是语义,而不是语法。

将映射定义为单独的实体的另一个优点是 Mendix 是可以重用它们。重用映射可以节省时间,从而降低成本。如果问题已经解决,则无需再次修复。此外,重用现有映射可以帮助防止错误,因为它可以减小项目的大小,并且通常项目越大,错误就越多。最后,较大的项目更难维护和扩展,因此需要更多时间。重用映射可以使您的项目更小,从而避免这些问题。

最后,映射使处理大型复杂接口变得更加容易。首次实施时确实如此,维护时尤其如此。这很重要,因为大型复杂接口在企业环境中以及集成 ERP 系统时非常常见。

In Mendix 6.1 我们改进了映射文档,使其更易于使用。在接下来的部分中,我将介绍最重要的变化。

2. 名称变更和箭头方向

在较早的版本中 Mendix 这两种类型的映射文档被称为 XML 到域和域到 XML 映射。我们选择将它们重命名为导入和导出映射。我们这样做是为了立即清楚文档是否指定了如何转换从您那里传出的数据 Mendix 应用程序到外部世界(导出)或从外部世界传入数据到你的 Mendix app(导入)。为了更清楚起见,我们还更改了数据流的绘制方向。我们现在已经修复了 Mendix 域在左边,外部世界在右边。因此,导出映射的箭头从左向右,导入映射的箭头从右向左。以前,箭头总是从左向右。在本文的其余部分,我将使用图 1 中显示的示例导入映射和图 2 中的示例导出映射来说明映射文档中的其他更改。

导入映射示例

图 1. 导入映射示例

导出映射示例

图 2. 导出映射示例

3. 如何使用导入映射

将数据导入 Mendix 包括三个步骤:

  1. 获得一个 Mendix 对象(创建、按键或微流查找)。
  2. 将 XML 属性映射到获取的对象。
  3. 可选择将关联设置为父对象。

映射文档中这些步骤的可见性已得到改进,以便于理解和配置。在本节中,我将更详细地解释这一点。

3.1 如何获取 Mendix 摆件

对于导入映射,传入箭头现在显示如何获取 Mendix 对象,用于后续步骤。在图 1 中,您可以看到所有箭头上方都写有“创建新对象”。这意味着对于每个元素,都会有一个新的 Mendix 创建对象后,属性将映射到该 Mendix 对象,如映射详细信息中所述。要更改 Mendix 获取对象后,您可以双击其中一个映射元素。例如,当我们双击“ReceivedClient”实体时,我们会看到图 3 所示的屏幕。

导入映射_编辑

图 3. 实体“ReceivedClient”的映射详细信息

在此屏幕的顶部,您可以定义如何获取 Mendix 将传入 XML 中的属性映射到的对象,以及如果失败该怎么办。除了“创建对象”,您还可以选择“查找对象”或“调用微流”。如果选择“查找对象”,您还需要在映射属性部分中选择一个或多个属性作为键。执行映射时,它将在数据库中查找具有所选属性作为键的对象。在映射中,它将在箭头上方显示“按键查找”,如图 4 所示。

按键查找

图 4. 在此导入映射中通过键找到对象

当您选择“调用微流”时,映射将在执行时调用所选的微流以获取 Mendix 对象。它会将这些属性和父对象传递给您选择的微流。请注意,步骤 2 中的属性映射可能会覆盖您在微流中为对象设置的属性值。在图 5 中,您可以看到如果选择“通过微流调用”,箭头将是什么样子。如果选择微流,所有参数都会突出显示。在本例中,这是“ReceivedOrder”父实体和客户端 XML 元素的所有属性。

通过微流导入调用

图5。 Mendix 对象是通过此导入映射中的微流获得的

我们还可以通过右键单击箭头并选择选项来导航到微流或更改微流的调用,如图 6 所示。

上下文菜单调用微流程

图 6. “调用微流程”的上下文菜单

3.2 将 XML 属性映射到获取的对象

我们没有对如何定义 XML 属性映射到 Mendix 对象。这仍然在图 3 底部所示的网格中完成。但在映射文档本身中,我们使其更加明显。如果您在 XML 元素中选择一个属性,则在 mendix 对象中会自动选择相应的属性,反之亦然。在图 7 中可以看到一个示例。在 XML 元素 Client 中选择了属性“dati”,在 Mendix 实体“ReceivedClient”也被选中。请注意, Mendix 对象和 XML 元素不必匹配。

导入映射映射属性

图 7. 通过突出显示相互映射的属性来显示属性映射

3.3 建立关联

最后,对于每个映射元素,您需要决定是否设置与其父级的关联。这是使用图 3 中所示的映射详细信息屏幕完成的。如果您选择设置关联,则该关联将在映射中绘制出来,例如参见图 1。如果您选择不设置关联,则只需在映射中省略它即可。在图 8 中,我省略了“ReceivedOrder”和“ReceivedClient”实体之间的关联。请注意,仍将创建所有对象。只有它们之间的关联不会被设置。

导入映射但不进行关联

图 8. ReceivedClient 和 ReceivedOrder 之间未设置关联

4. 如何使用导出映射

导出数据的过程 Mendix 包括两个步骤:

  1. 获得一个 Mendix 对象(通过关联或者微流)。
  2. 将获取的对象属性映射到 XML。

因为第二步与导入映射相同,所以我将重点介绍如何展示如何获取对象。如果在图 2 的示例中双击“Orderlines”实体,则会看到图 9 所示的屏幕。

导出映射详细信息

图 9. 映射详细信息订单行

在此屏幕中,您会看到方法设置为“通过关联获取”。如果您查看图 2,您确实可以看到在“Orderlines”和“ReturnListOrderlines”之间绘制了一个名为“Orderlines_InputOrderlinesList”的关联。如果我们选择“通过微流获取”并选择一个微流,则微流将如图 10 所示绘制。

通过microflow导出映射

图10. 通过微流获取导出映射

5. 改进选择元素的选择树

在定义 XML 元素与什么元素进行映射之前 Mendix 对象以及哪些属性相互映射,首先需要选择要映射的元素。对于导入映射,您可以决定对接收到的 XML 的大部分内容不感兴趣。在导出映射中,您只能自由省略可选元素。可选元素是最小出现次数为 0 的元素(例如 0..1 或 0..*)。为了更清楚地说明在映射中可以和不能包含或省略哪些元素和属性,对选择元素屏幕进行了改进。要打开此屏幕,请单击“选择元素...”,将显示如图 11 所示的屏幕。

选择要导出映射的元素

图 11. 选择导出映射的元素

在此示例中,您可以看到某些复选框被禁用,而其他复选框被启用。如果复选框被禁用,则意味着无法更改复选框的值。因此,例如,无法取消选择“Orderlines”XML 元素的“bool”属性,因为“Orderlines”XML 元素被选中,并且 bool 属性的出现次数为 1。同样,无法选择“Order”XML 元素的“HighPriority”属性(因为“Order”XML 元素未被选中)。如图 12 所示,当您将鼠标悬停在禁用的复选框上时,工具提示将显示其被禁用的原因。

选择元素工具提示

图 12. 复选框禁用时显示工具提示

6. 其他重要改进

除了我迄今为止讨论过的改进之外,映射文档中还有更多改进。我不想向你隐瞒这些改进,所以我将在本节中介绍它们。

6.1 自动映射导出映射

当您创建新的映射文档时,最初将 XML 元素与实体、关联和属性连接起来可能非常麻烦。这项工作非常繁重,尤其是当映射很大并且您没有要映射到的现有域模型时。这就是 Map 自动辅助函数发挥作用的地方。它会查找或创建域模型实体和关联,并将它们添加到映射中,以减轻您进行大量手动工作的负担。运行该函数后,它将向您显示对项目所做更改的详细报告。以前,此辅助函数仅适用于导入映射。现在它也可用于导出映射。

6.2 通过扩展支持 XML 继承

XML 模式可以通过将复杂类型定义为另一个复杂类型的扩展来包含继承关系。我们称之为 XML 继承。 Mendix 长期以来,它一直部分支持此功能,但在 6.1 版中,它完全支持此功能。这很重要,因为一些广泛使用的标准使用 XML 继承(例如,用于贸易伙伴之间电子交换保险数据的 ACORD 电子数据标准)。从现在开始,我们要求您映射到域模型中与 XML 模式中定义的类似继承结构。您还需要决定要映射哪些子类型。由于这些变化,我们现在可以在导入和导出映射中支持某个父类型的混合列表。有关此改进的更多信息,请参阅 这篇专门的博客文章.

6.3 建模器的性能改进

在以前的版本中,映射编辑器在处理超过 100 个元素的大型映射时可能会变慢。现在情况好多了,这一点很重要,因为大型和复杂的接口在企业环境中以及在集成 ERP 系统时很常见。

6.4 Mendix 实体上下文菜单

您现在也可以右键单击 Mendix 映射文档中的实体以获取上下文菜单,如图 13 所示。以前,只有右键单击 XML 元素才能显示此菜单。

上下文菜单

图 13. 映射文档中实体的上下文菜单

6.5 可折叠映射

映射文档可能会变得非常大,包含深层嵌套和许多 XML 元素和属性。在这种情况下,在处理映射时很难保持对映射的概览。因此,我们使折叠映射的某些部分成为可能。折叠会隐藏视图中的映射部分,可以通过单击 XML 元素下方组合符号下的减号来完成。为了说明这一点,我在图 14 中折叠了“客户端”XML 元素下方的所有内容。

折叠映射

图 14. 折叠部分映射

6.6 导入映射可选参数

导出映射始终需要定义一个输入参数: Mendix 需要导出的对象。对于导入映射,定义输入参数是可选的。如果您选择为映射定义一个输入参数,则可以通过两种方式使用传递的对象。首先,您可以在调用微流时将其用作参数。其次,您可以设置映射创建的对象与参数实体之间的关联。在以前版本的 Modeler 中,此功能隐藏在属性网格中,但现在为参数绘制了一个占位符,并且可以像任何其他实体占位符一样将实体拖到它上面。请参见图 1 左上角的可选参数实体占位符示例。

6.7 XML 字符串与 Mendix 枚举

在属性映射中,您只能在兼容的数据类型之间进行映射。当您映射的数据类型可以代替您要映射到的数据类型时,数据类型是兼容的。如果您想在互不兼容的属性之间进行映射,则需要进行转换微流。以前,如果您在字符串类型的 XML 属性之间进行映射, Mendix 枚举,您将需要这样的微流。因为您需要对要映射的每个枚举执行此操作,这可能会迫使您制作大量此类微流。这个问题已得到解决,现在可以将字符串类型的 XML 属性映射到 Mendix 直接枚举。

7. 结论

在这篇博文中,我概述了我们为映射文档所做的改进 Mendix 6.1. 我希望您和我们一样兴奋地尝试这些功能。我们相信,您可以更轻松地自己进行映射,并理解其他人所做的映射。您喜欢这些更改吗?您还有其他反馈吗? 请告诉我们.

选择你的语言