0

JavaScriptを使用してAlfrescoのドキュメントにカテゴリを適用するにはどうすればよいですか?

このように試しました:

document.properties["cm:categories"] = "testCat";

アップデート:

このように、「ルートカテゴリ」は取得できますが、「サブカテゴリ」は取得できません。

var rootCats =  classification.getRootCategories("cm:generalclassifiable");
document. properties["cm:categories"] = rootCats[3];

これは機能しません:

document. properties["cm:categories"] = rootCats[3][1];
4

3 に答える 3

2

私はそれを見つけました、誰かがそれを必要とするならば、これはそれができる方法です

すべてのルートカテゴリを取得[オーディオ、ビデオ、画像、...]

var rootCats =  classification.getRootCategories("cm:generalclassifiable");

目的のルートカテゴリからサブカテゴリを取得->「ビデオ」からサブカテゴリ[ホラー、コメディ、...]

var singleCat = rootCats[1].subCategories; 

カテゴリをドキュメントに適用->「ホラー」をドキュメントに適用

doc. properties["cm:categories"] = singleCat[0]; //app

それを保存

doc.save();
于 2013-03-25T11:26:28.867 に答える
1

まず、ドキュメントに分類可能なアスペクトがあることを確認します(つまり、cm:generalClassizableアスペクトがあることを確認します)。

次に、追加するカテゴリを検索します。

更新:特定の名前のタイプcategoryのノードを見つけるためのクエリ例:

たとえば、このようなカテゴリを検索します。PATH句を追加して、正しい階層にいることを確認することもできます。

var nodes = var categories= search.luceneSearch('+TYPE:"http://www.alfresco.org/model/content/1.0}category" +@name:testCat');

次に、返された配列から要素を取得します。

ノードの既存のカテゴリを取得します。

categories= document.properties["cm:categories"];

新しいカテゴリをアレイにプッシュします。

categories.push(categoryToAdd);

これをドキュメントに割り当てます。

document.properties["cm:categories"] = categories;

document.save();

于 2013-03-21T13:45:07.297 に答える
0

同様の要件があり、OPの質問とは少し異なりますが、ここに含めることを保証するのに十分近いと感じています。

カテゴリを一括適用する必要がある場合があります。つまり、新しいビジネスを買収し、すべてのドキュメントを移行し、既存のコンテンツに一致するカテゴリを追加します。

多数のドキュメントにカテゴリを追加することは、インターフェイスで面倒です。アスペクト(分類可能)を有効にしてから、プロパティを編集して必要なカテゴリを選択する必要があります。すべてのドキュメントに対して個別に。さらに悪いことに、共有のエクスプローラービューからのドキュメントでは追加アスペクトを使用できないため、プレビューを入力する必要があります。大規模なドキュメントの場合、プレビューの入力自体が数秒遅れます。

そこで、親フォルダのカテゴリをその下に配置されたすべてのものに適用する簡単なスクリプトを作成しました。次に、そのフォルダのカテゴリを設定し、コンテンツの移動を開始するだけです(つまり、コンテンツを移動してカテゴリを取得してから、元の場所に戻りますが、すべてにアスペクトとカテゴリが適用されます)。

実際、現時点では2つあります。

  1. 最初のフォルダー/ルールは、オブジェクトが持っていたすべてのカテゴリーをオーバーライドし、それらを親フォルダーのカテゴリーのみに置き換えます-このフォルダーにBulkCategoriseという名前を付けます
  2. 2つ目は累積的であるため、既存のカテゴリを保持し、AccumulateCategoriesという名前の親フォルダからのカテゴリのみを追加します。

時間が許せば、それらを選択的に削除するために3分の1を作成します。

いくつかのメモ:

  • 分類可能な側面の追加は、実際には手動またはコードで行う必要はありません。少なくとも5.1では「正常に機能」します。
  • これはこれを行うための最良の方法ではないかもしれません
  • すでに適用されているカテゴリを蓄積しても問題は発生しないようで、自動的に合体/マージされるように見えます

これらのスクリプトを使用するには、2つのフォルダーを作成し、それぞれにルールを適用して、関連するスクリプトを実行します。

最初のスクリプトは、オブジェクトのカテゴリを親フォルダのカテゴリに完全に置き換え、簡単です[インストールに一致するように@nameとSITEを設定します]:

var inheritFromDir = search.luceneSearch('TYPE:"http://www.alfresco.org/model/content/1.0}folder" +@name:BulkCategorise +SITE:YOUR_SITE_NAME');
// We need to deref the array of noderefs result using inheritFromDir[0]
document.properties["cm:categories"] = inheritFromDir[0].properties["cm:categories"];
document.save();

2番目のスクリプトはもう少し複雑です-それを行う方法を確認するために、例としてロギングコードを残しました(コメントアウトしました)。これも理解するのに時間がかかったためです(これは非常に便利な機能です)。前と同じように、システムに一致するように最初の行の@nameとSITEを更新します。

var inheritFromDir = search.luceneSearch('TYPE:"http://www.alfresco.org/model/content/1.0}folder" +@name:AccumulateCategories +SITE:YOUR_SITE_NAME');
// We need to deref the single array result using inheritFromDir[0] to get categories from topmost parent (folder) node
var parentCatArray = inheritFromDir[0].properties["cm:categories"];
//and any existing categories of the doc, or null if none exist
var thisCatArray = document.properties["cm:categories"];
var thisLen = 0;

if (thisCatArray != null) {
   thisLen = thisCatArray.length;
} else {
   thisCatArray = new Array();
}

// Some logging to find out what  is going on...
//var logFile = space.childByNamePath("log.txt");

// If the log file does not already exist, create it in current folder.
//if (logFile == null) {
//    logFile = space.createFile("log.txt");
//}

//if (logFile != null) {
//    logFile.content += new Date().toGMTString() + "\tRun started. Length of existing array is: " + thisLen + "\r\n";
//    logFile.content += new Date().toGMTString() + "\tFound parent node categories:\r\n";
      for (var i=0; i < parentCatArray.length; i++)
      {
         thisCatArray[thisLen]=parentCatArray[i];
         thisLen += 1;
      }
//}

// Push the new array of categories to the document
thisCatArray.push(document);
// apply and save the doc
document.properties["cm:categories"] = thisCatArray;
document.save();

エボイラ!同様の方法で、BulkTagとBulkAccumulateTagsを実装しました。これで、任意のカテゴリを追加するのは、それらをフォルダに適用し、ドラッグアンドドロップでコンテンツを移動するのと同じくらい簡単です。

于 2017-04-06T02:16:21.567 に答える