Magnolia 安排 Groovy 脚本

Magnolia Schedule a Groovy Script

在 Magnolia 上,我创建了一个 Groovy 脚本来删除未使用的用户。 当我直接从 "DEV > Groovy scripts" 界面(在管理中心)运行 Groovy 脚本时,它工作正常。

现在,我正在尝试安排该脚本的执行。 所以我已经配置了一个命令和一个调度程序。

命令: 调度程序 > 配置 > 命令 > 默认 > groovyDeleteUsers 具有属性: - class = my.commandes.GroovyDeleteAllPublicUsersCommand

调度器: 调度程序 > 配置 > 作业 > deleteUsersJob 具有属性:

下面是我的 Groovy 脚本的结构:

package my.commands;

import info.magnolia.commands.*;
import info.magnolia.context.MgnlContext;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;

public class GroovyDeleteAllPublicUsersCommand extends MgnlCommand {

    public boolean execute(Context ctx) {

    ....
    }
}

问题是调度程序作业无法看到我的命令。

Magnolia Can't find command [groovyDeleteUsers] for job in catalog [{default}]

我已经按照文档中的说明尝试了 JCR 查询:"select * from nt:base where jcr:path like '%/commands/%'",结果中包含了我新创建的命令。

[编辑] 看来问题出在命令上。 当我尝试使用 info.magnolia.commands.impl.ImportCommand 等现有 class 定义命令时,该命令已被应用程序很好地注册。 但是当我尝试使用 my.commandes.GroovyDeleteAllPublicUsersCommand 时,应用程序没有注册我新创建的命令。

那你有什么想法吗?

感谢您的帮助, 问候, 吉米

你的问题不是完全正确的设置,只是命令不在正确的位置。尝试将命令定义放在模块下而不是配置下,例如把它放到 ui-admincentral/commands

编辑:显然还有一个问题是关于 groovy 命令与 java 命令。

有关更多信息和示例:this 页应该足够了。

干杯,

据我所知目录名称在系统中必须是唯一的。 "default" 已存在于 ui-admincentral/commands。