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

如何为AEM工作流添加自定义输入值?技术咨询

当然可以!在AEM里给工作流添加自定义输入完全可行,刚好能解决你要为每个页面运行指定专属代码的需求。下面给你两种最实用的实现方式,还有关键细节:

1. 扩展工作流的启动对话框

这是最直接的方式——在启动工作流时让用户输入专属代码,参数会跟着工作流实例走,后续步骤直接取用:

  • 首先找到你要修改的目标工作流模型(可以在AEM的「工作流控制台」→「模型」里管理,或者直接在CRXDE中定位到/etc/workflow/models/[你的模型路径])
  • 编辑模型的launcherDialog节点,在对话框的表单里添加自定义字段。比如要加一个“专属代码”输入框,就在launcherDialog/items/tab1/items下新增一个节点,配置如下(CRXDE里的节点属性):
    <code
        jcr:primaryType="nt:unstructured"
        sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
        fieldLabel="专属代码"
        name="./code"
        required="{Boolean}true"/>
    
  • 保存后,下次启动这个工作流时,对话框就会多出这个输入框,用户填写的代码会自动存在工作流实例的元数据中,后续步骤可以直接读取。
2. 添加自定义工作流步骤接收输入

如果需要在工作流运行中途(比如某个审批环节后)再让用户输入代码,可以做一个带交互的自定义步骤:

  • 方式一:开发Java自定义步骤——继承com.adobe.granite.workflow.exec.WorkflowProcess接口,在execute方法里读取工作流元数据,或者弹出交互对话框让用户输入。比如读取启动时传入的代码:
    @Override
    public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException {
        // 获取工作流实例
        WorkflowInstance workflowInstance = workItem.getWorkflow();
        // 读取启动对话框传入的专属代码
        String customCode = workflowInstance.getMetadataMap().get("code", String.class);
        
        // 后续用这个code调用外部服务上传资产列表
        uploadAssetListToExternalService(customCode, getAssetListFromPayload(workItem));
    }
    
  • 方式二:用ECMAScript脚本步骤——直接在脚本里通过workflowInstance.metadataMap.get("code")获取参数,逻辑更轻量,适合快速验证。
关键注意事项
  • 参数传递:不管是启动对话框还是自定义步骤输入的参数,都存在工作流实例的MetadataMap里,所有后续步骤都能访问到,确保你处理资产列表的步骤能拿到正确的专属代码。
  • 字段验证:可以给启动对话框的自定义字段加校验规则(比如正则表达式、必填项),避免用户输入无效值,比如给textfield添加validation属性配置校验逻辑。
  • 权限配置:确保操作工作流模型的用户有足够的权限(比如crx:modify权限),普通用户启动工作流时能看到并编辑自定义字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:52:31