微流及其元素
创建微流时,您将在工具箱中使用以下元素。所有微流都必须只有一个开始事件。您可以将此与函数的开头进行比较。结束事件终止微流的执行,您可以根据需要拥有任意数量的事件,就像您可以在函数中拥有尽可能多的返回语句一样。顺序流指示哪些活动相互连接。活动是微流程的核心,可以与您最喜欢的编程语言中标准库中的指令或函数调用进行比较。决策允许您分支顺序流并将两个流合并在一起。注释流提供了一种将注释或评论连接到活动的方法。这允许您直接在微流程中编写文档。
可以通过多种方式触发微流:
- 通过按钮的点击操作
- 通过 UI 元素上的 on-enter/on-change/on-leave 事件
- 通过动态 UI 元素上的 on-load 事件
- 通过实体上的事件处理程序
- 从项目导航菜单
- 从自定义导航菜单
- 从导入映射
- 从导出服务定义
- 按计划
- 启动应用程序后
- 在关闭您的应用程序之前
- 在运行状况检查期间(此触发器会定期运行,可用于确保您的应用正常运行)
您的工具箱预装了活动列表。它们已分类,因此您可以轻松找到所需的内容。除了此分类,您还可以使用过滤器进行搜索。添加包含新微流活动的模块时,您将看到一个或多个附加类别!
建立自己的保存和取消的微流
由于您向 Employee_NewEdit 页面添加了一个数据视图,并添加了一个与您的 Employee 相关的实体,您现在需要自定义逻辑来确保正确存储任何更改,或者如果您的用户选择取消更改,则正确回滚。为此,您需要两个新的微流,一个用于保存按钮,一个用于取消按钮。让我们开始吧!
- 打开 Employee_NewEdit 页面并右键单击 Save 按钮。选择 Edit on click action... 并将 On click 操作设置 为 Call a microflow。
- 单击 New 创建一个新的微流并将其命名为 ACT_Employee_Save。单击确定。
- 再次单击 确定 。
- 对Cancel按钮重复此过程, 并将微流命名为 ACT_Employee_Cancel。
- 弹出页面有一个 关闭操作选项,允许您使用 屏幕右上角的X 配置用户关闭页面时发生的情况 。要进行配置,请在页面编辑器中单击页面外的白色区域的某处,以确保您的属性窗格显示页面属性。将 关闭操作设置 为 取消 按钮。
- 从 App Explorer 打开 ACT_Employee_Save微流并添加一个 Commit 对象 活动来提交 Employee 实体。请记住将 客户端中的 Refresh设置 为 Yes。这是必需的,因为在服务器上运行的微流会更改实体。为此,请双击该对象并将 Object 或 List 设置为 Employee Entity 。 还要确保将 客户端中的刷新 设置为 是。 完成后,单击 OK。
- 为了能够提交 Account 实体,您需要检索它。为此,请转到 工具箱 并将 Retrieve 活动拖到您的流程中,在您的 提交 活动的右侧。
- Retrieve 活动不知道要获取什么以及从哪里获取它,因此您还需要对其进行配置。 您可以通过双击 Retrieve 活动并单击 窗口右侧的 Select按钮来执行此操作。
在 西门子Mendix 中检索数据时,您有两种选择。您可以通过关联进行检索,这使您可以访问直接连接到您在范围内的任何对象的所有实体。这包括尚未在数据库中的任何对象。如果您从数据库中检索,您可以在一次检索中使用多个关联来获取您需要的实体,但重要的是要了解您无法检索尚未提交或刚刚删除的对象。
- 在新打开的窗口中,单击Employee 实体 旁边的加号图标 并选择Employee_Account 关联。单击 选择 ,然后 单击 确定。
- 将另一个Commit活动拖到Retrieve活动右侧的流程中,并将其设置为提交Account对象。确保将客户端中的刷新设置为是。
- 此微流中的最后一个活动,在您的第二个 提交 活动的右侧,是 关闭页面 活动。所以继续添加它。生成的微流应如下所示。
添加微流验证规则
现在我们已经在这里设置了基础知识,是时候添加一些验证了。您可以在域模型中通过添加验证规则、使用页面验证的输入小部件或使用您刚刚创建的微流来执行此操作。最后一种方法是您将使用的方法。原因是如果您使用Validation Rules,导入可能会失败。将其添加为页面验证会阻止您轻松重用验证逻辑。此外,无法检查是否使用Validation Rules设置了关联。因此最好使用Microflow Validation。
- 在 ACT_Employee_Save 微流的开头添加一个创建变量活动。 将数据类型设置为Boolean并将值设置为true。在输出部分中,将变量名称设置为EmployeeValid。完成后,单击OK。
为了更轻松地检查多个字段的有效输入,您可以使用规则。这允许您编写一次逻辑并在Decisions中多次重复使用它。规则看起来很像微流,但由于它们从决策活动接收输入,因此它们的可用活动池更加有限。
- 右键单击OverviewPages文件夹,选择Add other... → Rule并将规则命名为Rule_StringNotEmpty。
- 在您的新规则中,添加一个参数,将数据类型设置为String并将您的参数命名为InputToCheck。
- 向规则添加决策活动。打开您刚刚创建的规则并将决策活动添加到流中。双击决策并将下面的表达式添加到表达式窗口。将Caption设置为String 不为空?
右键单击红线并将Condition 值设置为true。
- 双击结束事件并将表达式设置为true。
- 通过将鼠标悬停在白色圆圈上直到它变为灰色,然后单击并向下拖动,从您的决策底部添加一个流程。找到希望流程结束的位置后,松开鼠标按钮并选择End event作为活动。
- 回到您的 ACT_Employee_Save 微流中,在Create 变量和Commit Employee活动之间添加三 (3) 个 决策活动。
- 对于每个决策,在决策类型中选择 规则,选择规则Rule_StringNotEmpty并将参数分别设置为 Employee/Firstname和 $Employee/Lastname。给每一个描述性标题,然后将红色流的条件值设置为 true。
为确保用户了解表单中的任何问题,您可以使用验证反馈活动。此活动允许您选择实体上的属性,以便 Mendix 可以确定在输入表单上显示验证消息的位置。
- 将验证消息添加到您的决策的错误流中,并相应地设置variable、member和Template属性。
在每条验证消息之后添加一个Change 变量活动,将EmployeeValid变量设置为false。最后,在您的决策活动之后添加合并活动,以便微流可以继续处理。
在Commit Employee 之前添加第四项检查,以确保已选择部门。
就在Commit Employee活动之前,添加一个检查EmployeeValid是否为真的最终决定。如果是,则应提交更改并关闭页面。如果不是,则流程应以结束事件结束。整个微流可以在下面看到。
您的ACT_Employee_Cancel微流程具有相同的结构,但您需要回滚对象活动,而不是Commit活动。所以打开微流并去做吧。一个重要的注意事项是,确保选中两个回滚对象活动的在客户端中刷新复选框。 我们正在重置实体,我们需要通知客户我们这样做了。在微流结束时关闭页面也很重要。
好了,今天我们先到这里,下一章我们继续来学习,如何进行Debug。