Alfresco:基于一些自定义回购Web脚本的自定义共享评估器

Alfresco:基于一些自定义回购Web脚本的自定义共享评估器,alfresco,alfresco-share,Alfresco,Alfresco Share,因此,我想根据一些存储库WebScript的结果在Share中编写一组新的计算器 当前现有的共享评估器可以通过一些XML配置使用,并且与Alfresco常用元数据相关 但是,我想知道如何编写自己的Java evaluator,同时重新使用这里已有的大部分逻辑(BaseEvaluator) 假设我有一个存储库webscript,它返回一些类似于{“result”:“true”}的JSON: 如何从自定义计算器访问它?主要是如何从Spring上下文访问alfresco webapp的代理URL 我

因此,我想根据一些存储库WebScript的结果在Share中编写一组新的计算器

当前现有的共享评估器可以通过一些XML配置使用,并且与Alfresco常用元数据相关

但是,我想知道如何编写自己的Java evaluator,同时重新使用这里已有的大部分逻辑(BaseEvaluator)

假设我有一个存储库webscript,它返回一些类似于{“result”:“true”}的JSON:

  • 如何从自定义计算器访问它?主要是如何从Spring上下文访问alfresco webapp的代理URL
  • 我需要用Java编写自己的异步调用吗
  • 在哪里可以找到所需求值方法的JSONObject参数

谢谢你的帮助

看看这是否有用。这将进入一个扩展BaseEvaluator的类。通过Spring连接bean,然后在您的操作上设置evaluator

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;
}
在本例中,我使用了一个简单的示例web脚本,它回显JSON并根据“echo”参数的值切换结果。因此,当使用“false”调用它时,JSON返回false,而计算器返回false


我可能应该指出evaluate方法所期望的org.json.simple.JSONObject与我用来从响应json中获取结果的org.json.JSONObject之间的名称冲突

看看这是否有帮助。这将进入一个扩展BaseEvaluator的类。通过Spring连接bean,然后在您的操作上设置evaluator

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;
}
在本例中,我使用了一个简单的示例web脚本,它回显JSON并根据“echo”参数的值切换结果。因此,当使用“false”调用它时,JSON返回false,而计算器返回false


我可能应该指出evaluate方法所期望的org.json.simple.JSONObject与我用来从响应json中获取结果的org.json.JSONObject之间的名称冲突

你看过BaseEvaluator的源代码了吗?这应该可以回答你关于JSONObject的问题。你肯定需要自己打电话给回购层。Surf框架已经支持这一点,因此您应该能够利用surfapi来实现这一点。但是找不到示例。你看过BaseEvaluator的源代码了吗?这应该可以回答你关于JSONObject的问题。你肯定需要自己打电话给回购层。Surf框架已经支持这一点,因此您应该能够利用surfapi来实现这一点。但是找不到一个例子。谢谢杰夫,看起来正是我需要的。我会试试让你知道的。谢谢杰夫,看起来正是我需要的。我会试试让你知道的。