#groovy #magnolia
#отличный #magnolia
Вопрос:
Я хотел бы получить доступ к taskmanager в CMS Magnolia из скрипта Groovy. Причина заключается в архивировании старых задач в системе (наполовину автоматически).
Я пробовал что-то вроде этого:
import info.magnolia.task.*
import info.magnolia.jcr.predicate.NodeTypePredicate;
import info.magnolia.importexport.DataTransporter
repository = "tasks"
nodeType = "mgnl:task"
session = ctx.getJCRSession(repository)
collection = NodeUtil.collectAllChildren(session.getRootNode(), new NodeTypePredicate(nodeType))
collection.each { node->
println(node)
println(node.name)
taskManager.archiveTask(node.name);
println "node done"
}
Но taskmanager, конечно, неизвестен. Как я могу получить к нему доступ с помощью Groovy?
Ответ №1:
Все компоненты, такие как менеджеры, реестры и другие, обычно внедряются и доступны в Magnolia через контейнеры guice.
Либо вы можете превратить свой скрипт в class и позволить guice создать его экземпляр для вас, либо вы можете использовать ярлык, чтобы получить нужный экземпляр компонента из контейнера guice, например:
tasksManager = Components.getComponent(TasksManager.class)