如何在西门子Mendix 中复用我们的Jar包?

451 阅读4分钟

自定义Java Action

在 西门子Mendix 的现有功能之上添加 Java 的能力就像是 Java Geeks 蛋糕上的樱桃。另一方面,能够自定义现有代码对于初学者或像我这样对 Java 不太熟悉的人来说确实是一种祝福!

Community Commons Function Library模块为我们的应用程序提供了许多可重用的 Java 方法,这些方法可以从微流或其他自定义 Java Action 中调用。它们中的大多数是通用的,而少数是特定的,但我们有可能根据我们的需要调整它们。从这里开始全是 Java,但不用担心,我们已经掌握了!

用例场景

我将通过使用我遇到的示例引导您自定义 Java Action。

情况是根据另一个对象返回的“String”类型属性来设置“Enumeration”类型的属性 PrevStatus 的值。

image.png

image.png

方法

  1. 其中一种方法是通过多个决策活动使用“If-Else”来根据匹配的字符串分配枚举值。然而,有很多状态需要检查,而且这个解决方案还不够令人满意,无法继续完成所有的工作。

image.png

image.png

  1. 因此,出现了第二个想法:更聪明地工作,并寻找一个我们可以重用或适应的 java 操作。在 Community commons(从 Marketplace 下载)中有一个名为“EnumerationFromString”的操作。尽管我们使用此操作存在问题,因为默认情况下它已预先配置为返回/检查 LogLevel 的枚举(社区公共模块中的现有枚举)。不过,使用该操作感觉是正确的方法,我们决定根据我们所需的 Enum 类型调整 Java 代码中的值。

所以,让我们开始使用Java Action

下面看一下为设置 CaseFile 对象的 PrevStatus 而创建的 Microflow。第一个活动返回要用于 PrevStatus 的字符串值,接下来是名为“EnumerationFromString”的 Java Action,其中从第一个活动返回的值作为参数传递,最后一个是更改对象活动以设置 CaseFile 属性,其中PrevStatus 的值设置为从 Java 操作返回的枚举值。

image.png

第 1 步: 在 西门子Mendix 中打开“EnumerationFromString”Java Action 并将返回类型更改为所需的枚举类型。

image.png

image.png

第 2 步: 导航到项目目录中此操作的 Java 文件。

image.png

第 3 步: 打开 java 文件:大多数 java 文件是在Eclipse中编辑、编译和调试的,但如果您作为初学者不熟悉它,您可以在任何您熟悉的文件编辑器中打开此文件,以防出现任何错误,它们将在运行应用程序时显示。(在本例中,文件在Notepad++中打开)

Java Action 的代码如下所示:

image.png

在 java 文件中,只有在begin-end 代码块导入之间编写的代码可以自定义并因此被执行,其他所有内容都将在运行时被覆盖。

第 4 步:如上图中 Begin Code 下的注释所述,我们可以将默认 LogLevel 替换为我们想要的 Enumeration。这很酷,对吧?

要为我们的枚举配置它,我们只需要进行一些调整:

a) 在顶部的导入部分,将“ communitycommons.proxies.LogLevel ”替换为“ main.proxies.Enum_CaseStatus ”(modulefolder.proxies.enumname)

您可以通过导航到 javasource 文件夹中模块的文件夹路径找到您的枚举,如下所示:

image.png

b) 下一步也是最后一步是用我们的枚举名称替换所有出现在 Begin 和 End Code 之间的“ LogLevel ”,我们刚刚在上面添加的那个

image.png

保存文件并在 Studio Pro 中启动/运行应用程序,以确保代码编译并检查所需的结果。

理解Java Action代码

a) 添加 Java Action 访问我们的 Enum。

b) 开始和结束代码之间存在的结果变量存储从函数“enumFromString”返回的结果,该函数接受 2 个参数:

  • 枚举类(因为 Enum 是一个类,因此 EnumName.class 被传递)
  • 以及需要转换的字符串。

该函数在名为“Misc”的现有社区公共 Java 文件中预定义(这就是在顶部导入 communitycommons.Misc 的原因)。最后,枚举值的名称作为结果返回。

结论

如果我们能试着更好地理解它,Java 就可以成为我们的朋友。希望这能让您了解如何在 西门子Mendix 中自定义 Java Action。记住一些事情还可以帮助您在可行的情况下修改其他 Java Action,甚至通过从现有队列中获取一些队列来创建自己的操作。

注意: 这是我如何处理特定场景的示例,可能有多种其他方法可以实现这一点,但使用和自定义 Java Action对我来说是一种学习。

思考

低代码结合传统开发的代码,是不是可以带来更好的效果了?