Mule ESB 如何预先定义变量
Mule ESB How to define variables UPFRONT
快速短射:
有没有办法预先设置流[将接收]的预期输入参数?不得不提的是,其目的是利用 Anypoint Studio 的 Metada 窗格,该窗格显示 "output variables"(无论它们是有效负载、流还是会话变量)。
详尽,有上下文解释:
我是一名 'lazy' 程序员。我已经非常喜欢 [大多数] IDE 中的那些自动完成功能。当我发现 Mule Anypoint Studio 具有自动完成功能和 'meta-data',它显示了创建的内容时,我感到非常满意。
但是当我开始构建流程时,我开始怀疑自己是否有某种方法可以获取传入参数(我指的是那些输入参数,例如,JMS 订阅流程期望接收的参数)。
也许示例案例会更容易理解。示例 XML:
<flow name="flow.JMSSubscriber">
<jms:inbound-endpoint topic="/test" connector-ref="Active_MQ_PasswordReset" doc:name="JMS"/>
<flow-ref name="flow.SetVariables" doc:name="flow.SetVariables"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
<sub-flow name="flow.SetVariables">
<set-variable variableName="whatever" value="#["value"]" doc:name="Variable"/>
</sub-flow>
您可以发现单击流参考 'flow.SetVariables',然后查看“元数据”窗格(假设您处于标准 'Mule Design' 视角,此窗格位于右下角window),单击 'Output' 选项卡,然后 voilà:'whatever' Flow Variable [在 "flow.SetVariables" 子流中设置] 在那里。
这是我正在描述的屏幕 URL:http://i.stack.imgur.com/raSYc.png .
我最初的尝试是使用 'set-variable' 设置一个模拟这些变量创建的子流。当你只有少数几个变量时(我的手只有五个手指,因此五个变量是极限)或者当参数是扁平的(没有嵌套,例如'/quantity/value,/quantity/UOM ', 或 '/price/value , /price/currency').
但说真的:6 个月后,我将不记得 flow 期望的输入参数是什么。或者,如果你正在处理一个结构化的、多层嵌套的 XML 输入,就像那些 OAGIS XML 一样,设置它会很痛苦(添加 'that'结构简单吗?)
这样做的想法也是为了方便那些流的维护。其他人会来学习 Mule 并维护这些流程。因此,我想让他们的生活更轻松(更不用说这将帮助他们自己做事)
因此我的问题是:有没有办法预先设置流[将接收]的预期输入参数?不得不提的是,其目的是利用 Anypoint Studio 的 Metada 窗格,该窗格显示 "output variables"(无论它们是负载、流还是会话变量)。
在属性视图的左侧有一个元数据选项卡。您可以在那里为消息处理器指定 input/output 元数据。
如果它们是结构化类型(xml、json 等),您可以使用模式文件或样本数据(它会尝试推断模式)
快速短射:
有没有办法预先设置流[将接收]的预期输入参数?不得不提的是,其目的是利用 Anypoint Studio 的 Metada 窗格,该窗格显示 "output variables"(无论它们是有效负载、流还是会话变量)。
详尽,有上下文解释:
我是一名 'lazy' 程序员。我已经非常喜欢 [大多数] IDE 中的那些自动完成功能。当我发现 Mule Anypoint Studio 具有自动完成功能和 'meta-data',它显示了创建的内容时,我感到非常满意。
但是当我开始构建流程时,我开始怀疑自己是否有某种方法可以获取传入参数(我指的是那些输入参数,例如,JMS 订阅流程期望接收的参数)。
也许示例案例会更容易理解。示例 XML:
<flow name="flow.JMSSubscriber">
<jms:inbound-endpoint topic="/test" connector-ref="Active_MQ_PasswordReset" doc:name="JMS"/>
<flow-ref name="flow.SetVariables" doc:name="flow.SetVariables"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
<sub-flow name="flow.SetVariables">
<set-variable variableName="whatever" value="#["value"]" doc:name="Variable"/>
</sub-flow>
您可以发现单击流参考 'flow.SetVariables',然后查看“元数据”窗格(假设您处于标准 'Mule Design' 视角,此窗格位于右下角window),单击 'Output' 选项卡,然后 voilà:'whatever' Flow Variable [在 "flow.SetVariables" 子流中设置] 在那里。
这是我正在描述的屏幕 URL:http://i.stack.imgur.com/raSYc.png .
我最初的尝试是使用 'set-variable' 设置一个模拟这些变量创建的子流。当你只有少数几个变量时(我的手只有五个手指,因此五个变量是极限)或者当参数是扁平的(没有嵌套,例如'/quantity/value,/quantity/UOM ', 或 '/price/value , /price/currency').
但说真的:6 个月后,我将不记得 flow 期望的输入参数是什么。或者,如果你正在处理一个结构化的、多层嵌套的 XML 输入,就像那些 OAGIS XML 一样,设置它会很痛苦(添加 'that'结构简单吗?)
这样做的想法也是为了方便那些流的维护。其他人会来学习 Mule 并维护这些流程。因此,我想让他们的生活更轻松(更不用说这将帮助他们自己做事)
因此我的问题是:有没有办法预先设置流[将接收]的预期输入参数?不得不提的是,其目的是利用 Anypoint Studio 的 Metada 窗格,该窗格显示 "output variables"(无论它们是负载、流还是会话变量)。
在属性视图的左侧有一个元数据选项卡。您可以在那里为消息处理器指定 input/output 元数据。
如果它们是结构化类型(xml、json 等),您可以使用模式文件或样本数据(它会尝试推断模式)