我们如何通过在WSO2中动态比较时间戳来获得最新的时间戳



如何通过使用脚本中介器动态比较从soap接收到的时间戳和最新时间戳来获得最新的时间戳。输入将类似于2018-04-26T05:59:38.226-07:00

<iterate expression="/Customer" id="" sequential="true">
<target>
<sequence>
<property expression="CustomerID" name="CUS_ID_TO_UPDATE" scope="default" type="STRING"/>
<property expression="UpdateDate" name="LATEST_DATE" scope="default" type="STRING" />
</propertyGroup>
<script language="js"><![CDATA[
var log                = mc.getServiceLog();
var simpleDateFormat   = Packages.java.text.SimpleDateFormat;
var Customer_Id        = mc.getProperty('CUS_ID_TO_UPDATE');
var Updated_Date       = mc.getProperty('LATEST_DATE');
var format             = new simpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
var Time               = format.parse(Updated_Date);
var Latest_Updated_Date = "";
var Latest_Customer_Id  ="";
if (Time.getTime()>Latest_Updated_Date) 
{
Latest_Updated_Date = Time;
Latest_Customer_Id = Customer_Id;
}
else
{
Latest_Updated_Date;
Latest_Customer_Id;
}
log.info(Latest_Updated_Date);
log.info(Latest_Customer_Id);   
​
mc.setProperty('Date',Latest_Updated_Date);
mc.setProperty('ID',Latest_Customer_Id);]]></script>
<log>
<property expression="get-property('Date')" name="Date"/>
<property expression="get-property('ID')" name="ID"/>
</log>
</sequence>
</target>

下面是一个例子。

<?xml version="1.0" encoding="UTF-8"?>
<api context="/time" name="Time" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST">
<inSequence>
<property expression="//time1/text()" name="time1" scope="default" type="STRING"/>
<property expression="//time2/text()" name="time2" scope="default" type="STRING"/>
<script language="nashornJs"><![CDATA[
var time1 = mc.getProperty("time1");
var time2 = mc.getProperty("time2"); 
var eTime1 = new Date(time1).getTime();
var eTime2 = new Date(time2).getTime();
if(eTime1 > eTime2) {
mc.setProperty("latestTime", time1);
} else {
mc.setProperty("latestTime", time2);
}]]></script>
<payloadFactory media-type="xml">
<format>
<LatestTime>$1</LatestTime>
</format>
<args>
<arg evaluator="xml" expression="$ctx:latestTime"/>
</args>
</payloadFactory>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>

请求

<request>
<time1>2018-04-26T05:58:38.226-07:00</time1>
<time2>2018-04-26T05:59:38.226-06:00</time2>
</request>

响应

<LatestTime>2018-04-26T05:59:38.226-06:00</LatestTime>

最新更新