如何访问在迭代器内部定义的迭代器外部的 属性 中介器?
How to access property mediator outside iterator which is defined inside iterator?
我的树如下
<iterate xmlns:oag="http://www.openapplications.org/oagis/10" xmlns:fn="http://www.w3.org/2005/xpath-functions" continueParent="true" preservePayload="true" attachPath="//ProcessCredit/DataArea" expression="//ProcessCredit/DataArea/Credit sequential="true">
.....
<property xmlns:ns="http://org.apache.synapse/xsd"
xmlns:oa="http://www.openapplications.org/oagis/10"
name="ChargeTransactionKey"
expression="concat(get-property('operation','ChargeTransactionKey'),//Extension/ValueText[@typeCode='Charge Transaction Key'],':')"
scope="operation"
type="STRING"
description="ChargeTransactionKey"/>
...........
</iterate >
<log level="full">
<property name="requestIdChargeTransactionKey"
expression="get-property('operation','ChargeTransactionKey')"/>
</log>
但是 属性 "requestIdChargeTransactionKey" 中的值为 null,这意味着我无法捕获在迭代器中定义的 属性。
任何人都可以帮助语法吗?
iterate 中的中介与 MessageContext 的克隆一起使用。如果您继续父中介(将 continueParent 属性设置为 true),您将使用初始 MessageContext,因此您在 iterate 中使用范围 'default' 设置的所有属性都将丢失
但是有一个名为 'operation' 的作用域用于在操作上下文级别检索 属性,如果您在迭代中使用此作用域设置 属性,您可以得到它父中介中的值
内部迭代:
<property name="ChargeTransactionKey" value="xxx" scope="operation"/>
在家长调解中:
get-property('operation','ChargeTransactionKey')
WSO2 Documentation,您可以从操作范围中获取操作上下文级别的属性。
具有操作范围的 iterated/cloned 消息中的属性会保留在序列中,即使您已将 API 资源配置为在存在故障时通过故障序列发送。
get-属性('operation', String 属性Name)
具有操作范围的给定属性仅存在于单个请求中,并且可以被单个资源访问。当 FORCE_ERROR_ON_SOAP_FAULT 属性 设置为 true
时,此范围内的属性将传递给错误处理程序
我的树如下
<iterate xmlns:oag="http://www.openapplications.org/oagis/10" xmlns:fn="http://www.w3.org/2005/xpath-functions" continueParent="true" preservePayload="true" attachPath="//ProcessCredit/DataArea" expression="//ProcessCredit/DataArea/Credit sequential="true">
.....
<property xmlns:ns="http://org.apache.synapse/xsd"
xmlns:oa="http://www.openapplications.org/oagis/10"
name="ChargeTransactionKey"
expression="concat(get-property('operation','ChargeTransactionKey'),//Extension/ValueText[@typeCode='Charge Transaction Key'],':')"
scope="operation"
type="STRING"
description="ChargeTransactionKey"/>
...........
</iterate >
<log level="full">
<property name="requestIdChargeTransactionKey"
expression="get-property('operation','ChargeTransactionKey')"/>
</log>
但是 属性 "requestIdChargeTransactionKey" 中的值为 null,这意味着我无法捕获在迭代器中定义的 属性。
任何人都可以帮助语法吗?
iterate 中的中介与 MessageContext 的克隆一起使用。如果您继续父中介(将 continueParent 属性设置为 true),您将使用初始 MessageContext,因此您在 iterate 中使用范围 'default' 设置的所有属性都将丢失
但是有一个名为 'operation' 的作用域用于在操作上下文级别检索 属性,如果您在迭代中使用此作用域设置 属性,您可以得到它父中介中的值
内部迭代:
<property name="ChargeTransactionKey" value="xxx" scope="operation"/>
在家长调解中:
get-property('operation','ChargeTransactionKey')
WSO2 Documentation,您可以从操作范围中获取操作上下文级别的属性。
具有操作范围的 iterated/cloned 消息中的属性会保留在序列中,即使您已将 API 资源配置为在存在故障时通过故障序列发送。
get-属性('operation', String 属性Name)
具有操作范围的给定属性仅存在于单个请求中,并且可以被单个资源访问。当 FORCE_ERROR_ON_SOAP_FAULT 属性 设置为 true
时,此范围内的属性将传递给错误处理程序