alfresco - 如何使用规则(包括文档)启动 Alfresco 工作流程

标签 alfresco workflow-activity activiti

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

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

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

//var workflow = actions.create("start-workflow");
var wfdef = workflow.getDefinitionByName("activiti$reviewNewFile");
//workflow.parameters["bpm:workflowDescription"] = document.name;
//workflow.parameters.workflowName = "activiti$reviewNewFile";
if(wfdef)
{
    var wfparams = new Array();
    wfparams["bpm:workflowDescription"] = document.name;
    var wfpackage = workflow.createPackage();
    //var docNode = search.findNode(document.nodeRef); 
    wfpackage.addNode(document);
    //wfpackage.addNode(docNode);
    wfdef.startWorkflow(wfpackage,wfparams);
}

//workflow.execute(document);

目前脚本执行良好,工作流程已创建,但没有文档添加到工作流程中。我在脚本中的文档引用不为空,因为文档的名称已在工作流程中正确输出。

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

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

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

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

我尝试通过用受让人替换candidateGroup来更改addCommentTask,将其分配给管理员并且它起作用了......仍然不知道为什么它会这样而不是另一个。

最佳答案

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

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

关于alfresco - 如何使用规则(包括文档)启动 Alfresco 工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913685/

相关文章:

java - 开源 Alfresco

alfresco - 捕获 Alfresco 工作流任务重新分配并将其显示在工作流摘要中

javascript - 如何在 Activiti 脚本任务中获取和设置属性对象的属性值

tomcat - Alfresco 社区版 "Cannot find Alfresco Repository on this server"

uml - 流程图与 UML 事件图

deployment - TFS Build后如何运行可执行文件

c# - 如何获取事件中的工作流实例?

java - 尝试连接 Activiti 的 H2 数据库设置时出现异常

java - Alfresco Activiti BPM动态获取候选组或用户

javascript - Javascript 删除露天节点不起作用