同様の要件があり、OPの質問とは少し異なりますが、ここに含めることを保証するのに十分近いと感じています。
カテゴリを一括適用する必要がある場合があります。つまり、新しいビジネスを買収し、すべてのドキュメントを移行し、既存のコンテンツに一致するカテゴリを追加します。
多数のドキュメントにカテゴリを追加することは、インターフェイスで面倒です。アスペクト(分類可能)を有効にしてから、プロパティを編集して必要なカテゴリを選択する必要があります。すべてのドキュメントに対して個別に。さらに悪いことに、共有のエクスプローラービューからのドキュメントでは追加アスペクトを使用できないため、プレビューを入力する必要があります。大規模なドキュメントの場合、プレビューの入力自体が数秒遅れます。
そこで、親フォルダのカテゴリをその下に配置されたすべてのものに適用する簡単なスクリプトを作成しました。次に、そのフォルダのカテゴリを設定し、コンテンツの移動を開始するだけです(つまり、コンテンツを移動してカテゴリを取得してから、元の場所に戻りますが、すべてにアスペクトとカテゴリが適用されます)。
実際、現時点では2つあります。
- 最初のフォルダー/ルールは、オブジェクトが持っていたすべてのカテゴリーをオーバーライドし、それらを親フォルダーのカテゴリーのみに置き換えます-このフォルダーにBulkCategoriseという名前を付けます
- 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を実装しました。これで、任意のカテゴリを追加するのは、それらをフォルダに適用し、ドラッグアンドドロップでコンテンツを移動するのと同じくらい簡単です。