2017-08-04 3 views
1

Javascript APIを使用してスクリプトを作成したので、これをSpaceにルールとして使用できます。ドキュメントがスペースに入ると、基本的にドキュメントの名前がチェックされ、ドキュメントの名前が保存されます(ドキュメントの名前には親のフォルダ名が含まれます)。次に親ディレクトリが作成されます(存在しない場合)それへの文書化。AlfrescoのJavascript APIを使用してノードを独自のツリーに移動することはできません

私はこの最後のステップで問題を抱えています。私が最近作成したフォルダにドキュメントを移動しようとするたびに、私は次のエラーを取得する:

Node has been pasted into its own tree. 

これは、私はかなり自動記述的であると考えており、これまでの私のコードです:

var fileName= document.properties.name; 
var fields = fileName.split('.'); 

var parentName= fields[0]; 
var newNode=space.childByNamePath(parentName); 

if (newNode === null) { //create folder and move document into it 

    newNode=space.createFolder(parentName); //works 
    document.move(newNode); //I'm getting the error here 

}else{ //folder already exists, just move document into it 

    document.move(newNode); //here too 

} 

私がのdocument.move(newNode)をコメントアウトした場合。行はすべて正常に動作します。親フォルダは正常に作成されましたが、明らかにドキュメントは現在のスペースのルートに保存されていますが、これは必要なものではありません。実際には、実際のフォルダに移動する必要があります。

何か間違っていますか?どんな助けでも大歓迎です。ありがとう。

UPDATE:確かに私は移動()私は他の範囲内の他の呼び出しをコメントアウトした場合、それが働いているかの範囲内の呼び出していることが分かりました。したがって、エラーはelse move()コールでスローされています。私は句を削除し、かの範囲の後に一つだけ移動()コールを入れた場合も、それはまた、同じエラーを生成します。

+0

アルフレコのデバッガを使用して何が起こっているのかを確認しますか? http://docs.alfresco.com/5.1/tasks/ws-controller-debug.html – Akah

+0

このデバッガはクライアント側のWebスクリプト用に作られていませんか?鉱山は、文書がこのスペースに入るたびに、いくつかの具体的なスペースに対するルールとして、サーバー側で実行されています。 –

+0

いいえ、これはバックエンドのjavascriptデバッガです。私はバックエンドのWebスクリプトではうまく動作していることを知っていますが、スクリプトルールで動作することは保証できません。とにかく、もしそれがうまくいくなら、それは本当に助けになるので、私は試してみます。 – Akah

答えて

3

ルールをバックグラウンドプロセスとして実行すると、問題が解決します(「バックグラウンドでルールを実行する」オプション)。

+1

いいね!何が起こっているのかを説明するためにあなたの答えを編集してください。私は興味がある ! – Akah

+0

あなたはちょうど私の日を救った。 StackOverflowに問題を投稿すると、単純で短く正確な解決策を得ることは決して期待できませんが、今度は私の膝に乗り、あなたに拍手を送るだけです。 –

+0

また、バックグラウンドでルールを実行することについてさらに説明することができたら、私は非常に感謝するでしょう –

関連する問題