如何在不重新启动Alfresco/Tomcat服务的情况下进行程序化更改的站点仪表板刷新?



我已经创建了一个web-script模块扩展,并已验证它正确工作。它所做的是从一个站点获取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服务的想法?

我知道问题是什么了。问题是我通过Remote API调用Alfresco Repository删除和重新创建仪表板,这样做是做出适当的更改,但没有告诉Alfresco Share这些更改。

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

基本上这最终成为Alfresco Share

customise-dashboard.post.json.js代码的修改版本

最新更新