【问题标题】:Mule - Pass Parameters to datamapper and access them in xpath conditionsMule - 将参数传递给数据映射器并在 xpath 条件下访问它们
【发布时间】:2014-04-10 03:24:46
【问题描述】:

如何将参数传递给 mule 中的 datamapper 并访问它们。 (在 XSLT 中,我将它们作为上下文参数传递,在 param 中接收它们并使用 $ 符号访问)。我需要在数据映射器中做同样的事情。任何建议/链接/示例表示赞赏。

方法1: 我们在 datamapper 中使用了 invokeTransformer 方法

output.abc= invokeTransformer("MyTransformer",input.abcdef);

这个 MyTransformer 是一个 java 组件,它覆盖了这个默认方法。

@Override
public String transformMessage(MuleMessage message, String outputEncoding)
        throws TransformerException {
System.out.println("Inside transformer" +message.getProperty    ("sessionVariable1",PropertyScope.SESSION));
    return message.getProperty("sessionVariable1",PropertyScope.SESSION);

但是,问题是我没有从 mule 流中调用这个转换器。但是,从 datamapper 调用它。因此,参数“消息”没有通过。因此,无法检索该会话变量以返回数据映射器。有没有办法发送这个参数(来自datamapper的MuleMessage)?

【问题讨论】:

    标签: xslt mule datamapper mule-studio


    【解决方案1】:

    您可以在 DataMapper 中使用输入参数,然后在输出中引用它们:

    <set-variable variableName="testvar" value="value of testvar"/>
    <data-mapper:transform config-ref="new_mapping_grf"">
        <data-mapper:input-arguments>
            <data-mapper:input-argument key="testvar">#[flowVars['testvar']]</data-mapper:input-argument>
        </data-mapper:input-arguments>
    </data-mapper:transform>
    

    output.myField = invokeTransformer("MyTransformer",inputArguments.testvar);
    

    output.myField = inputArguments.testvar;
    

    通过输入端的绿色加号图标添加 DataMapper GUI 中可用的输入参数。

    【讨论】:

    • 如何在 xpath 条件下引用输入参数变量?
    • 我不知道你能不能做到。您可能必须在 DataMapper 之外定义基于 xpath 的路由,或者将多个 DataMapper 链接在一起以将 inputArgument 插入到 xml 结构中。
    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 2022-11-25
    • 2012-05-09
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多