我用alfresco / activiti定义了我的自定义工作流程。在我的模型中,我定义了自定义方面,除了某些属性之外还有代表某些团队成员的关联
<aspects>
<aspect name="mcwm:projectCharter">
<properties>
........
<property name="cm:userName">
..........
</property>
</properties>
<associations>
<association name="mcwm:teamWithDoc">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
现在,在我的工作流程中,我有5个任务,在每个任务中,我都设置了上面描述的强制性方面。
<type name="mcwm:submitStart">
<parent>bpm:startTask</parent>
<mandatory-aspects>
<aspect>bpm:assignee</aspect>
<aspect>mcwm:projectCharter</aspect>
</mandatory-aspects>
问题在于,如果某个用户例如在任务1的进程开始时设置关联mcwm:teamWithDoc(从alfresco存储库中选择团队成员),则属性很好地传递给任务2.但是如果其他用户被分配了任务2更改mcwm:teamWithDoc(例如,添加更多团队成员或删除一些团队成员)在任务3上没有看到这些更改。在任务3 mcwm:teamWithDoc具有在启动任务上设置的值。同样的情况是其他任务,无论其他用户使用mcwm:teamWithDoc在任务2,任务3或任务4上做了什么,mcwm:teamWithDoc总是具有在开始时设置的值?
知道如何更新此关联吗?
P.S。我使用execution.setVariable('propertName',task.getVariable('propertName'))更新任务之间的常规属性;但是对于协会来说这不起作用。
此致 亚历山大
答案 0 :(得分:1)
您可以使用任务控制器更好地使用task controller,而不是使用该方法,您可以轻松获得关联。查看wiki以获取有关如何获得关联的更多信息。
E.g。它将如下所示:
<controller>
<variable name="prop" access="read,write" mapped-name="mcwm_projectCharter"/>
</controller>
然后你将mcwm_projectCharter映射到prop。因此,您可以执行prop.assocs [“mcwm:teamWithDoc”] [0]以获取第一个或迭代它。
答案 1 :(得分:1)
我认为你的问题与这个bug有关 https://issues.alfresco.com/jira/browse/ALF-13640
一旦你设置了一个关联的值,你就不要改变它!