这一章,我们一起来学习一下,如何在图形化的微流中进行断点调试。
调试微流
微流编辑器提供了一个调试器,允许您设置断点和检查变量。它提供了常见的功能,如 Step into、 Step over、 Step out和 Continue。变量视图显示范围内的所有对象。没有参数的微流具有三个对象:
- 当前设备类型
此对象包含用于调用微流的设备
- 当前会话
该对象包含当前会话的信息
- 当前用户
此对象包含有关当前用户的信息
除了本地调试,您还可以进行远程调试。不同之处在于,当您执行远程调试时,您附加到部署在云中的运行时。为此,您需要一个调试 URL、一个密码和用于创建要调试的应用程序的西门子Mendix Studio Pro 版本。另一个关键区别是,如果您进行远程调试,您的断点将被停用。您需要在西门子Mendix Studio Pro 在断点处停止之前手动激活它们。这是一项安全功能,因此您不会停止应用程序,如果您正在调试的远程应用程序正在生产中,这可能会非常痛苦。
设置调试器
现在您已经了解了微流调试器的功能,是时候使用它了。让我们看看你的微流在执行时发生了什么,并探索我们在调试器中可用的选项。现在,您将在本地运行调试器,但请记住,您还可以将调试器附加到在云中运行的应用程序。让我们设置您的调试器。
- 打开您的 ACT_Department_Employee_ImportFromRest 微流程。
- 单击 视图 > 调试窗口 > 断点
- 单击 视图 > 调试窗口 > 调试器
- 单击 视图 > 调试窗口 > 变量
现在您已经激活了所有必需的窗口,让我们看看它们的位置并设置它们,以便我们可以轻松查看正在运行的微流程的所有不同方面。
- 找到屏幕底部的视图并通过向上拖动来放大窗口。
- 通过将选项卡拖放到出现的交叉选择器中的右侧图标上,将“ 变量”窗口向右移动,如屏幕截图所示。
- 选择 调试器 选项卡。
完美,您已经设置了调试器,可以查看所有相关的调试屏幕。如果您出于某种原因想要重置这些窗口,您可以通过查看 → 重置布局来实现... 您还了解了如何使用西门子Mendix Studio Pro 中的停靠功能,以便重新配置您的 UI 以满足您的需求。
调试微流
现在您的调试屏幕已设置好,您可以运行调试器并在执行过程中查看微流程的不同方面。
- 右键单击您的导入活动并选择 添加断点。
- 确保您的MockHrService正在运行。
- 在 Summerhill 项目中单击 本地运行 。
- 项目运行后,单击View App > Responsive Web。
- 在正在运行的 Summerhill 应用程序中单击您的导入导航。
您的微流将在导入活动处停止。您可以看到计算机任务栏上的西门子Mendix Studio Pro 图标颜色发生了变化。如果您现在切换到 Studio Pro,您将看到下面的屏幕。现在,您可以使用“变量”窗口和“ 调试器”窗口中的各种步骤命令来检查微流每个步骤中当前范围内的变量的内容。您可以通过取消选中它们来从“断点 ”窗口中删除或禁用现有断点 。
无状态运行时
运行时本身仅包含操作期间的状态。一旦动作完成,无论是像保存这样的默认动作,还是像微流这样的自定义动作,运行时都会将所有提交的对象发送到数据库。客户端下一页所需的所有非持久对象、所有未提交对象和所有已提交对象都发送给客户端。这允许运行时保持无状态。因此,西门子Mendix 具有水平扩展的能力。如果您在负载均衡器后面运行多个运行时,则客户端命中哪个运行时无关紧要,它们都是平等的,因为它们都是无状态的。这种无状态还允许轻松创建和销毁运行时实例;– 如果您根据 12factor 应用程序方法构建应用程序,这是一个关键要求。
这个事实确实带来了一个问题:非持久对象的生命周期是什么样的?由于它只存在于执行操作期间的运行时中,其余时间都花在客户端上,因此决定非持久对象的生命周期的是客户端。他们将通过在客户端上被创建来开始他们的生活。如果需要它们在服务器上执行,它们将被发送到运行时进行处理,但它们总是被发回。鉴于这一事实,非持久对象唯一可以存在的地方是客户端。如果非持久对象被手动删除或垃圾回收,因为不再引用对象(意味着西门子Mendix 中的关联)或客户端关闭,它们将被销毁。