Magnolia Groovy Access Taskmanager

#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)