- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我开始工作流程时,我希望可以选择将其分配给某人。如果没有选择任何人,我想默认将其分配给发起者。
如果不创建扩展 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/
当我开始工作流程时,我希望可以选择将其分配给某人。如果没有选择任何人,我想默认将其分配给发起者。 如果不创建扩展 bpm:assignee 的新模型,是否可以做到这一点?如果没有,如何实现扩展? 我相
在 Camunda REST API 中有两个调用 Set Assignee Delegate Task 如果我没理解错的话,他们都将任务分配给了特定的用户。 这两个调用有什么区别? 最佳答案 流程中
我为 API 和模型创建测试。问题是测试是否创建了模型。用户模型是这个: class User(AbstractUser): CUSTOMER = 1 EXECUTER = 2
我是一名优秀的程序员,十分优秀!