【问题标题】:Change the file name Alfresco更改文件名 Alfresco
【发布时间】:2015-05-22 08:04:55
【问题描述】:

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

例如:BX-2/Nick_Berry.xls

Screen

【问题讨论】:

  • 您使用的是哪个工作流引擎?

标签: workflow filenames alfresco business-process


【解决方案1】:

您需要编写一个 (java) 侦听器,该侦听器将在表单完成且任务结束时运行。
以下是如何从工作流执行上下文中获取文件的 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;
}

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

NodeRef file = getFirstPackageItem(execution)
Object filenameprefix = task.getVariable("mymodel_regnumber");
Object filenamesuffix = task.getVariable("mymodel_sender");
nodeService.setProperty(file, ContentModel.PROP_NAME, filenameprefix+"/"+filenamesuffix );

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我找到了自己的解决方案。需要在用户任务中创建执行监听器。它的代码是:

      <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>
      

      【讨论】:

        猜你喜欢
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多