你好,社区,

在Alfresco论坛上,我没有任何好运,我希望这里有更多。我们正在基于Alfresco和JBPM构建一个应用程序,我已经定义了一个工作流程,但是我要么定义了错误或缺少某些内容,要么与JBPM集成了Alfresco集成中的错误,我需要帮助确定哪个并修复它。这是问题:

我有一个高级的工作流程,我正在尝试从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);

这是运行良好的,并从Start节点的默认过渡射击发送的电子邮件很好。但是,当我去寻找任务列表中的工作流程时,它不存在,但它在我的 完全的 任务列表。从一个具有四个过渡的任务节点处的启动节点点的默认过渡(唯一的过渡)。

工作流程中有8个任务和22个过渡。当我使用工作流控制台启动工作流并结束启动任务时,它正确遵循默认的启动节点过渡到下一个任务。新任务出现在“显示任务”中,但没有在“显示我的任务”中显示(显然是因为该任务因某种原因已完成,尽管它不在“ end”节点中)。任务是:

task id: jbpm$111 , name: nmwf:submitInEditing , properties: 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

我不想发布整个工作流程,因为它很大,但这是前两个节点:

首先是泳衣:

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

现在节点:

<start-state name="start">
    <task name="nmwf:submitTask" swimlane="initiator"/>
    <transition name="" to="In Editing">
        <action>
            <runas>admin</runas>
            <script>
                /* Code to send e-mail that a new workflow was started.  I get this e-mail. */
            </script>
        </action>
    </transition>
</start-state>
<task-node name="In Editing">
    <task name="nmwf:submitInEditing" swimlane="Content Providers" />
    <!-- I put e-mail sending code in each of these transitions, but none are firing. -->
    <transition to="In Approval" name="Submit for Approval"></transition>
    <transition to="In Copyediting" name="Request Copyediting Review"></transition>
    <transition to="In Legal Review" name="Request Legal Review"></transition>
    <transition to="In Review" name="Request Review"></transition>
</task-node>

这是这两个节点的模型:

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

这是在工作流控制台中运行工作流程的伪gog:

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

我一直在假设我要在开始工作流之前设置的BPM:受让人最初被传递给第一个任务节点“编辑”。显然,受让人在任务对象上,而不是在工作流对象上。我将受让人的方面添加到起始状态任务中,以便可以将它们固定(在我遇到问题之后;最初他们不在那里),并且可能仍然坐在那里,但是起始状态已经结束,甚至在我得到控制之前就已经结束了从Web脚本回到(并不是说如果没有结束,我就需要进行“编辑”,因为起始状态仅用于登录工作流程的启动)。

总是让我感到困惑,我需要在输入任务之前需要请求对每个任务的属性(当您选择过渡时,必须为下一个任务提供数据,然后才能真正移至下一个任务作为下一个任务您必须验证您拥有所有必需的数据 第一的 然后向过渡发出信号。但是,启动工作流的代码是异步的,因此不会返回启动工作流或当前任务(在我的情况下是“编辑”)。因此,无论哪种方式,您都无法设置BPM等变量:受让人和BPM:Duedate。

我想知道这是否是用户任务列表的问题。我正在将受让人设置在属性列表中,但是也许那些受让人要执行起始状态任务,而没有传递给“编辑”任务?

请注意 我的第一个JBPM工作流程,所以请不要假设我知道我在做什么。如果您看到了看上去的东西,那可能是,我只是不知道。

在此先感谢您的任何建议或帮助,

有帮助吗?

解决方案

因此,事实证明,我的问题是误解了如何进行多个受让人,同时允许工作流与任何一个受让人过渡。事实证明,JBPM不支持简单的模型,您必须做更多的工作,而不仅仅是分配多个受让人。我遵循了一个不好的例子,我在互联网上发现了一个错误的示例,并且对此如何做出了错误的假设作品。

JBPM确实具有并行任务的概念(使用叉),但是正常的诉讼要求所有受让人在工作流程过渡之前完成其任务。事实证明,解决此问题的正确方法是将任务分配给所有受让人,但是当任何受让人完成任务时,我们修补了存储多少受让人必须完成其任务(node.noutofm)的变量在所有受让人完成任务之前,愚蠢的JBPM完成任务(这也只能允许X中的X X出境者必须完成任务)。

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

http://forums.alfresco.com/en/viewtopic.php?f=30&t=8691

http://forums.alfresco.com/en/viewtopic.php?f=34&t=5189

http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/repo/workflow/jbpm/foreachfork.html

http://wiki.alfresco.com/wiki/workflowadministration#for_each_fork

其他提示

我不确定,但我认为你想要 <pooledactors> 在这里而不是 <actor>.

也许这就是为什么您的WF无法正常工作的原因。

<actor>#{bpm_assignees}</actor>

另外,我相信任务应该在您的汇总任务中,而不是您的任务,因为这是一个汇总的任务(因为您正在尝试设置多个受让人)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top