【问题标题】:Problem with nested variables in MuleSoft 4MuleSoft 4 中的嵌套变量问题
【发布时间】:2021-10-28 13:04:22
【问题描述】:

Mulesoft 配置中的嵌套变量存在问题。我已经从实际使用中简化了这一点,因此更容易理解和测试。有一个名为“env_name”的环境变量,其值为“dev”。然后有一个名为“dev_string”的变量,其值为“this is the dev string”。最后我们有一个变量“finalString”的值是“${${env_name}_string}”,所以我们希望它应该查找 env_name 并解析为“${dev_string}”,然后查找 dev_string 并解析为 dev_string 的值,即“这是开发字符串”但是在启动时我们收到以下消息:“无法从属性提供程序中找到键 ${${env_name} 的配置属性值”看起来它正在找到开头的“${”并且只是匹配它与第一个关闭“}”而不是意识到中间还有另一个查找。

【问题讨论】:

  • finalString 的用途是什么?它是骡子变量吗?您是否在连接器配置中使用它?请提供详细信息。另请注意,MuleSoft 是公司的名称。您使用的产品是 Mule 4,而不是 MuleSoft 4。

标签: mulesoft mule4 mule-esb


【解决方案1】:

我不完全确定,因为问题中没有详细信息,但是问题似乎混合了 configuration properties 和变量。您调用的环境变量可能是配置属性或operating system environment variable。在这两种情况下,它们都是在应用程序初始化时静态设置的。它们的值也可以在初始化时使用字符串内的${name} 进行扩展。不要将它们与在流程执行期间动态设置的 Mule 变量混淆,并在表达式中使用 #[ vars.name ]。您不能使用${...} 来扩展变量。

我假设 finalString 是 Mule 变量,而 env_name 和 dev_string 是配置属性或环境变量。您不能使用${} 扩展嵌套的配置属性,但如果您要分配给Mule 变量,则应改为在表达式中使用p() 函数。幸运的是,它允许动态评估名称,因为它是一个表达式。

例子:

<set variable variableName="finalString" value="#[ p(p('dev_name') ++ '_string')]"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多