2016-05-30 3 views
1

Я пишу простой скрипт на javascript для сообщества Alfresco. У меня есть скрипт runnign каждый раз, когда загружается новый файл.alfresco javascript наследование и пути

Мне нужно проверить, имеет ли конкретное имя файла (label.txt) в папке. Если он существует, я буду использовать информацию, содержащуюся в файле, для последующего лечения.

Если я устанавливаю только имя файла, он работает до тех пор, пока сама папка является тем, у кого сценарий назначен, он работает безупречно.

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 вар, но я получаю результат NULL на объект файла, так что я не могу прочитать файл и его содержание.

Что я делаю неправильно?

ответ

0

Проблема была не о наследовании, а space.childByNamePath просто принимать относительные пути, не является абсолютным, так что я АХД вычислить его из пространства корня:

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

Я читал, что и это точно проблема у меня есть. Я ожидаю, что пользователи загружат свои файлы в новые папки под папкой импорта (тот, у кого есть скрипт), и добавьте inormation в известный файл «label.txt». Поскольку я не могу лежать на космическом пути, мне нужно захватить путь к документу (реальный маршрут, где они загружают данные). Но это не работает. – jordi

+1

Это не работает с тех пор, как вы применяете правило к детским пространствам, а корневой объект «пробел» каждый раз отличается. С другой стороны, корневой объект «companyhome» всегда должен быть одинаковым. – Lista

+0

Я думаю, что моя проблема, поскольку я тестирую ее сейчас, имеет больше возможностей увидеть, когда «childByNamePath()» не принимает абсолютный путь, возвращаемый «displayPath». Я должен попробовать несколько строк редактирования, чтобы получить рабочее решение. – jordi

Смежные вопросы