gpt4 book ai didi

javascript - WSO2 ESB 迭代计数器

转载 作者:行者123 更新时间:2023-11-29 16:15:10 24 4
gpt4 key购买 nike

我正在使用迭代调解器来保存文件。为此,我需要一个迭代计数器。我尝试在迭代之外创建一个属性,并使用脚本中介来计算迭代次数,如下所示。

  <property name="AttachmentCounter" value="0"/>
<iterate xmlns:ns="http://org.apache.synapse/xsd" continueParent="true" expression="$body/ticket/IctAttachments/item" id="IctAttachments" sequential="true">
<target>
<sequence>
<script language="js">
<![CDATA[var counter = mc.getProperty("AttachmentCounter");
counter = parseInt(counter) + 1;
mc.setProperty("AttachmentCounter", counter);]]>
</script>
<log>
<property name="AttachmentCounter:" expression="get-property('AttachmentCounter')"/>
</log>
</sequence>
</target>
</iterate>

问题是,我在每次迭代后得到相同的数字。这是什么原因?有没有我看不到的错误?也许还有另一种方法,我在网上搜索时找不到。

最佳答案

Mediator iterate 在内部复制 MessageContext,因此 target\sequence 中的所有更改都不会影响其余部分。

你可以编写你的mediator来进行计数:

public class CountMediators extends AbstractMediator {
private String xpathString = null;
private String uri = null;
private String prefix = null;

@Override
public boolean mediate(MessageContext synCtx) {
SOAPEnvelope envelope = synCtx.getEnvelope();
SynapseXPath expression = null;
List splitElements = null;
try {
expression = new SynapseXPath(xpathString);
if (uri != null && prefix != null)
expression.addNamespace(new NamespaceImpl(uri, prefix));
splitElements = EIPUtils.getMatchingElements(envelope, synCtx, expression);
} catch (JaxenException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
if (splitElements != null)
synCtx.setProperty("count", splitElements.size());
return true;
}

public String getXpathString() {
return xpathString;
}

public void setXpathString(String xpathString) {
this.xpathString = xpathString;
}

public String getUri() {
return uri;
}

public void setUri(String uri) {
this.uri = uri;
}

public String getPrefix() {
return prefix;
}

public void setPrefix(String prefix) {
this.prefix = prefix;
}
}

这里可以下载jar , 将它放在 wso2esb-4.6.0/repository/components/lib/并重启 esb

使用manual

关于javascript - WSO2 ESB 迭代计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17550797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com