如何在不重新启动Alfresco / Tomcat服务的情况下,以编程方式更改站点仪表板?

时间:2015-09-09 01:32:38

标签: alfresco alfresco-share alfresco-webscripts

我已经创建了一个Web脚本模块扩展,并验证它是否正常工作。它的作用是从一个站点获取dashboard.xml和相关的page.component-X-Y.type~id~dashboard.xml文件,删除另一个站点上的所有仪表板相关文件,然后将源文件复制到删除它们的新站点。

伪代码

var siteDashboard = getDashboard("site1-shortname");
var siteDashboard = renameShortNames("site1-shortname", "short2-shortname");

deleteDashboard("site2-shortname");
createDashboard("site2-shortname", siteDashboard);

renameShortNames只需将仪表板文件中的网站ID重命名为新网站的ID。

这一切都有效,我已经过测试和验证。我的问题是,当我转到http://alfrescosite.com/alfresco/s/remoteadm/get/s/sitestore/alfresco/site-data/pages/site/site2-shortname/dashboard.xml时,它会向我显示来自site1-shortname的新仪表板布局,这是正确的行为,但当我访问Alfresco内的实际网站的信息中心时,它会显示旧的site2-shortname信息中心。我可以通过重新启动Alfresco / Tomcat服务来获得要显示的新仪表板的唯一方法。我甚至尝试使用不同的浏览器查看仪表板,以防它是本地缓存问题,但事实并非如此。

关于如何使仪表板刷新到新布局而不必每次都重新启动Alfresco / Tomcat服务的任何想法?

1 个答案:

答案 0 :(得分:1)

我弄清楚问题是什么。问题是我正在通过Remote API Alfresco Repository调用来删除并重新创建信息中心,这样做是为了进行相应的更改,但没有告诉Alfresco Share这些更改。

解决方案是使用共享根对象sitedata的组合来删除组件绑定,删除组件并通过Share重新创建它们,以便更改在前端自动更新,而不是需要重新启动服务。

基本上,这最终成为customise-dashboard.post.json.jsAlfresco Share内代码的修改版本