集成一直是应用程序开发的重要组成部分。但迄今为止,该主题尚未成为应用程序开发市场的焦点。云原生和“即服务”软件选项的成熟增加了对 API 的需求,这些 API 将不同的应用程序连接在一起以交换数据、触发事件和协调工作流程。
At Mendix,我们已对平台进行了投资,以便通过各种方式轻松连接应用程序和服务,最近使用的是 REST。虽然 REST 已成为构建应用程序通信的 API 和 Web 服务的标准,但了解其他 Web 服务协议也很重要。标准化框架和 API 仍然是有效的选择,具体取决于您要解决的问题。让我们花点时间确定用例 Mendix 在整合中发挥作用,建立整合的指导原则 Mendix,以及该平台如何解决集成挑战以支持您的企业。
确定集成用例
Mendix 提供各种协议、框架和 API,用于集成系统以 Mendix 应用程序和不同的软件解决方案之间。但在选择用于集成的技术之前,确定用例将有助于您做出决策。让我们来看看最常见的集成用例以及用于满足这些用例的技术。
扩展遗留系统
常见用例 Mendix 是在旧系统之上构建现代 UI 和移动应用。连接到旧系统时,您仍然会看到大量基于 SOAP 的 Web 服务。 Mendix的网络服务支持将允许您从您的 Mendix 应用程序,因为对将复杂的 XML 消息映射到 Mendix 实体。
直接在旧数据库甚至自定义协议上构建应用程序也很常见。 Mendix 提供数据库连接器,可直接在现有数据库上运行 SQL 查询。对于自定义协议,您可以使用连接器套件轻松提供从 Mendix 领域广泛应用,提供了卓越的解决方案。
使用第三方服务
软件组件和功能越来越多地以服务的形式提供。所有大型云供应商都提供许多有趣的服务,从文本到图像识别,从地址验证到完整的业务流程自动化。其中大多数使用 REST 作为公开这些服务的技术,尽管一些 SOAP 技术仍在使用。
公开 API
许多公司参与 数字生态系统。用于公开数据、算法、交易和业务流程的 API 在这一目标中发挥着至关重要的作用。API 使独立的企业、人员和事物群体能够在标准化的数字平台上进行协作。REST 是实现这些 API 的主要方式。
使用微服务架构构建复杂的解决方案
为了实现软件开发过程的速度和敏捷性,将解决方案划分为可以 由小型自主 DevOps 团队开发和运营 已刻不容缓。
多个应用程序之间共享数据和逻辑通常需要付出巨大的努力才能实现。 Mendix 通过根据您的微流和领域模型实体生成大多数所需的 API 来帮助您。
对于微服务,使用消息总线或 iPaaS 解耦组件将带来额外的好处,例如提高正常运行时间和可扩展性。 Mendix 可与大多数商业消息传递产品很好地配合使用。现代 iPaaS 平台提供基于 REST 协议的发布和订阅功能。实时推送消息传递通常通过 REST webhook 提供。
微服务最佳实践促进了智能端点和哑管道的概念。实际上,这意味着您的消息总线仅负责在应用程序之间传输消息。应用程序本身需要能够将消息转换为所需的任何格式。 Mendix的导入和导出映射使您能够以可视化的方式轻松定义如何将消息格式从一个应用程序转换到另一个应用程序。
定制前端和移动应用程序的后端系统
开发者 的移动应用通常需要后端来存储数据并与后端系统集成。使用 Mendix能够为领域模型生成 Rest API,您只需 5 分钟即可为您的移动应用程序创建一个后端。无需花费大量时间构建后端,也无需学习另一种后端语言(和数据库技术)来存储您的移动数据。
Mendix 不仅限于为您的应用程序存储数据。由于其对逻辑和集成的强大支持,我们看到客户使用 Mendix 作为一个 数字集成中心。 该 Mendix-基于后端从其他后端应用程序和服务检索数据,处理数据转换和验证。
最重要的是,创建管理网页来管理您的后台流程是小菜一碟 Mendix. 使用专门的 mBaaS 解决方案构建这些后台网页通常需要付出更多的努力。
指导原则
如上所述,我们的集成设施的一个主要目标是连接到外部系统。我们的目标是使这一过程尽可能简单和高效。然而,在处理外部系统时,生产力是不够的。控制、敏捷性和协作是需要考虑的重要方面。以下是我们在集成设施中处理这些问题的方法 Mendix 平台。
通过积极争取让商标与其相匹配的域名优先注册来维护
当处理不受您控制的系统时,控制集成细节可能非常重要。您需要能够适应另一方,因为这些系统并不总是按照规范正确实施,或者它们可能是使用旧做法的旧系统。
这意味着您需要一种简单而灵活的方法来在外部系统和您的系统之间转换消息 Mendix 应用程序。
In Mendix 这是通过映射处理的。您可以定义导入映射,将收到的消息转换为 Mendix 对象。将对象发送到外部系统时,您可以使用导出映射来转换它们。这既适用于 XML 消息,也适用于 JSON 消息。映射是可重复使用的,这意味着您可以将它们用于 Web 服务、Rest 服务以及连接器套件集成。
以下屏幕截图显示了导入映射,其中包含订单和订单行的 XML 或 JSON 消息将转换为 Order 和 OrderLine 对象。
速度
速度不仅关乎原始生产力,还关乎能否轻松更改应用程序。当外部系统依赖于您的服务或反之亦然时,能够在不影响外部依赖关系的情况下修改应用程序至关重要。有两个重要工具可以为您提供帮助:API 版本控制和有关交换消息的明确契约。
为了确保您交换的消息保持不变,您可以使用消息定义来定义这些消息。根据用例,可以使用 xml 架构、json 结构或从域模型实体之一开始的消息定义来完成此操作。当您对与消息定义不兼容的映射进行更改时,您将看到一致性检查。
以下屏幕截图显示了从实体开始的消息定义。如果您有关联实体,则可以包含这些实体来定义聚合消息,例如带有订单行的订单。
Rest 发布内置了版本控制功能。您可以为 API 指定一个版本,并将其作为端点地址的一部分。当您需要提供具有不同行为的 API 时,只需复制原始定义并更改版本号即可提供新版本。这样您就可以同时运行两个版本,直到每个人都迁移到新版本。
协作
集成通常需要与组织内部和外部的其他人协作。我们的目标是让这一过程尽可能简单,例如通过提供可视化映射来定义如何将外部数据转换为内部数据。这些映射的可视化特性使您可以与组织中的任何人(甚至是非技术人员)协作。
另一个促进协作的工具是自动生成的服务文档和契约,这样其他人就可以轻松理解和使用它们。您实现的每个 REST API 都会自动包含一个 OpenAPI 文档,描述 API 提供的所有资源和方法。如果您在消息定义中包含文档和示例值(如上一节所示),这些也将包含在您的 OpenAPI 文档中。这将使您的用户能够非常轻松地开始使用您的 API。
类似地,每个使用 Mendix 生成基于 WSDL 的文档页面。
工具
现在我们已经了解了集成的主要用例,并回顾了构建集成的指导原则,让我们来看看在 Mendix。以下是列表:
- Web 服务 – Mendix 为发布和使用基于 SOAP 的 Web 服务提供开箱即用的支持。
- Rest 服务 – 为微流和实体发布和使用 REST。
- oData – 基于 OData 标准发布用于 BI 和数据分析工具的实体。
- 连接器套件——通过自定义 Java 逻辑进行集成。
- 连接器 – 使用 App Store 提供的连接器套件进行自定义集成。
Web服务
Mendix 支持发布和使用 Web 服务:
- 您可以将微流发布为 Web 服务操作。
- 您可以通过导入 WSDL 契约来使用 Web 服务。
创建 Web 服务非常简单,只需在微流编辑器中选择“发布为 Web 服务操作...”即可。当您将任何微流转换为 Web 服务操作时,任何输入参数和微流返回值都将自动转换为操作的输入和输出消息。
您可以完全控制消息,可以选择要包含哪些属性以及要使用哪些名称,如以下屏幕截图所示。这使您能够确保与外界的契约是稳定的,同时您仍然可以对应用程序进行更改。说到契约,使用此信息足以自动生成 WSDL 和文档。
当你有 WSDL 时,无论是来自 Mendix 申请或来自 3rd 派对应用程序,您可以轻松地将其导入到您的 Mendix 应用程序。您所要做的就是创建一个新的“已使用的 Web 服务”文档,指定 WSDL 的位置,然后就可以开始了。
您可以使用微流中的“调用 Web 服务”活动来调用所用 Web 服务中的任何操作。调用外部 Web 服务时,您可以使用导入和导出映射来确保您的域模型可以轻松地转换为您需要与服务交换的任何消息。
导入和导出映射提供了一种将外部数据转换为 Mendix 对象,反之亦然。它支持的一些功能:
- 自动检测并创建对象之间的关联。
- 支持继承和其他复杂的 xml 类型。
- 可以从 WSDL 或 XML 模式生成所需的领域模型实体。
- 可用于创建新对象或者反对现有对象。
- 您可以使用微流来转换属性。
- 您可以指定消息中的哪些属性应被视为关键属性。
- 支持像 Acord 标准这样的复杂 XML 模式定义。
这些映射可以重复用于 Xml 和 Json 以及 Webservices、Rest 和 Connectors。
休息服务
我们对你所做的一切感到非常自豪 Mendix 使用 REST 发布。随着最近的生产力改进,我们现在可以放心地说 Mendix 是创建 API 最简单、最有效的方法。
就在本月的发布中,我们添加了:
- 从领域模型为实体生成完整的 Rest API。
- 通过从连接器拖动一个实体来生成完整的 Rest API。
- 通过将实体从连接器拖到消息定义来为实体生成默认消息定义。
- 从消息定义生成默认映射。
通过这些生产力的改进,您现在可以在几秒钟内为您的域模型创建一个 REST API,如下所示。
如今,大多数较新的服务都在使用 REST 而不是 Web 服务。使用 REST 需要在服务设计上做出一些小的调整。Web 服务用于调用和提供对远程逻辑的访问。在 REST 中,您可以设计一个可供外部应用使用的数据模型。域模型中的对象称为资源。对资源的操作是标准化的:
- 读取或查找一个或多个现有资源 (GET)
- 创建新资源 (POST)
- 更改现有资源 (PUT)
- 删除现有资源 (DELETE)
您还会在 Swagger 和 OpenApi 等 REST 服务合约中看到这种方法:首先列出资源,然后列出对这些资源的操作。
- Mendix REST 发布功能遵循 OpenApi 使用的方法,即首先定义资源,然后定义对这些资源的操作。您可以完全控制 REST API,因为您定义了资源、交换的消息以及实现操作的微流。
或者,你可以让 Mendix 自动处理所有这些。只需从域模型中公开您的实体,或将实体拖到发布 REST 文档的资源部分,系统就会为您生成所需的一切,包括安全性。您在实体上定义的所有安全规则都会自动由您的 REST API 使用。
无论您想完全控制所实现的 API,还是只想在 5 分钟内为您的移动应用程序生成后端, Mendix 可以做到。
查看 REST 操作的实现,您可以使用任何微流作为 REST 操作的实现。 Mendix 将自动检测您需要的参数以及需要导入或导出映射的任何对象。这可以在操作对话框中指定。您还可以使用发送和接收二进制数据或文件文档,例如,如果您想提供一个操作来检索 pdf 文档。
以下屏幕截图使用可选的 httpResponse 参数,您可以使用该参数覆盖 Http 状态代码或状态消息。如果需要,您还可以指定要访问 http 请求,例如,确定 http 标头值的值。
正如本文前面所提到的, Mendix 将自动为您创建的每个 Rest 服务提供 OpenAPI 契约和文档页面。如果您在消息定义中提供示例值,则 Rest 服务的用户只需按“执行”即可看到调用服务的结果。我们无法让它变得比这更简单。
调用 REST 服务也很简单。首先,通过创建消息定义来定义要使用的外部资源。最简单的方法通常是通过复制和粘贴示例 JSON 消息来创建 JSON 结构。 Mendix 将自动确定您的消息结构和适用的属性类型,如下所示。
接下来,定义映射以将数据导入和导出到外部 Rest 服务。这与上面的示例类似。尚未提及的一个功能是,如果您还没有适当的实体,则可以生成域模型实体。当您根据某些示例 JSON 定义了一条消息时,可能就是这种情况。
最后,使用微流中的“调用 Rest”活动来调用 REST API。这只是提供 API 的 URL 的一个例子,在请求和响应选项卡中,您可以定义要使用的映射。
o数据
Mendix 目前在建模器中提供 oData 作为特定用例的集成工具: 优 Mendix 用于分析的应用数据.接下来, Mendix 还提供基于 oData 的 SAP 集成,但这是基于 Connector Kit 技术,如下一节所述。
OData 提供了与数据库类似的接口。它具有对资源的插入、选择、更新和删除功能。OData 通过在 Rest 之上标准化数据语言来实现这一点。这样做的好处是,所有客户端工具都能预先了解如何处理您公开的数据。
支持 OData 的数据分析工具包括 Microsoft Excel、Tableau、ETL 工具、LINQPad 等基本查询工具,甚至 统计分析工具,例如 R。这意味着你可以将你的数据暴露给 Mendix 一次,所有这些工具都可以直接处理您应用程序内的数据。
揭露你的 Mendix 通过 OData 传输数据,在域模型中的实体上选择“作为 OData 资源公开...”。
接下来,您将能够指定要公开的属性。您还可以指定谁可以访问这些数据。当然,通过 OData 检索数据时,域模型实体上指定的所有实体访问规则仍然适用。
现在,您可以直接在 Microsoft Excel 或 PowerBI 等工具中打开公开的实体,并始终获得来自 Mendix 应用程序。
查找更多信息 Mendix OData 支持 和 如何使用 R 从数据中获取洞察力 Mendix 应用.
连接器套件
如果其中一个现成的集成工具不能满足您的需求,您可以使用 Mendix 连接器套件可实现自定义集成。连接器套件可让您实现自定义 微流活动使用 Mendix Java API。您可以重复使用大多数第三方 Java 库,以提供所需的任何集成。您实现的微流活动将完全集成到工具箱中,因此任何 Mendix 开发人员无需了解 Java 即可使用它们。
要创建与 Java 的自定义集成,请创建自定义 Java 操作。将为您的 Java 操作生成一个 Java 源文件。在这里,您可以提供 Java 实现,或调用现有的 Java 库。为了方便其他开发人员使用您的客户微流活动,您可以定义您的活动在微流编辑器工具箱中的显示方式,如下图所示。
您的自定义集成的用户现在将看到该活动出现在微流工具箱中,就像任何其他微流活动一样。
如果您希望其他项目也能从您的自定义集成中受益,您可以将源模块发布到 Mendix 应用商店。
查找更多信息 Mendix 连接器套件:
- https://docs.mendix.com/howto/extensibility/howto-connector-kit
- https://www.mendix.com/blog/introducing-mendix-connector-kit/
- https://www.mendix.com/blog/writing-code-in-a-low-code-world/
- https://apidocs.mendix.com/7/runtime/
连接器
大量基于自定义连接器套件的集成已经存在于 Mendix 应用商店。
SAP OData 连接器
- SAP oData 连接器 使您能够轻松构建 Mendix SAP 上的应用程序。OData 模型创建者将生成一个 Mendix 基于您在 SAP API Hub 中公开的内容的域模型,因此对 SAP API 的任何自定义也将包含在您的 Mendix 应用。
应用商店链接:
- https://appstore.home.mendix.com/link/app/74525/Mendix/SAP-OData-Connector
- https://appstore.home.mendix.com/link/app/105622/Mendix/SAP-OData-Model-Creator
数据库连接器
使用数据库连接器,您可以在现有数据库上执行 SQL 查询和存储过程调用。连接器将执行查询并将检索到的数据转换为 Mendix 对象。应用商店还包含 Oracle 连接器,支持 Oracle 特定扩展,如 pl/sql 过程、引用游标和用户定义类型。
应用商店链接:
- https://appstore.home.mendix.com/link/app/2888/Mendix/Database-Connector
- https://appstore.home.mendix.com/link/app/8683/Mendix/Oracle-Connector-(Beta)
Apache Kafka 连接器
阿帕奇卡夫卡 是一个分布式流媒体平台,专门用于不同应用程序之间的大量消息交换,以及处理例如物联网传感器数据。使用 Kafka 连接器 Mendix 应用程序可以通过Kafka发送和接收消息。
机器学习和认知连接器
有许多连接器 Mendix 应用商店允许您将机器学习用于特定目的。一些示例包括识别图像和文本、使用聊天机器人进行自动转换以及检测文本中的情绪。
Redis 连接器
Redis 是一个内存数据库,在构建分布式多实例应用程序时非常有用。Redis 可用作数据缓存和消息代理。
应用商店链接:
物联网连接器
除了前面提到的 Kafka 连接器之外,还有一些其他连接器也可以用于物联网数据:
- MQTT 客户端: https://appstore.home.mendix.com/link/app/3066/Mendix/MQTT-Client
- AWS IoT 连接器: https://appstore.home.mendix.com/link/app/2868/Mendix/AWS-IoT-Connector
- KPN Lora连接器: https://appstore.home.mendix.com/link/app/2747/First-Consulting/KPN-LoRa-Connector
随着对应用程序的需求的增长,将它们相互连接的需求也将增长,以支持应用程序需要满足的多样化用例。 Mendix 提供灵活的集成选项,这些选项与指导原则紧密相关,使创建新的连接变得容易建立、管理,并向组织内的各种系统和服务公开。为开发人员提供合适的工具和选项来帮助他们构建集成,为他们提供了所需的灵活性,使他们能够快速、协作和控制地创建和连接应用程序。