gpt4 book ai didi

alfresco - 工作流程: Setting default value for bpm:assignee

转载 作者:行者123 更新时间:2023-12-02 19:38:57 25 4
gpt4 key购买 nike

当我开始工作流程时,我希望可以选择将其分配给某人。如果没有选择任何人,我想默认将其分配给发起者。

如果不创建扩展 bpm:assignee 的新模型,是否可以做到这一点?如果没有,如何实现扩展?

我相信 Jeff Potts 的这个回答是相关的:https://stackoverflow.com/a/9418066/4542428

注意:我使用的是社区版 4.2

编辑:Stefan 的回答让我在很大程度上找到了答案,但似乎我在某种程度上错误地引用了关联的值(value)。背景:我从未使用过关联,这可能只是我未能从类型和方面理解它们的差异。

来 self 的模型:

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

我的配置使用的是:

<config condition="activiti$deliveryTicketWorkflow" evaluator="string-compare">
<forms>
<form>
<field-visibility>
...
<show id="deliveryTicketWorkflow:assignedPM" />
...
</field-visibility>
<appearance>
...
<field id="deliveryTicketWorkflow:assignedPM" label-id="Project Manager" />
...
</appearance>
</form>
</forms>
</config>

我的 DeliveryTicketworkflow:start 的配置是相同的。这成功地显示了人员选择器,而没有强制执行,完全像 Stefan 所说的那样 100%。

在我的 bpmn 工作流定义中,我将这些片段放在启动事件的执行监听器中:

          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;

当工作流程运行并且我选择某人作为 PM 时,最后一行(其中获取 PM 的名字和姓氏)会为“deliveryTicketWorkflow_assignedPM”返回一个未定义的值。当它留空时,一切都会顺利进行,但工作流程描述的常规信息部分仍将项目经理列为(无)。

最佳答案

您确实可以自定义人员选择器,正如 jeff 所描述的那样,但这需要相当多的编码工作。

或者,您可以使用工作流执行监听器来启动事件,并使用它将 bpm_assignee 变量设置为启动器,以防表单上为空:

为您的 bpmn20 添加监听器:

 <activiti:executionListener event="start" class="com.mycomp.Executionlistener"></activiti:executionListener>

在您的第一个用户任务中,将受让人定义为工作流启动表单中的关联属性。

 <userTask id="firsttask" name="firsttask" activiti:assignee="${mymodel.myassoc.properties.userName}" >

还要将此关联添加到您的启动任务内容模型中。

com.mycomp.Executionlistener 中的代码如下所示:

public void notify(DelegateExecution execution) throws Exception {
if (execution.getVariable("mymodel_myassoc") == null ){

ActivitiScriptNode userScriptNode= (ActivitiScriptNode) execution.getVariable("initiator");
execution.setVariable("mymodel_myassoc",userScriptNode);
}
}

关于alfresco - 工作流程: Setting default value for bpm:assignee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com