【问题标题】:Reading mule variables from property file in Mule 4从 Mule 4 的属性文件中读取 mule 变量
【发布时间】:2020-11-30 06:29:40
【问题描述】:

我有一个场景,在我的 mule 流中定义了一个变量。在属性文件中,有一个属性是一个字符串,包括流中定义的变量。从属性文件中读取属性时,不是用变量的值替换变量,而是将其打印为文本。 Mule 运行时版本是 4.2.2。这在 Mule 3.x 中按预期工作,但在 4.x 版本中遇到问题。

<flow name="sample-testFlow1" doc:id="4138e351-316b-40af-a694-c416b5dc317f" >
<http:listener doc:name="Listener" doc:id="424c82c0-3e23-4f61-8e9b-62ec69711493" config-ref="HTTP_Listener_config" path="/test2"/>
<set-variable value='#["EmployeeCode"]' doc:name="Set Variable" doc:id="45bd2007-907b-4749-af14-001ad2cf82a6" variableName="testVariable"/>
<ee:transform doc:name="Transform Message" doc:id="e23dff81-a4e7-4d26-8f9e-b533442ddd5b" >
    <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0 output application/java --- p('test.prop')]]>/ee:set-payload>
        </ee:message>
    </ee:transform>
</flow>

属性文件:

test.prop=Hello!Variable is #[vars.testVariable]

预期输出:Hello!Variable is EmployeeCode

但得到:Hello!Variable is #[vars.testVariable]

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: dataweave mule4


    【解决方案1】:

    只是将答案添加到 Aled,

    您也可以从 Mule 4.x 中的 Property/YAML 文件中读取值,如下所示。

    Mule::p('http.port')
    

    如上所述,您不能使用#[...] 来评估另一个表达式内的表达式,但您可以在DataWeave 中的字符串内使用$() 来评估DataWeave 表达式。

    【讨论】:

      【解决方案2】:

      您可以查看 Mule 中的 Parse Template Reference。我相信它会让您的解决方案变得更加容易。这是文档页面的链接->https://docs.mulesoft.com/mule-runtime/4.3/parse-template-reference

      请告诉我你的想法。

      【讨论】:

      • 您的建议完全符合我的要求。谢谢你的回答。
      【解决方案3】:

      这是意料之中的。该属性被读取为字符串,而不是作为表达式求值。即使将其展开,结果也会出错,因为您不能使用#[...] 来评估另一个表达式中的表达式,因为&lt;ee:set-payload&gt; 元素的内容已经是一个DataWeave 表达式。

      我认为您应该尝试使用Dynamic Expression Component 来动态评估表达式,而不是Transform。将属性的值设为表达式,不使用#[...],即"Hello!Variable is " ++ vars.testVariable

      【讨论】:

        【解决方案4】:

        感谢 Alad 和 Manish 的回复。

        我什至按照建议尝试不使用表达式标签“#[]”,但这是作为字符串打印而不是值。

        “Hello!Variable is” ++ vars.testVariable 评估为 'Hello!Variable is vars.testVariable' 而不是 'Hello!Variable is EmployeeCode'。

        使用 Mule::p('http.port') 返回 #["Hello!Variable is" ++ vars.sampleVar]。所以,我尝试将它设置在另一个变量中并读取它,但没有运气。

        谢谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-03
          • 2020-09-18
          相关资源
          最近更新 更多