如何访问在迭代器内部定义的迭代器外部的 属性 中介器?

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

时,此范围内的属性将传递给错误处理程序