开发应用程序逻辑 - 客户端和服务器端以及自定义代码 | Mendix 评估指南

Skip navigation

Logic

如何为我的应用程序添加逻辑?

应用程序逻辑以纳流和微流的形式创建于在 Mendix 中。这些都是表达以传统编程代码功能和方法结束的内容的可视化方式。换句话说,微流和纳流允许您轻松直观地向应用程序中的流程添加复杂的业务逻辑,而无需编写代码。

Comparison between Workflows, Microflows, and Nanoflows

下表显示了纳流和微流之间的差异,以及适用于每种情况的用例:

用例 纳流 微流
运行中 客户端(浏览器/设备) 服务器
语言 JavaScript Java/Scala
离线移动应用程序 支持 不可用
安全性 在用户上下文中执行 在系统上下文(可能是用户上下文)中默认执行
事务 每次事务调用 单一事务
在客户端执行操作(例如,关闭页面) 直接地 执行微流后

如何确保逻辑符合我的业务需求?

Mendix 的一切都与商业和 IT 之间的协作,以及微流和纳流的视觉特性相关,有商业头脑的用户可以深入了解应用程序是如何设计的。这意味着所有扩展开发团队成员都可以就逻辑应该做什么进行必要的讨论。

Mendix Studio 内置了审查功能,业务用户可以利用这些功能来审查描述业务逻辑的特定微流。在审查逻辑时,这些用户可以用熟悉的视觉语言检查逻辑的功能。他们还可以在微流上添加注释,描述满足业务需求所需的更改。这使得反馈回路非常短,让产品更好、成本更低。

Mendix Studio review example

如何构建客户端逻辑?

使用纳流构建客户端逻辑(例如移动应用程序逻辑)。使用纳流让离线逻辑和低延迟成为可能,从而产生可离线超高速应用程序。有关更多信息,请参见前端中的 Mendix 如何支持客户端逻辑?

此外,Mendix 还提供了一种通过创建自定义小组件扩展具有自定义逻辑的可视化前端的机制。有关更多信息,请参阅前端如何扩展 Mendix 前端?

如何构建服务器端逻辑?

因为微流允许表达应用程序的逻辑,所以使用微流和业务规则构建服务器端逻辑。微流可以执行创建和更新对象、显示页面、做出选择以及连接到外部系统等操作。

微流由以下元素类型组成:

  • 事件表示微流的起点和终点以及循环中的特殊操作
  • 输入参数为微流提供来自其上下文的输入
  • 活动是在微流中执行的动作
  • 连接器可以从 Mendix Marketplace 中下载,将应用程序连接到其他系统
  • 形成元素之间的联系
  • 分割允许再次选择和合并不同的路径
  • 错误处理程序可以在活动,分割或循环上设置以定义如何处理错误

有关更多信息,请参见 Mendix Studio Pro 指南中的微流

Example of a Microflow, showing various element types

规则是一种特殊的微流,可用于表达业务规则。规则必须返回布尔或枚举值,并且可以将其用于分割中以根据该结果做出决策。其思想是,复杂的决策可以合并成规则,并可重用在应用程序中的不同位置。

如何将自定义代码添加到应用程序中?

在服务器端,Mendix 基于 REST、OData 和 SOAP Web 服务提供了现成的微流逻辑和集成特性。这意味着通常不需要自定义代码。如果确实需要使用自定义代码扩展微流逻辑(通过库调用或通过 Java 公开的外部服务调用),则 Mendix Studio 和 Mendix Studio Pro 允许您构建可直接在 IDE 中直接使用的 Java 逻辑。

有关更多信息,请参见以下各节:

 

如何在服务器端逻辑中使用自己的自定义代码?

与第三代编程语言(在本例中是 Java)的集成是 Mendix 模型驱动开发方法的一个关键优势。这在一些少数情况下尤其有用,比如当您无法单独使用微流来实现所需的结果时,或者是在您在 Java/Scala 代码和技能方面已有投资,希望在应用程序模型中加以利用时。Mendix Studio Pro 与 Eclipse 集成,支持您对模型进行代码扩展。Mendix 调试功能已完全集成到 Eclipse 中,为您提供了与所运行的应用程序的任何其他部分相同的带有所指 Java 代码的调试功能。

本质上,您永远不会受到特定 DSL 范围的限制,始终可以使用自定义 Java 函数。自定义 Java 函数可以从模型中调用,并且可以直接输出。模型中还定义了每个动作的接口(等于 Java 函数)。名称,参数和返回值均在 Mendix Studio Pro 中声明了。Mendix Studio 和 Mendix Studio Pro 为每个操作生成一个 Java 模板类,是可以在其中添加自定义代码的钩子。

每当应用程序中的接口定义被重命名或重构时,Java 类模板就会自动更改,并且不会丢失任何自定义代码。Mendix 平台内置的一致性检查器也会自动捕获更改,这能帮助在开发过程的早期阶段识别自定义代码中一致性错误。这样可以确保在部署之前可以编译 Java 代码,并使应用程序扩展与模型保持一致,从而节省了开发迭代期间的宝贵时间。

专业开发人员完全可以自由地使用任何 Java 构造进行扩展,能根据需要利用任何开源或专有库。在此自定义代码中,扩展 API 可用作运行时引擎的核心。此底层 API,除其他功能外,还支持反射式编程模式。

Mendix 平台在整个应用程序生命周期(包括版本控制、编译和部署打包)中全面管理 Java 扩展。Java 操作提供了以优雅的方式构建非 Java 开发人员可以使用的新微流功能。Java 操作完成后,右键单击它,以将其作为本机操作公开在 Mendix Studio Pro Toolbox 中。应用程序项目中的所有开发人员都可以轻松发现它。

有关如何在 Mendix 应用程序中使用 Java 代码的更多信息,请参见 Mendix Studio Pro 指南中的 Java 编程

Mendix 如何支持可靠的后台处理?

对于任务关键型应用程序而言,可靠性是关键。Mendix 任务队列允许并行处理资源密集型任务。您可以通过单独的可配置线程池来控制微流和 Java 动作的执行。这使您可以平衡负载并确定任务执行的优先级。

Mendix 通过自动重新安排失败任务提供了一个最少交付机制。为识别永久性中断,细粒度监控保证了当前和历史事件的透明度。

有关更多信息,请参阅 Mendix Studio Pro 指南中的任务队列

如何在 Mendix 中调试?

Mendix Studio Pro 通过模型一致性中的方法和机制来确保使用 Mendix 平台构建的应用程序的内在质量、安全性和技术一致性。

因此,调试和问题测试主要需要在功能级别上进行。这样做的好处是,通过广泛的质量和一致性检查,非技术领域的专家可以开发强大而复杂的应用程序。

有关 Mendix 内置调试工具的更多信息,请参见调试工具

Mendix 提供了哪些错误处理选项?

Mendix 通过在微流中定义错误处理程序来支持复杂的错误处理。通过错误处理程序,您可以根据需要优雅地管理逻辑错误(例如超时)和服务调用或数据库访问造成的意外结果。

Mendix 平台是基于事务的平台,这意味着执行的逻辑要么完成事务,要么抛出错误。如果发生了错误,则可以选择回滚整个事务(这意味着关联的对象将回滚到其原始状态)或不回滚。在这两种情况下,都可以向微流添加错误处理逻辑,该逻辑将在事务处理后执行。

此错误处理过程可确保整个 Mendix 应用程序的一致性。

如何重用逻辑?

Mendix Studio 和 Mendix Studio Pro 中的以下功能使逻辑重用轻而易举:

  • 现存的微流和规则可以从 Mendix 应用程序项目中的任何其他微流或页面上下文中调用。Mendix 内置了重构工具,可以轻松将现有微流中的逻辑提取到新的微流中,该微流包含定义明确的输入参数和返回类型的接口。然后,该逻辑可以从任何其他上下文中完全重用。
  • 您可以重复使用应用程序逻辑中的现有的 Java 库和自定义代码
  • 可重用逻辑可以在模块中分组并导出到 Mendix Marketplace 中。它可以从那里作为公共或私人(即公司内部)内容与其他应用程序项目共享。
  • Mendix Marketplace 包含许多可重复使用的微流和微流连接器,可以下载到您的应用程序模型中。这样就无需重新创建每个项目的逻辑。Marketplace 中的 Community Commons Function Library 模块是共享社区最佳实践的一个很好的例子。