Нужна помощь по workflow (перемещение согласованного договора в реестр договоров )
Сделал workflow по трехступенчатому согласованию договора по http://confluence.ecm-alfresco.ru/pages/viewpage.action?pageId=5144907
решил добавить перенос файла после согласования в реестр договоров.
вот описание данного шага
<userTask id="coordinationEndTask" name="Договор согласован" activiti:assignee="${bpm_assignee.properties.userName}" activi
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
if (typeof bpm_workflowDueDate != 'undefined') task.setVariable('bpm_dueDate', bpm_workflowDueDate);
if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;
var folder = companyhome.childByNamePath("/Сайты/current/dataLists/Договора");
logger.error("folder "+folder);
for (var i = 0; bpm_package.children.length > i; i++) {
var child = bpm_package.children[i];
child.move(folder);
}
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
но вылетает ошибка:
17:18:01,066 DEBUG [org.alfresco.repo.jscript.RhinoScriptProcessor.calls] string script Exception
org.mozilla.javascript.WrappedException: Wrapped org.alfresco.repo.security.permissions.AccessDeniedException:
08180070 Отказано в доступе. У вас недостаточно прав для выполнения данной операции. (AlfrescoJS#7)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.c50._c0(AlfrescoJS:7)
at org.mozilla.javascript.gen.c50.call(AlfrescoJS)
at org.mozilla.javascript.gen.c50.exec(AlfrescoJS)
at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:502)
at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:276)
at org.alfresco.repo.processor.ScriptServiceImpl.executeString(ScriptServiceImpl.java:286)
at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:193)
at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:183)
at sun.reflect.GeneratedMethodAccessor1254.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
1. Файл присоединен из общего каталога. все его видят.
2. в реестр руками этот пользователь может загружать.
Уважаемые эксперты, подскажите, пожалуйста, где и какие права не прописаны?
Спасибо.
решил добавить перенос файла после согласования в реестр договоров.
вот описание данного шага
<userTask id="coordinationEndTask" name="Договор согласован" activiti:assignee="${bpm_assignee.properties.userName}" activi
<extensionElements>
<activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
<activiti:field name="script">
<activiti:string>
if (typeof bpm_workflowDueDate != 'undefined') task.setVariable('bpm_dueDate', bpm_workflowDueDate);
if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;
var folder = companyhome.childByNamePath("/Сайты/current/dataLists/Договора");
logger.error("folder "+folder);
for (var i = 0; bpm_package.children.length > i; i++) {
var child = bpm_package.children[i];
child.move(folder);
}
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
</userTask>
но вылетает ошибка:
17:18:01,066 DEBUG [org.alfresco.repo.jscript.RhinoScriptProcessor.calls] string script Exception
org.mozilla.javascript.WrappedException: Wrapped org.alfresco.repo.security.permissions.AccessDeniedException:
08180070 Отказано в доступе. У вас недостаточно прав для выполнения данной операции. (AlfrescoJS#7)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.c50._c0(AlfrescoJS:7)
at org.mozilla.javascript.gen.c50.call(AlfrescoJS)
at org.mozilla.javascript.gen.c50.exec(AlfrescoJS)
at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:502)
at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:276)
at org.alfresco.repo.processor.ScriptServiceImpl.executeString(ScriptServiceImpl.java:286)
at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:193)
at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:183)
at sun.reflect.GeneratedMethodAccessor1254.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
1. Файл присоединен из общего каталога. все его видят.
2. в реестр руками этот пользователь может загружать.
Уважаемые эксперты, подскажите, пожалуйста, где и какие права не прописаны?
Спасибо.
Комментарии
19/09/2014 - 07:18
Сначала копирую карточку документа в другой реестр с архивами, а из текущего удаляю. Работает до того пока руками что-то не удалишь из исходного реестра и выдает ошибку прав доступа.
Поэтому было принято решение сделать так:
Копировать карточку в архивный реестр, но при этом из исходного не удалять, а прятать карточку снимая права у всех пользователей.
Тот же код, что и выше но уже без item.remove(); и прятаем карточку:
Не знаю чем это вам поможет, но у меня работает именно такой подход.