将附加到任务文档移动到另一个节点

Move an attached to a task document to another node

向社区致意,我正在使用 alfresco 6.0.0 社区版,我想在任务完成时将附加到任务的文档移动到另一个节点。

我从这里 https://community.alfresco.com/thread/204737-workflow-parallel-group-review-with-move 找到了这个 "move" 函数,所以我目前正在做的是:

  1. 开始进程
  2. 将项目附加到我使用
  3. 创建的任务

/tasks/{taskId}/items (POST) method of the alfresco REST API.

  1. 完成任务

我移动文件的 bpmn 部分如下:

<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
              <activiti:field name="script">
                 <activiti:string> 

                   java.lang.System.out.println(bpm_package.children.length);
                    for (var i = 0; i &lt; bpm_package.children.length; i++){
                     bpm_package.children.move("b162be92-fb36-44f0-83c1-4432b8261c5a");
                    }
                 </activiti:string>
              </activiti:field>
           </activiti:taskListener>

其中 b162be92-fb36-44f0-83c1-4432b8261c5a 是我创建的文件夹的节点 ID。

不幸的是,当我完成此任务时出现以下错误:

Node Type: {http://www.alfresco.org/model/content/1.0}content, Node Aspects: [{http://www.alfresco.org/model/content/1.0}auditable, {http://www.alfresco.org/model/system/1.0}referenceable, {http://www.alfresco.org/model/system/1.0}localized] 0.0 2018-11-15 15:43:24,936 ERROR [impl.interceptor.CommandContext] [http-apr-8080-exec-3] Error while closing command context org.activiti.engine.ActivitiException: Exception while invoking TaskListener: Exception while invoking TaskListener: 10150807 Failed to execute supplied script: 10150806 TypeError: Cannot find function move in object Node Type: {http://www.alfresco.org/model/content/1.0}content, Node Aspects: [{http://www.alfresco.org/model/content/1.0}auditable, {http://www.alfresco.org/model/system/1.0}referenceable, {http://www.alfresco.org/model/system/1.0}localized]. (AlfrescoJS#10) at org.activiti.engine.impl.persistence.entity.TaskEntity.fireEvent(TaskEntity.java:742) at org.activiti.engine.impl.persistence.entity.TaskEntity.complete(TaskEntity.java:184) at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:52) at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:24) at org.activiti.engine.impl.cmd.NeedsActiveTaskCmd.execute(NeedsActiveTaskCmd.java:59) at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) at org.activiti.spring.SpringTransactionInterceptor.doInTransaction(SpringTransactionInterceptor.java:47) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131) at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45) at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35) at org.activiti.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:178) at org.alfresco.rest.workflow.api.impl.TasksImpl.update(TasksImpl.java:821) at sun.reflect.GeneratedMethodAccessor1556.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498)

有人能解释一下吗?非常感谢任何帮助:)

已解决

问题是 move 函数需要一个节点元素,而不是我传递给它的 id (String)。

固定代码如下:

<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
          <activiti:field name="script">
             <activiti:string> 
                for (var i = 0; i &lt; bpm_package.children.length; i++){
                 var p = bpm_package;
                 var doc = p.children[i];
                 var myNode = initiatorhome.childByNamePath("foldertomove/testFolder"); <!-- the names of the nodes under the root directory where the file should be moved to-->
                 doc.move(myNode); 
                }
             </activiti:string>
          </activiti:field>
       </activiti:taskListener>