Alfresco 工作流:设置bpm:的默认值
当我启动我的工作流程时,我想要将其分配给某人的选项。如果未选择任何人,我希望默认将其分配给启动器 这是否可以在不创建扩展bpm:assignee的新模型的情况下实现?如果没有,将如何实现这一扩展 我相信Jeff Potts的回答是相关的: 注意:我使用的是社区版4.2 编辑:Stefan的答案让我获得了答案的绝大部分,但似乎我在某种程度上错误地引用了关联的价值。上下文:我从未使用过关联,这可能是因为我未能从类型和方面理解它们的差异 从我的模型:Alfresco 工作流:设置bpm:的默认值,alfresco,alfresco-share,Alfresco,Alfresco Share,当我启动我的工作流程时,我想要将其分配给某人的选项。如果未选择任何人,我希望默认将其分配给启动器 这是否可以在不创建扩展bpm:assignee的新模型的情况下实现?如果没有,将如何实现这一扩展 我相信Jeff Potts的回答是相关的: 注意:我使用的是社区版4.2 编辑:Stefan的答案让我获得了答案的绝大部分,但似乎我在某种程度上错误地引用了关联的价值。上下文:我从未使用过关联,这可能是因为我未能从类型和方面理解它们的差异 从我的模型: <type name="deliveryTi
<type name="deliveryTicketWorkflow:start">
<parent>bpm:startTask</parent>
<properties>
</properties>
<associations />
<overrides />
<mandatory-aspects>
<aspect>deliveryTicketWorkflow:pmAspect</aspect>
<aspect>deliveryTicketWorkflow:requestDetailsAspect</aspect>
</mandatory-aspects>
</type>
<aspect name="deliveryTicketWorkflow:pmAspect">
<associations>
<association name="deliveryTicketWorkflow:assignedPM">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
当工作流运行并且我选择某人作为PM时,最后一行(PM的名字和姓氏被抓取)返回“deliveryTicketWorkflow_assignedPM”的未定义值。如果留空,一切都会顺利进行,但工作流描述的“常规信息”部分仍将项目经理列为(无)。正如jeff所述,您确实可以自定义人员选取器,但它需要相当多的编码工作 或者,您可以将工作流executionlistener用于事件启动,并使用它将bpm_assignee变量设置为启动器,以防该变量在表单上为空: 向您添加侦听器bpmn20:
<activiti:executionListener event="start" class="com.mycomp.Executionlistener"></activiti:executionListener>
这是我倾向于采用的一般方法,但我的印象是,如果没有填写所有必填字段(即bpm:assignee),您无法让工作流启动执行侦听器。请尝试在开始表单中为您的assignee使用自定义字段,并将其设为非必填字段。然后在bmp第一个任务中使用此字段作为受让人。我更新了答案我认为这已经解决了我的问题,因为当我将选择器留空时,它工作正常,但我做了一些非常错误的事情,并且从未实际引用选择器的值。更新原始问题并重新打开。重新接受此答案。你完全正确。我只是想在配置的字段行中添加“set=”info“
if(!execution.getVariable("deliveryTicketWorkflow_assignedPM")){
execution.setVariable("deliveryTicketWorkflow_assignedPM", initiator);
}
...
deliveryTicket.properties["dtdlm:projectManager"] = execution.getVariable("deliveryTicketWorkflow_assignedPM").properties.firstName + " " + execution.getVariable("deliveryTicketWorkflow_assignedPM").properties.lastName;
<activiti:executionListener event="start" class="com.mycomp.Executionlistener"></activiti:executionListener>
<userTask id="firsttask" name="firsttask" activiti:assignee="${mymodel.myassoc.properties.userName}" >
public void notify(DelegateExecution execution) throws Exception {
if (execution.getVariable("mymodel_myassoc") == null ){
ActivitiScriptNode userScriptNode= (ActivitiScriptNode) execution.getVariable("initiator");
execution.setVariable("mymodel_myassoc",userScriptNode);
}
}