jakarta-ee - Alfresco Workflow 表单中的多个受让人控制

标签 jakarta-ee alfresco

我需要构建一个工作流,允许管理员在工作流的第一个任务中从两个不同的组中选择两个受让人。我可以在一种形式中使用两个受让人控件吗?怎么办?

最佳答案

你需要:

  • 在任务内容模型中,将 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>
    

关于jakarta-ee - Alfresco Workflow 表单中的多个受让人控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34612055/

相关文章:

java - 在 Java EE 应用程序中显示错误消息时出现意外结果(字段为空时不会出现错误)

java - 设置 Java 和 Eclipse IDE - 冗余安装

eclipse - 安装后我无法将 Java EE SDK 包含在我的项目中

Alfresco Office 插件源

alfresco - 如何在 Alfresco 4.2.2 中为 Share 编写自定义评估器?

python - 将 json 发布到露天网站 api 时出现错误 500

servlets - Java EE 中的 session 超时

java - 在 JSP 中创建动态框架

javascript - Alfresco JavaScript API - 复制文件

java - 如何将扫描文档与其文本内容链接起来以使其可搜索?