Workflow 需要有关Alfresco工作流的帮助吗

Workflow 需要有关Alfresco工作流的帮助吗,workflow,alfresco,jbpm,Workflow,Alfresco,Jbpm,大家好,社区 我在露天论坛上没有得到任何帮助,我希望在这里得到更多帮助。我们正在基于Alfresco和jBPM构建一个应用程序,我已经定义了一个工作流,但我要么定义错误,要么遗漏了一些东西,要么Alfresco与jBPM的集成中存在缺陷,我需要帮助找出并修复它。问题是: 我有一个高级工作流,我正试图从JavaScript启动它。以下是我用于启动工作流的代码: var nodeId = args.nodeid; var document = search.findNode("workspace:/

大家好,社区

我在露天论坛上没有得到任何帮助,我希望在这里得到更多帮助。我们正在基于Alfresco和jBPM构建一个应用程序,我已经定义了一个工作流,但我要么定义错误,要么遗漏了一些东西,要么Alfresco与jBPM的集成中存在缺陷,我需要帮助找出并修复它。问题是:

我有一个高级工作流,我正试图从JavaScript启动它。以下是我用于启动工作流的代码:

var nodeId = args.nodeid;
var document = search.findNode("workspace://SpacesStore/" + nodeId);
var workflowAction = actions.create("start-workflow");
workflowAction.parameters.workflowName = "jbpm$nmwf:MyWorkflow";
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name;
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("andyg")];
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflowAction.parameters["bpm:workflowDueDate"] = futureDate;
workflowAction.execute(document);
这可以正常运行,从开始节点的默认转换发送的电子邮件也可以正常启动。但是,当我在我的任务列表中查找工作流时,它不在那里,但它在我的已完成任务列表中。起始节点的默认转换(唯一转换)指向具有四个转换的任务节点

工作流中有8个任务和22个转换。当我使用工作流控制台启动工作流并结束开始任务时,它会正确地按照默认的开始节点转换到下一个任务。新任务显示在“显示任务”中,但不显示在“显示我的任务”中(显然是因为任务由于某种原因被标记为已完成,尽管它不在“结束”节点中)。任务是:

任务id:jbpm$111,名称:nmwf:submitInEditing,属性:18

如果我真的“显示转换”,它看起来就像我预期的那样:

path: jbpm$62-@ , node: In Editing , active: true
 task id: jbpm$111 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 18
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review
我不想发布整个工作流,因为它很大,但以下是前两个节点:

 <type name="nmwf:submitTask">
    <parent>bpm:startTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>


 <type name="nmwf:submitInEditing">
    <parent>bpm:workflowTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>
首先是泳道:

<swimlane name="initiator"></swimlane>
<swimlane name="Content Providers">
  <assignment actor-id="Content Providers"  class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
     <actor>#{bpm_assignees}</actor>
  </assignment>
</swimlane>
我一直在假设我在开始工作流之前设置的bpm:Assignee将传递到“编辑中”的第一个任务节点。显然,受让人在任务对象上,而不是工作流对象上。我将assignees方面添加到start state任务中,以便它可以容纳他们(在我遇到问题后;最初他们不在那里),并且可能他们仍然坐在那里,但在我甚至还没有从web脚本获得控制权之前,开始状态就已经结束了(如果它没有结束,则不会有帮助,我需要它处于“编辑中”因为启动状态仅用于记录工作流已启动)

在输入任务之前,需要请求为每个任务设置的属性,这一直让我感到困惑(当您选择转换时,您必须提供下一个任务的数据,然后才能实际移动到下一个任务,因为您必须先验证您是否拥有所有必需的数据,然后发出转换信号)。但是,启动工作流的代码是异步的,因此既不返回已启动的工作流,也不返回当前任务(在我的示例中,当前任务是“正在编辑”)。因此,无论采用哪种方式,都无法设置变量,例如bpm:assignees和bpm:dueDate

我想知道这是否是用户任务列表的问题。我正在属性列表中设置被分配者,但这些被分配者可能将进入开始状态任务,而不会进入“正在编辑”任务

请注意,这是我的第一个jBPM工作流,所以请不要假设我知道我在做什么。如果你看到一些看起来不对劲的东西,很可能是,而我就是不知道


提前感谢您的建议或帮助,

我不确定,但我想您希望
在这里,而不是

也许这就是为什么你的wf不能像预期的那样工作

<actor>#{bpm_assignees}</actor>
#{bpm_受让人}

此外,我认为任务应该在您的池任务中,而不是在您的“我的任务”中,因为它是一个池任务(因为您试图设置多个受让人).

因此,事实证明,我的问题是在允许工作流与其中任何一个被分配者进行转换的同时误解了如何处理多个被分配者。事实证明,jBPM在一个简单的模型中不支持这一点,您必须做的工作远不止分配多个被分配者。我遵循了我在互联网,并对其工作原理做出了错误的假设

jBPM确实有并行任务的概念(使用fork),但正常操作要求所有被分配者在工作流转换之前完成其任务。事实证明,解决这一问题的正确方法是将任务交给所有被分配者,但当任何被分配者完成其任务时,我们修补了存储有多少被分配者必须完成其任务的变量(node.noutof m)愚弄jBPM在所有被指派人完成任务之前完成任务(这也允许y个被指派人中只有x个必须完成任务)

以下是我用来解决此问题的文章,而不是发布更新的代码:


感谢您的回复。然而,虽然有多个受让人,但我明确表示不使用池。对于这个特定的应用程序,我们确实为其分配了多人。我确信我找到了Alfresco的Alfrecoasignment类支持这一点的文档,但现在我找不到从何处获得的。Pooled actors绝对不是我想要的,不管怎样,它需要出现在所有actor的任务列表中(我也不想要“ParallelReviewTask”,因为有些actor实际上不会编辑每个文档)。我会继续寻找我在哪里找到对多个受让人的支持。也许这毕竟是我问题的根源。再次感谢,
:: deploy alfresco/extension/workflow/processdefinition.xml

deployed definition id: jbpm$69 , name: jbpm$nmwf:MyWorkflow , title: nmwf:MyWorkflow , version: 28

:: var bpm:assignees* person admin,andyg

set var {http://www.alfresco.org/model/bpm/1.0}assignees = [workspace://SpacesStore/73cf1b28-21aa-40ca-9dde-1cff492d0268, workspace://SpacesStore/03297e91-0b89-4db6-b764-5ada2d167424]

:: var bpm:package package 1

set var {http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/6e2bbbbd-b728-4403-be37-dfce55a83641

:: start bpm:assignees bpm:package

started workflow id: jbpm$63 , def: nmwf:MyWorkflow
path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 16
 transition id: [default] , title: Task Done

:: show transitions

path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 17
 transition id: [default] , title: Task Done

:: end task jbpm$112

signal sent - path id: jbpm$63-@
path: jbpm$63-@ , node: In Editing , active: true
 task id: jbpm$113 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 17
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

:: show tasks

task id: jbpm$113 , name: nmwf:submitInEditing , properties: 18

:: show my tasks

admin:
 [there is no output here]
<actor>#{bpm_assignees}</actor>