- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
SO 社区您好,
我没有在 Alfresco 论坛中获得任何帮助,我希望在这里获得更多帮助。我们正在构建一个基于 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
我不想发布整个工作流程,因为它很大,但这里是前两个节点:
首先是泳道:
<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>
以下是在工作流控制台中运行工作流的伪日志:
:: 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:assignees 将传递到第一个任务节点“正在编辑”。显然,受让人位于任务对象上,而不是工作流对象上。我将受让人方面添加到开始状态任务中,以便它可以保留他们(在我遇到问题之后;最初他们不在那里),并且可能他们仍然坐在那里,但在我获得控制之前开始状态已经结束从网络脚本返回(并不是说如果没有结束它会有帮助,我需要它处于“编辑中”状态,因为开始状态仅用于记录工作流程已启动)。
一直让我困惑的是,我需要在每个任务上设置的属性需要在输入任务之前请求(当您选择转换时,您必须提供下一个任务的数据)在您真正进入下一个任务之前,您必须首先验证您是否拥有所有必需的数据,然后发出转换信号)。但是,启动工作流的代码是异步的,因此不会返回启动的工作流或当前任务(在我的例子中为“正在编辑”)。因此,无论哪种方式,您都无法设置 bpm:assignees 和 bpm:dueDate 等变量。
请问这是不是用户任务列表的问题。我正在属性列表中设置受让人,但也许这些受让人将进入开始状态任务,并且不会传递到“编辑中”任务?
请注意,这是我的第一个 jBPM 工作流程,所以请不要假设我知道自己在做什么。如果您发现某些东西看起来不太对劲,那么它很可能就是这样,只是我不知道而已。
预先感谢您的任何建议或帮助,
最佳答案
所以,事实证明,我的问题是误解了如何处理多个受让人,同时允许工作流程与其中任何一个受让人进行转换。事实证明,jBPM 在简单的模型中不支持这一点,您必须做更多的工作,而不仅仅是分配多个受让人。我遵循了在互联网上找到的一个错误示例,并对如何实现这一点做出了错误的假设有效。
jBPM 确实有并行任务的概念(使用 fork ),但正常操作要求所有受让人在工作流转换之前完成其任务。事实证明,解决这个问题的正确方法是将任务 fork 给所有受让人,但是当任何受让人完成其任务时,我们将存储有多少受让人必须完成其任务的变量 (node.nOutOfM) 修补为欺骗 jBPM 在所有受让人完成任务之前完成任务(这也可以允许 y 受让人中只有 x 必须完成任务)。
这里没有发布更新的代码,而是我用来解决此问题的文章:
http://forums.alfresco.com/en/viewtopic.php?f=30&t=8691
http://forums.alfresco.com/en/viewtopic.php?f=34&t=5189
http://wiki.alfresco.com/wiki/WorkflowAdministration#For_Each_Fork
关于workflow - 需要有关 Alfresco 工作流程的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702405/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!