如何在 Mirth Connect 中调试 Javascript 代码?

How do you debug Javascript code in Mirth Connect?

我正在尝试使用代码模板在 Mirth Connect 中创建一个函数库。使用 logger.debug 很痛苦。我尝试将代码复制到虚拟 HTML 页面并使用浏览器的调试工具。不幸的是,浏览器中的 Mirth v/s 中的 javascript 引擎是不同的,并且 Mirth Javascript 使用了几种已弃用的语法。

如何在 Mirth Connect 中调试或逐步执行 Javascript 代码?

您可以在嵌入式模式下使用 Rhino 调试器....它有一些细微差别,但我认为这就是您要找的。

这里有一个线程可以引导您完成整个过程。

https://forums.mirthproject.io/forum/mirth-connect/support/7210-real-debugging-for-mirth-javascript-channel-code

所有版本的 Mirth Connect

“如有疑问,请注销”

有几种方法可以在 Mirth Connect 中执行此操作,而无需访问应用程序配置、其日志或主机:

  1. 拨打 logger。在您的情况下,由于您无权访问服务器,因此您必须以 logger.error("your data") 的形式执行此操作,因为记录器级别是在 log4j.properties 中的服务器上设置的。这些将在提供日志的部分视图的 MC 仪表板中可见。一个好的做法是在您的记录器语句前面加上它的来源位置,例如 logger.info(channelName + " transformer step 1 " + "your other data") 否则其他团队成员可能会想知道是什么渠道在控制台上发出了日志消息。
  2. 使用 Mirth Connect 地图记录有关变量值的详细信息。小心这一点,因为将大对象放在地图中,特别是 channelMapglobalChannelMap 会使您的消息有效负载过大。当然你也可以像打一段代码一样,使用通道映射变量来存储信息数据。例如:$c('patient is in table', true) 也等同于 channelMap.put('patient is in table', true)
  3. 在极端情况下,您可以故意仅使用调试数据覆盖您的消息。这在需要注销大型对象的情况下很有用。不过,它会为您的调试增加很多复杂性。

对于任何一种情况,请记录您的值:

  • 仅在设置 debug 标志时记录 - 这确保您的日志记录和调试不会在您不需要主动捕获数据时发送垃圾数​​据
  • 有有意义的消息 - 不要只是退出 "x = 12",退出 "MsgId: " + msg.getMessageId() + " in method foobar() had x = 12"

Mirth Connect 4.0 的新功能

MC 4.0 引入了一种从 Mirth 连接启动 Rhino 调试器的方法。请参阅 the release notes for MC 4.0 了解如何使用它。