0

そこで、いくつかのリポジトリ Web スクリプトの結果に基づいて、Share に新しい一連のエバリュエーターを書きたいと思います。

現在の既存の共有エバリュエーターは、いくつかの XML 構成を通じて使用でき、Alfresco の通常のメタデータに関連付けられています。

しかし、すでにここにあるほとんどのロジック (BaseEvaluator) を再利用しながら、独自の Java エバリュエーターを作成する方法を知りたいです。

{"result" : "true"} のような JSON を返すリポジトリ Web スクリプトがあるとします。

  • カスタム Evaluator からアクセスするにはどうすればよいですか? 主に、Spring コンテキストから alfresco webapp へのプロキシ URL にアクセスするにはどうすればよいですか?
  • Java で独自の非同期呼び出しを作成する必要がありますか?
  • 必須の evaluate メソッドのこの JSONObject パラメーターはどこにありますか?

ご協力いただきありがとうございます

4

1 に答える 1

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をエコーバックし、「echo」引数の値に基づいて結果を切り替える簡単なサンプルWebスクリプトを使用しています。したがって、「false」で呼び出されると、JSONはfalseを返し、エバリュエーターはfalseを返します。

おそらく、evaluateメソッドが期待するorg.json.simple.JSONObjectと、応答JSONからの結果を取得するために使用しているorg.json.JSONObjectとの間の名前の衝突を指摘する必要があります。

于 2012-05-08T19:33:55.117 に答える