Поделитесь файлом рабочего процесса с правопреемниками — Alfresco

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

Как я могу поделиться файлом при создании рабочего процесса с назначенными лицами?

Заранее спасибо.


person PRVS    schedule 03.03.2016    source источник
comment
Что именно вы имеете в виду под «поделиться с правопреемниками»? Вы хотите, чтобы правопреемники получили права на изменение файла? Хотите, чтобы исполнители получили задание со ссылкой на файл?   -  person Stefan De Laet    schedule 04.03.2016
comment
Я хочу, чтобы правопреемники имели файл в общих файлах, например, или мои файлы @StefanDeLaet.   -  person PRVS    schedule 04.03.2016


Ответы (1)


Используйте прослушиватель выполнения потока в начале рабочего процесса, который получает узлы в вашем пакете рабочего процесса, а затем добавляет ссылку на узел «домашняя страница пользователя» в качестве вторичного родителя.

Получить узлы пакета рабочего процесса:

 ActivitiScriptNode packageItemsbpm = (ActivitiScriptNode) execution.getVariable(BPM_PACKAGE);
List<ChildAssociationRef> packageitemAssociations =  nodeService.getChildAssocs(packageItemsbpm.getNodeRef()); 

Затем повторите эти узлы пакета wf и добавьте их в домашние папки исполнителей:

for(String assigneeName : assigneesList) {
    ResultSet rs = getServiceRegistry().getSearchService().query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, SearchService.LANGUAGE_LUCENE, "PATH:\"/app:company_home/app:user_homes/cm:"+ assigneeName  +"\"");
    if(rs.length() > 0){
          NodeRef assigneeHome = rs.getNodeRef(0);                                        
          nodeService.addChild(assigneeHome, nodeRef, ContentModel.ASSOC_CONTAINS, nodeService.getPrimaryParent(nodeRef).getQName());
    }
 }
person Stefan De Laet    schedule 07.03.2016
comment
Но эти общие файлы являются общими файлами правопреемников, которые я прикрепляю в своем рабочем процессе? Я не могу понять, как я могу получить их noderefs. - person PRVS; 07.03.2016
comment
Общая папка является общей для всех. Если вы хотите поделиться с ограниченным числом пользователей, вы должны сделать вышеописанное с домом пользователя отдельных правопреемников. Вы можете найти ссылки на узлы этих домашних папок, используя поиск по пути, например PATH:/app:company_home/app:user_homes/cm:mjackson. - person Stefan De Laet; 07.03.2016
comment
Только одно, packageNode - это nodeRef файла, прикрепленного к рабочему процессу? - person PRVS; 07.03.2016
comment
да исправить. вы можете найти их следующим образом: ActivitiScriptNode packageItemsbpm = (ActivitiScriptNode) execute.getVariable(BPM_PACKAGE); вернуть nodeService.getChildAssocs (packageItemsbpm.getNodeRef()); - person Stefan De Laet; 08.03.2016
comment
Два первых параметра функции createAssociation — это NodeRef. Как я могу создать nodeRef для пути к домашним папкам? Я пытаюсь это: NodeRef assigneesNodeRef = assignees.get(i).getNodeRef(); nodeService.createAssociation(assigneesNodeRef, nodeRef, ContentModel.ASSOC_CONTAINS); но это не дает мне путь. - person PRVS; 08.03.2016
comment
И, конечно же, я получаю ошибку: Found 1 integrity violations: The association source type is incorrect: Source Node: workspace://SpacesStore/b2f97e3b-f3c8-4c60-852a-0d14783943a0 Association: Association[ class=ClassDef[name={http://www.alfresco.org/model/content/1.0}folder], name={http://www.alfresco.org/model/content/1.0}contains, target class={http://www.alfresco.org/model/system/1.0}base, source role=null, target role=null] Required Source Type: {http://www.alfresco.org/model/content/1.0}folder Actual Source Type: {http://www.alfresco.org/model/content/1.0}content - person PRVS; 08.03.2016
comment
Можете ли вы помочь мне с решением для этого? - person PRVS; 08.03.2016
comment
Я обновил ответ. попробуйте вместо этого использовать метод nodeService.addChild(...) - person Stefan De Laet; 09.03.2016