浏览代码

HPCC-13370 filter ESP WUQuery by >1 ApplicationName/Value

Also return Application Values for flexible client-side filtering.

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx 10 年之前
父节点
当前提交
62af358fe8
共有 2 个文件被更改,包括 18 次插入5 次删除
  1. 5 4
      esp/scm/ws_workunits.ecm
  2. 13 1
      esp/services/ws_workunits/ws_workunitsService.cpp

+ 5 - 4
esp/scm/ws_workunits.ecm

@@ -347,9 +347,10 @@ ESPrequest [nil_remove] WUQueryRequest
     string LogicalFile;
     string LogicalFileSearchType("");
 
-    string ApplicationName;
-    string ApplicationKey;
-    string ApplicationData;
+    [depr_ver("1.55")] string ApplicationName;
+    [depr_ver("1.55")] string ApplicationKey;
+    [depr_ver("1.55")] string ApplicationData;
+    [min_ver("1.55")] ESParray<ESPstruct ApplicationValue> ApplicationValues;
 
     string After;
     string Before;
@@ -1609,7 +1610,7 @@ ESPresponse [exceptions_inline] WUGetStatsResponse
 };
 
 ESPservice [
-    version("1.54"),
+    version("1.55"),
     noforms,exceptions_inline("./smc_xslt/exceptions.xslt"),use_method_name] WsWorkunits
 {
     ESPmethod [resp_xsl_default("/esp/xslt/workunits.xslt")]     WUQuery(WUQueryRequest, WUQueryResponse);

+ 13 - 1
esp/services/ws_workunits/ws_workunitsService.cpp

@@ -1835,7 +1835,17 @@ void doWUQueryWithSort(IEspContext &context, IEspWUQueryRequest & req, IEspWUQue
 
     addWUQueryFilterTime(filters, filterCount, filterbuf, req.getStartDate(), WUSFwuid);
     addWUQueryFilterTime(filters, filterCount, filterbuf, req.getEndDate(), WUSFwuidhigh);
-    addWUQueryFilterApplication(filters, filterCount, filterbuf, req.getApplicationName(), req.getApplicationKey(), req.getApplicationData());
+    if (version < 1.55)
+        addWUQueryFilterApplication(filters, filterCount, filterbuf, req.getApplicationName(), req.getApplicationKey(), req.getApplicationData());
+    else
+    {
+        IArrayOf<IConstApplicationValue>& applicationFilters = req.getApplicationValues();
+        ForEachItemIn(i, applicationFilters)
+        {
+            IConstApplicationValue &item = applicationFilters.item(i);
+            addWUQueryFilterApplication(filters, filterCount, filterbuf, item.getApplication(), item.getName(), item.getValue());
+        }
+    }
 
     filters[filterCount] = WUSFterm;
 
@@ -1875,6 +1885,8 @@ void doWUQueryWithSort(IEspContext &context, IEspWUQueryRequest & req, IEspWUQue
         Owned<IEspECLWorkunit> info = createECLWorkunit("","");
         WsWuInfo winfo(context, wuid);
         winfo.getCommon(*info, 0);
+        if (version >= 1.55)
+            winfo.getApplicationValues(*info, WUINFO_IncludeApplicationValues);
         results.append(*info.getClear());
     }