将工作空间从Author实例发布到public

时间:2016-08-03 11:43:29

标签: magnolia

我新创建了Magnolia实例。我试图通过捆绑的groovy脚本创建一个应用程序,并将新闻发布到公共实例。我收到了这个错误

error

之所以发生,是因为' ebtnews'工作区未从作者同步到私有。那么问题是如何将工作区从作者同步到私有?

2 个答案:

答案 0 :(得分:2)

我所做的是每次在我的作者实例的模块定义xml中添加新工作区时,我确保我还在模块定义xml中为我的公共实例添加了这个工作区。然后需要重新启动作者和公共实例以创建新工作区。

答案 1 :(得分:1)

或者,您可以通过groovy控制台/脚本运行以下命令:

// create workspace
Components.getSingleton(RepositoryManager.class).createWorkspace(app_repository, app_workspace)
// check we registered all right
appSession = ctx.getJCRSession(app_workspace)
// register node type
nodeTypeManager = appSession.getWorkspace().getNodeTypeManager()
type = NodeTypeTemplateUtil.createSimpleNodeType(nodeTypeManager, app_node_type, Arrays.asList(NodeType.NT_HIERARCHY_NODE, NodeType.MIX_REFERENCEABLE, NodeTypes.Created.NAME, NodeTypes.Activatable.NAME, NodeTypes.LastModified.NAME, NodeTypes.Renderable.NAME))
nodeTypeManager.registerNodeType(type, true)
appSession.save()
// double check it registered all right
nodeTypeManager.getNodeType(app_node_type)

您还需要注册工作区的基本安全权限,在订阅者工作区映射下设置它以启用激活,并且可能在更新公共实例上的内容时刷新缓存的触发器列表中包含/排除它。

您可以在groovy模块的createAppScript示例脚本中找到执行所有操作的代码。上面粘贴的代码I实际上来自同一个脚本。

优点是您可以在运行时完成所有操作,无需重启。缺点是,您需要在每个实例上运行相同的代码。