Как я могу быть в состоянии создать узел папки на companyhome в Alfresco? - PullRequest
1 голос
/ 24 июня 2011

Мне трудно найти ответ на мой вопрос. Я пытаюсь создать папку / пространство в Alfresco. Но я понятия не имею, делаю это? Может кто-то помочь мне с этим? Я использую Java Webscript.

Все, что я нахожусь в это:

package org.alfresco.module.demoscripts;

import java.io.IOException;

import org.alfresco.web.scripts.AbstractWebScript;
import org.alfresco.web.scripts.WebScriptException;
import org.alfresco.web.scripts.WebScriptRequest;
import org.alfresco.web.scripts.WebScriptResponse;
import org.json.JSONException;
import org.json.JSONObject;

public class SimpleWebScript extends AbstractWebScript
{
    public void execute(WebScriptRequest req, WebScriptResponse res)
        throws IOException
    {
        try
        {
            // build a json object
            JSONObject obj = new JSONObject();

            // put some data on it
            obj.put("field1", "data1");

            // build a JSON string and send it back
            String jsonString = obj.toString();
            res.getWriter().write(jsonString);
        }
        catch(JSONException e)
        {
            throw new WebScriptException("Unable to serialize JSON");
        }
    }    
}

Ответы [ 2 ]

2 голосов
/ 28 июня 2011

Как было указано, вы можете начать с использования JavaScript вместо Java. Кроме того, я заметил, что вы создаете новый объект JSON в своем коде, но я не уверен, почему.

Например, при использовании JavaScript веб-скрипт, который принимает имя папки, которая будет создана в домашнем офисе компании, может иметь контроллер, который будет выглядеть следующим образом:

    function main() {
        var folderName = args.folderName;
        if (folderName != null && folderName != "") {
        // continue
        } else {
        status.setCode(500);
        status.setMessage("Missing folder name argument");
        status.setRedirect(true);
        return;
        }

        var createdFolder = companyhome.createFolder(folderName);

        model.createdFolder = createdFolder;
    }

    main();

Код ищет переданный ему аргумент с именем folderName, а затем использует встроенную корневую переменную «companyhome» для создания новой папки. Затем он передает вновь созданный узел папки в модель, чтобы некоторые данные о новом узле могли быть возвращены пользователю.

Имя контроллера JavaScript (показанного выше) - createFolder.post.js. Я зарегистрировал его в хранилище в разделе Словарь данных / Веб-сценарии / пример. Наряду с этим я зарегистрировал файл с именем createFolder.post.desc.xml, который является дескриптором веб-скрипта:

    <webscript>
        <shortname>Create folder example</shortname>
        <description>
        <![CDATA[
        Creates a new folder in Company Home using the name specified in the folderName argument.
        ]]>
        </description>
        <url>/example/createFolder?folderName={folderName}</url>
        <format default="html">argument</format>
        <authentication>user</authentication>
        <transaction>required</transaction>
        <family>Example</family>
    </webscript>

И файл с именем createFolder.post.html.ftl, который является HTML-версией представления веб-скрипта:

    <html>
    <head>
        <title>Create folder web script</title>
    </head>
    <body>
        Successfully created a folder with the following metadata:<br />
        Name: ${createdFolder.name}<br />
        ID: ${createdFolder.id}<br />
        Noderef: ${createdFolder.nodeRef}<br />
    </body>
    </html>

После регистрации я обновил индекс веб-скриптов, перейдя на http://localhost:8080/alfresco/s/index и нажав кнопку "обновить веб-скрипты".

Затем я вызвал веб-скрипт, используя CuRL, например:

    curl -uadmin:admin -X POST "http://localhost:8080/alfresco/s/example/createFolder?folderName=foobar"

Вы заметите, что я решил, чтобы мой веб-скрипт принимал POST. Если вы хотите использовать другой метод HTTP, вы просто измените имена файлов соответственно.

Jeff

2 голосов
/ 24 июня 2011

Если вы новичок как в Java, так и в Alfresco, вы можете обнаружить, что написание WebScript в JavaScript лучше для вас. Обычно легче начать. Есть множество примеров , чтобы помочь вам.

Если вы решите придерживаться Java, отправной точкой в ​​вики Alfresco для вас будет Java Backed WebScripts и Java Foundation API . Один из примеров Java-сценариев показывает, как создавать узлы (вы можете использовать либо NodeService, либо FileFolderService, в зависимости от того, хотите ли вы полный контроль или простой способ).

Возможно, вы также захотите ознакомиться с некоторыми советами в Alfresco Wiki и на форумах о том, как структурировать ваши данные, поскольку создание большого количества новых узлов прямо под Домашней страницей компании может или не может быть лучшим вариантом для вас.

...