Alfresco 工作流:设置bpm:的默认值

Alfresco 工作流:设置bpm:的默认值,alfresco,alfresco-share,Alfresco,Alfresco Share,当我启动我的工作流程时,我想要将其分配给某人的选项。如果未选择任何人,我希望默认将其分配给启动器 这是否可以在不创建扩展bpm:assignee的新模型的情况下实现?如果没有,将如何实现这一扩展 我相信Jeff Potts的回答是相关的: 注意:我使用的是社区版4.2 编辑:Stefan的答案让我获得了答案的绝大部分,但似乎我在某种程度上错误地引用了关联的价值。上下文:我从未使用过关联,这可能是因为我未能从类型和方面理解它们的差异 从我的模型: <type name="deliveryTi

当我启动我的工作流程时,我想要将其分配给某人的选项。如果未选择任何人,我希望默认将其分配给启动器

这是否可以在不创建扩展bpm:assignee的新模型的情况下实现?如果没有,将如何实现这一扩展

我相信Jeff Potts的回答是相关的:

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

编辑:Stefan的答案让我获得了答案的绝大部分,但似乎我在某种程度上错误地引用了关联的价值。上下文:我从未使用过关联,这可能是因为我未能从类型和方面理解它们的差异

从我的模型:

<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);
   }
 }