2016-05-30 8 views
1

私はAlfresco Communityのjavascriptで簡単なスクリプトを書いています。私は、新しいファイルがアップロードされるたびにスクリプトを実行します。alfresco javascriptの継承とパス

フォルダに特定のファイル名(label.txt)が存在することを確認する必要があります。存在する場合は、後で治療するためにファイルに含まれている情報を使用します。

ファイル名だけを設定すると、フォルダ自体がスクリプトasignedのものであれば動作しますが、完全に動作します。

var labelFile = space.childByNamePath("label.txt"); 
    if (labelFile != null) 
    { 
    ... 
    } 

私は低いレベルにスクリプトの継承を設定するスクリプトが実行されますが、まだルートフォルダにlabel.txtファイルを見つけようとするフォルダ。私は、アップロードされたドキュメントの実際のパスを見つけるためにしようとしています:

var dpath = document.displayPath + "/label.txt"; 
var labelFile = space.childByNamePath(dpath); 
logFile.content += "labelFile: " + labelFile.displayPath + "\r\n"; 
    if (labelFile != null) 
    { 
    ... 
    } 

私はDPATH varにおそらく正しいパスを取得していますが、私は、ファイルを読み、そのことはできませんので、私は、ファイルオブジェクトにNULLの結果を得ますコンテンツ。

私は間違っていますか?

答えて

0

は問題は程度の継承はありませんでしたが、space.childByNamePathだけで、絶対的なものではなく相対パスを受け入れるので、私は宇宙のルートからそれを計算するAHD:

var dpath = document.displayPath; 
var dpatharray = dpath.split("/"); 
var dpathlength = dpatharray.length; 
var spath = space.displayPath; 
var spatharray = spath.split("/"); 
var spathlength = spatharray.length; 
var labelpath = ""; 
for (var i=spathlength + 1; i<dpathlength; i++) 
{ 
    labelpath += dpatharray[i] + "/"; 
} 

var labelFile = space.childByNamePath(labelpath + "label.txt"); 
1

「スペース」とは何ですか? "companyhome"を使用してみてください。詳細はこちらを参照してください。 http://docs.alfresco.com/4.0/references/API-JS-rootscoped.html

現在のスペースScriptNode(存在する場合)。 ルールから実行するスクリプトの場合、スペースオブジェクトはルールが存在する空間です。ルールが継承されている場合、これは予想されるスペースではない可能性があります。

+0

私はそれを読んで、それは正確です私が持っている問題。私は、ユーザーがインポートフォルダ(スクリプトのあるフォルダ)の下の新しいフォルダにファイルをアップロードし、既知のファイル "label.txt"に追加を追加することを期待しています。スペースパス上に置くことができないので、ドキュメントパス(データをアップロードする実際のルート)をキャプチャする必要があります。しかし、これは動作していません。 – jordi

+1

ルールを子スペースに適用するので動作しません。また、「スペース」ルートオブジェクトは毎回異なります。一方、ルートオブジェクト "companyhome"は常に同じでなければなりません。 – Lista

+0

私は今、私が問題をテストしているので、 "childPathName()"が "displayPath"が返す絶対パスを受け入れないことが、さらに分かります。私は実際の解決策を得るためにいくつかの文字列編集を試す必要があります。 – jordi