将工作区从作者实例发布到公共

Posted

技术标签:

【中文标题】将工作区从作者实例发布到公共【英文标题】:Publish workspace from Author instance to public 【发布时间】:2016-08-03 11:43:28 【问题描述】:

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

发生这种情况是因为“ebtnews”工作空间未从作者同步到私人。那么问题是如何将工作空间从作者同步到私人?

【问题讨论】:

【参考方案1】:

每次我在我的作者实例的模块定义 xml 中添加一个新的工作区时,我都会确保我也在我的公共实例的模块定义 xml 中添加了这个工作区。然后需要重新启动作者和公共实例才能创建新的工作区。

【讨论】:

【参考方案2】:

或者,您可以通过 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 示例脚本中找到执行所有这些操作的代码。我上面粘贴的代码实际上来自同一个脚本。

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

【讨论】:

以上是关于将工作区从作者实例发布到公共的主要内容,如果未能解决你的问题,请参考以下文章

MAGNOLIA CMS - cmsu:simpleSearch 在作者实例中工作,但在公共实例中不返回任何结果

以编程方式生成工作者角色的新实例

是否可以直接从网络工作者保存文件?

PHP AWS Elastic Beanstalk 后台工作者

如何将完成的管道作业构建发布到公共 Jenkins 实例?

线程模型