2012-05-04 13 views
0

因此,我想根據一些存儲庫web腳本的結果在Share中編寫一組新的評估器。Alfresco:基於一些自定義回購web腳本的自定義分享評估器

當前現有的Share評估器可通過某些XML配置使用,並且與Alfresco常用的元數據相關。

但是,我想知道如何編寫自己的Java評估器,同時重新使用大部分邏輯(BaseEvaluator)。

假設我有一個倉庫webscript返回一些JSON像{「結果」:「真正的」}:

  • 我如何從我的自定義計算器訪問它?主要是,我如何從Spring上下文訪問alfresco webapp的代理URL?
  • 我是否需要在Java中編寫自己的異步調用?
  • 我在哪裏可以找到所需評估方法的JSONObject參數?

感謝您的幫助

+0

你看過BaseEvaluator的源代碼嗎?這應該回答你關於JSONObject的問題。你肯定需要自己調用回購層。 Surf框架已經支持這個功能,所以你應該可以利用Surf API來做到這一點。儘管找到一個例子有困難。 –

回答

3

看看這會有所幫助。這進入了擴展BaseEvaluator的類。通過Spring將bean連線,然後將評估者設置爲您的操作。

public boolean evaluate(JSONObject jsonObject) { 
    boolean result = false; 

    final RequestContext rc = ThreadLocalRequestContext.getRequestContext(); 
    final String userId = rc.getUserId(); 
    try { 
     final Connector conn = rc.getServiceRegistry().getConnectorService().getConnector("alfresco", userId, ServletUtil.getSession()); 
     final Response response = conn.call("/someco/example?echo=false"); 
     if (response.getStatus().getCode() == Status.STATUS_OK) { 
      System.out.println(response.getResponse()); 
      try { 
       org.json.JSONObject json = new org.json.JSONObject(response.getResponse()); 
       result = Boolean.parseBoolean(((String) json.get("result"))); 
      } catch (JSONException je) { 
       je.printStackTrace(); 
       return false; 
      } 
     } else { 
      System.out.println("Call failed, code:" + response.getStatus().getCode()); 
      return false; 
     } 
    } catch (ConnectorServiceException cse) { 
     cse.printStackTrace(); 
     return false; 
    } 
    return result; 
} 

在這個例子中,我用一個簡單的例子網頁腳本回顯您的JSON和交換機基於「回聲」參數的值的結果。所以當它用「false」調用時,JSON返回false並且評估器返回false。

我應該指出評估方法期望的org.json.simple.JSONObject與我用來攔截響應JSON結果的org.json.JSONObject之間的名稱衝突。

+0

感謝傑夫,看起來完全像我所需要的。我會嘗試讓你知道。 –

+0

正常工作,再次感謝 –