更改文件名Alfresco

时间:2015-05-22 08:04:55

标签: workflow filenames alfresco business-process

我需要更改附加到工作流程的文件的名称,并在执行期间移动到其他位置。文件名是根据以进程(注册号字段和发件人)的形式输入的信息生成的。如何实施?谢谢!

例如:BX-2 / Nick_Berry.xls

Screen

3 个答案:

答案 0 :(得分:3)

您需要编写一个(java)监听器,该监听器将在表单完成并且任务结束时运行。 以下是如何从工作流程执行上下文中获取文件的NodeRef:

 <input type="text" class="field-name" value=""/>

 <textarea class="field-message"></textarea>

   input[type="text"].field-name{
   border-bottom: dashed 2px #c9c9c9;
   width: 300px;
   }

   textarea.field-message{
   border-bottom: dashed 2px #c9c9c9;
   width: 300px;
   resize:none;
   }

通过从任务对象获取值并将它们存储在NodeRef上来完成从表单属性值中设置名称:

    public NodeRef getFirstPackageItem(DelegateExecution execution){
    ActivitiScriptNode packageItemsbpm = (ActivitiScriptNode) execution.getVariable("bpm_package");
    try {
        if (packageItemsbpm != null && packageItemsbpm.getHasChildren()){
            return nodeService.getChildAssocs(packageItemsbpm.getNodeRef()).get(0).getChildRef();
        }
    } catch (Throwable e) {
        logger.error("",e);
    }
    return null;
}

答案 1 :(得分:2)

该文件作为执行范围变量bpm:package(即辅助子关联)附加到工作流。您应该能够实现一个EndTaskListener,它从任务范围中获取表单信息,并找出bpm:包的父级,然后重命名父级。

答案 2 :(得分:1)

我找到了解决这个问题的方法。需要在用户任务中创建执行侦听器。它的代码是:

<extensionElements>
                    <activiti:executionListener class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener" event="start">
                        <activiti:field name="script">
                            <activiti:string><![CDATA[    

                               if (typeof execution.getVariableLocal('zvernennya_registrationnumber') != undefined) execution.setVariable('zvernennya_registrationnumber', execution.getVariableLocal('zvernennya_registrationnumber'));    
                               if (typeof execution.getVariableLocal('zvernennya_sender') != undefined) execution.setVariable('zvernennya_sender', execution.getVariableLocal('zvernennya_sender'));        
                                 for (var i = 0; i < bpm_package.children.length; i++) {
                                    var child = bpm_package.children[i];   
                                        a = child.properties['cm:name'].split('.'); 
                                        var ext = a[a.length-1];   

                                        child.properties['cm:name']=zvernennya_registrationnumber+" "+zvernennya_sender+"."+ext;                  
                                        child.save();
                                }
                            ]]></activiti:string>
                        </activiti:field>
                    </activiti:executionListener>
            </extensionElements>