Alfresco Workflow 表单中的多个受让人控制
Multiple assignee controls in Alfresco Workflow form
我需要构建一个工作流,允许管理员在工作流的第一个任务中 select 来自两个不同组的两名受让人。我可以在一种形式中使用两个受让人控件吗?怎么样?
您需要:
在任务内容模型中,将 2 个受让人定义为您的任务类型的 2 个独立关联。
<type name="my:starttask">
<parent>bpm:startTask</parent>
<associations>
<association name="my:firstassignee">
<title>firstassignee</title>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
<association name="my:secondassignee">
<title>secondassignee</title>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
</associations>
</type>
在您的共享配置自定义中,将 2 个关联定义为权限控制:
<config condition="activiti$myworkflow" evaluator="string-compare">
<forms>
<form>
<field-visibility>
<show id="my:firstassignee" />
<show id="my:secondassignee" />
</field-visibility>
<appearance>
<field set="actors" id="my:firstassignee" >
<control template="/org/alfresco/components/form/controls/authority.ftl">
</control>
</field>
<field set="actors" id="my:secondassignee">
<control template="/org/alfresco/components/form/controls/authority.ftl">
</control>
</field>
在您的 bpm20 文件中,在您的进程中定义两个 ActivitiScriptNode 变量,并为具有两个 cm:person 关联的 usertask/starttask 定义一个 ExecutionListener。该执行侦听器应该采用输入的值并将它们放入流程范围的变量中,如下所示:
<extensionElements>
<activiti:taskListener class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener" event="complete">
<activiti:field name="script">
<activiti:string>
execution.setVariable('firstActivitiScriptNodeVar', task.getVariable('my_firstassignee'));
execution.setVariable('secondActivitiScriptNodeVar', task.getVariable('my_secondassignee'));
</activiti:string>
</activiti:field>
</activiti:taskListener>
</extensionElements>
然后将此代码添加到要分配给输入用户的 UserTasks,如下所示:
<humanPerformer>
<resourceAssignmentExpression>
<formalExpression>${firstActivitiScriptNodeVar.properties.userName}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
我需要构建一个工作流,允许管理员在工作流的第一个任务中 select 来自两个不同组的两名受让人。我可以在一种形式中使用两个受让人控件吗?怎么样?
您需要:
在任务内容模型中,将 2 个受让人定义为您的任务类型的 2 个独立关联。
<type name="my:starttask"> <parent>bpm:startTask</parent> <associations> <association name="my:firstassignee"> <title>firstassignee</title> <source> <mandatory>false</mandatory> <many>false</many> </source> <target> <class>cm:person</class> <mandatory>false</mandatory> <many>false</many> </target> </association> <association name="my:secondassignee"> <title>secondassignee</title> <source> <mandatory>false</mandatory> <many>false</many> </source> <target> <class>cm:person</class> <mandatory>false</mandatory> <many>false</many> </target> </association> </associations> </type>
在您的共享配置自定义中,将 2 个关联定义为权限控制:
<config condition="activiti$myworkflow" evaluator="string-compare"> <forms> <form> <field-visibility> <show id="my:firstassignee" /> <show id="my:secondassignee" /> </field-visibility> <appearance> <field set="actors" id="my:firstassignee" > <control template="/org/alfresco/components/form/controls/authority.ftl"> </control> </field> <field set="actors" id="my:secondassignee"> <control template="/org/alfresco/components/form/controls/authority.ftl"> </control> </field>
在您的 bpm20 文件中,在您的进程中定义两个 ActivitiScriptNode 变量,并为具有两个 cm:person 关联的 usertask/starttask 定义一个 ExecutionListener。该执行侦听器应该采用输入的值并将它们放入流程范围的变量中,如下所示:
<extensionElements> <activiti:taskListener class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener" event="complete"> <activiti:field name="script"> <activiti:string> execution.setVariable('firstActivitiScriptNodeVar', task.getVariable('my_firstassignee')); execution.setVariable('secondActivitiScriptNodeVar', task.getVariable('my_secondassignee')); </activiti:string> </activiti:field> </activiti:taskListener> </extensionElements>
然后将此代码添加到要分配给输入用户的 UserTasks,如下所示:
<humanPerformer> <resourceAssignmentExpression> <formalExpression>${firstActivitiScriptNodeVar.properties.userName}</formalExpression> </resourceAssignmentExpression> </humanPerformer>