Alfresco 如何使用规则(包括文档)启动露天工作流

Alfresco 如何使用规则(包括文档)启动露天工作流,alfresco,workflow-activity,activiti,Alfresco,Workflow Activity,Activiti,当任何文档插入到文件夹中时,我将尝试启动一个自定义工作流,并将该文档附加到该文件夹。我使用Alfresco社区v4.2 如果我选择一个文档,然后“启动工作流”,Wokflow工作正常。文档已正确添加到工作流中,我可以完成它 我的规则已经就位,在插入任何文档时执行以下脚本(注释中的代码就是我尝试的): 脚本执行良好时,会创建一个工作流,但不会向工作流中添加任何文档。脚本中的“我的文档引用”不为null,因为工作流中正确输出了文档的名称 我已经读过这两篇文章,但都没有任何帮助: 编辑:我已经

当任何文档插入到文件夹中时,我将尝试启动一个自定义工作流,并将该文档附加到该文件夹。我使用Alfresco社区v4.2

如果我选择一个文档,然后“启动工作流”,Wokflow工作正常。文档已正确添加到工作流中,我可以完成它

我的规则已经就位,在插入任何文档时执行以下脚本(注释中的代码就是我尝试的):

脚本执行良好时,会创建一个工作流,但不会向工作流中添加任何文档。脚本中的“我的文档引用”不为null,因为工作流中正确输出了文档的名称

我已经读过这两篇文章,但都没有任何帮助:

编辑:我已经能够缩小范围了。我在工作流中的第一个任务分配给候选组,而不是个人。组名由以下代码段检索:

<extensionElements>
    <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
        <activiti:field name="script">
            <activiti:string>
                execution.setVariable('wf_secretairesGroup', groups.getGroup('Secretaires').getFullName());
            execution.setVariable('wf_responsablesGroup', groups.getGroup('Responsables').getFullName());
            </activiti:string>
        </activiti:field>
    </activiti:executionListener>
</extensionElements>

setVariable('wf_secretairesGroup',groups.getGroup('Secretaires').getFullName());
setVariable('wf_responsablesGroup',groups.getGroup('Responsables').getFullName());
我的bpmn文件的一部分:

<startEvent id="start" name="Start" activiti:formKey="wf:reviewNewFile" />

<sequenceFlow id="flow1" name="" sourceRef="start" targetRef="addCommentTask"></sequenceFlow>

<userTask id="addCommentTask" name="Add comment Task" activiti:candidateGroups="${wf_secretairesGroup}" activiti:formKey="wf:addCommentTask">
  <extensionElements>
    <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
      <activiti:field name="script">
        <activiti:string>
            execution.setVariable('bpm_comment', task.getVariable('bpm_comment'));
            execution.setVariable('wf_initiator', person);
        </activiti:string>
      </activiti:field>
    </activiti:taskListener>
  </extensionElements>
</userTask>

execution.setVariable('bpm_comment',task.getVariable('bpm_comment');
execution.setVariable('wf_initiator',person);

我试图通过将candidateGroup替换为assignee来更改addCommentTask,并将其分配给admin,结果成功了。。。仍然不知道为什么它是这种方式而不是另一种方式。

如果您执行以下操作(将数组更改为对象):


如果执行以下操作(将数组更改为对象):


不会改变任何事情。Params工作,因为我在workflowDescription中显示了文档的名称。这太愚蠢了。这个代码有效。我的问题在于,assignedGroup中的一些测试用户对私有站点中的文件夹没有权限。。。这就解释了为什么当直接分配给管理员时,它起作用了。不会改变任何事情。Params工作,因为我在workflowDescription中显示了文档的名称。这太愚蠢了。这个代码有效。我的问题在于,assignedGroup中的一些测试用户对私有站点中的文件夹没有权限。。。这就解释了为什么当直接分配给管理员时,它会起作用。
<startEvent id="start" name="Start" activiti:formKey="wf:reviewNewFile" />

<sequenceFlow id="flow1" name="" sourceRef="start" targetRef="addCommentTask"></sequenceFlow>

<userTask id="addCommentTask" name="Add comment Task" activiti:candidateGroups="${wf_secretairesGroup}" activiti:formKey="wf:addCommentTask">
  <extensionElements>
    <activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
      <activiti:field name="script">
        <activiti:string>
            execution.setVariable('bpm_comment', task.getVariable('bpm_comment'));
            execution.setVariable('wf_initiator', person);
        </activiti:string>
      </activiti:field>
    </activiti:taskListener>
  </extensionElements>
</userTask>
var wfdef = workflow.getDefinitionByName("activiti$reviewNewFile");
var wfparams = new Object();
wfparams["bpm:workflowDescription"] = document.name;
wfparams["bpm:assignee"] = people.getPerson("admin");
var wfpackage = workflow.createPackage();
wfpackage.addNode(document);
wfdef.startWorkflow(wfpackage,wfparams);