1

質問に対する答えを探すのに苦労しています。Alfresco でフォルダー/スペースを作成しようとしています。しかし、私はそれを行う考えがありませんか?誰かがこれで私を助けることができますか? 私はJavaウェブスクリプトを使用しています。

私がいるのはこれだけです:

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");
        }
    }    
}
4

2 に答える 2

2

Java と Alfresco の両方に慣れていない場合は、JavaScriptでWebScriptを作成する方が適切であることに気付くでしょう。通常は、開始する方が簡単です。参考になる事例もたくさんあります。

Java を使い続けることに決めた場合、Alfresco wiki の出発点はJava Backed WebScriptsJava Foundation APIです。Java Webscript の例の 1 つは、ノードの作成方法を示しています (完全な制御が必要か、簡単な方法が必要かによって、NodeService または FileFolderService のいずれかを使用できます)。

Alfresco Wiki やフォーラムで、データを構造化する方法についてのアドバイスを参照することもできます。Company Home の直下に多数の新しいノードを作成することが最適なオプションである場合とそうでない場合があるためです。

于 2011-06-24T09:48:22.420 に答える
2

指摘されたように、Java の代わりに JavaScript を使用して開始することをお勧めします。また、コード内で新しい JSON オブジェクトを作成していることに気付きましたが、その理由はわかりません。

たとえば、JavaScript を使用して、会社のホームの下に作成されるフォルダーの名前を受け入れる Web スクリプトには、次のようなコントローラーが含まれる場合があります。

    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 です。Data Dictionary/Web Scripts/example の下のリポジトリにチェックインしました。それに加えて、Web スクリプト記述子である 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>

そして、Web スクリプト ビューの HTML バージョンである createFolder.post.html.ftl というファイル:

    <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に移動し、[Web スクリプトを更新] ボタンをクリックして、Web スクリプト インデックスを更新しました。

次に、次のように、CuRL を使用して Web スクリプトを呼び出しました。

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

Web スクリプトが POST を受け入れるように選択したことに気付くでしょう。別の HTTP メソッドを使用する場合は、それに応じてファイル名を変更するだけです。

ジェフ

于 2011-06-27T23:14:19.357 に答える