You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义UI Action添加至Alfresco多选工具?

解决Alfresco UI Action添加到多选工具的问题

看起来你已经搞定了单选场景下的UI Action,现在卡在多选集成上——这确实是文档比较零散的部分,我来分享下实际项目里验证过的步骤:

第一步:确保UI Action的逻辑支持多选

你之前的Action是针对单个节点写的,现在要适配多选,核心是把args.node改成处理args.nodes数组,同时兼容单选场景:

function onYourCustomAction(args) {
  // 兼容单选和多选场景,兜底处理空选择
  const selectedNodes = args.nodes || (args.node ? [args.node] : []);
  
  if (selectedNodes.length === 0) {
    Alfresco.util.PopupManager.displayMessage({text: "请至少选择一个节点"});
    return;
  }

  // 收集所有选中节点的nodeRef,供后续业务逻辑使用
  const nodeRefs = selectedNodes.map(node => node.nodeRef);
  
  // 这里写你的业务逻辑,比如调用后端Web Script执行批量操作
  Alfresco.util.Ajax.request({
    url: "/proxy/alfresco/api/your/custom/endpoint",
    method: "POST",
    dataObj: { nodeRefs: nodeRefs },
    successCallback: () => {
      Alfresco.util.PopupManager.displayMessage({text: "批量操作完成!"});
      // 刷新文档库列表,让用户看到操作后的结果
      Alfresco.util.Publish("ALF_DOCLIST_RELOAD_DATA", {});
    },
    failureCallback: () => {
      Alfresco.util.PopupManager.displayMessage({text: "批量操作失败,请重试"});
    }
  });
}

第二步:正确配置share-config-custom.xml

你之前的配置能显示但功能异常,大概率是actionGroup或者evaluator配置不对,以下是标准的多选Action配置:

<config evaluator="string-compare" condition="DocumentLibrary">
  <!-- 配置文档库的多选操作栏 -->
  <multi-select>
    <actions>
      <action id="custom-batch-action" type="javascript" label="你的批量操作名称">
        <!-- 指定触发的JS函数 -->
        <param name="function">onYourCustomAction</param>
        <!-- 至少选中一个节点才显示该操作 -->
        <evaluator>selection-at-least-one</evaluator>
        <!-- 加入文档库多选操作组,确保出现在多选工具栏 -->
        <action-group>document-selection</action-group>
        <!-- 可选:设置操作图标 -->
        <param name="icon">document-actions</param>
      </action>
    </actions>
  </multi-select>
</config>

关键配置说明:

  • action-group:文档库多选用document-selection,文件夹多选用folder-selection,通用多选场景可以用selection-actions;
  • evaluator:selection-at-least-one确保只有选中节点时才显示,避免空操作;如果需要限制只能选中特定类型节点,可以自定义evaluator并在这里指定。

第三步:排查后端逻辑(如果有)

如果你的Action调用了后端Web Script,要确保接口能接收多个nodeRef参数:

  • 在Web Script的描述文件(*.desc.xml)里,参数要定义为多值:
    <param name="nodeRefs" type="string" multi="true" />
    
  • 在Java/JS后端代码里,要处理nodeRefs数组,而不是单个nodeRef。

常见坑点

  • 忘记处理args.nodes:很多人单选时只用到args.node,多选时这个属性不存在,直接导致逻辑报错;
  • actionGroup选错:比如误用了document-actions(单选操作组)而不是document-selection,导致Action出现在错误的位置;
  • 没有刷新页面:批量操作完成后,记得发布ALF_DOCLIST_RELOAD_DATA事件刷新文档库,让用户直观看到操作结果。

内容的提问来源于stack exchange,提问作者EmGee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:58:30