1. 概述
1.1 問題描述
多用戶并發一直是服務器部署中頭一個關鍵考慮因素,目前 FineReport 已經提供了相對較好的多用戶 Session 控制方案,也提供了 防宕機插件 來控制報表的生命周期。除以上兩種方法外,本文提供了一種 JS 控制報表最長預覽時間,超時自動退出的方法。
1.2 實現原理
利用 JavaScript 提供的 setTimeout()方法可以進行延時操作,再利用 window.location 來跳轉到指定頁面,但是如果直接使用強制跳轉的話,用戶本身登錄的會話并沒有結束,我們需要用到 Ajax 來進行數據的交互。
2. 示例
2.1 準備 JS 文件
在%FR_HOME%\webapps\webroot\help目錄下新建一個 logout.js 文件。
點擊可下載:logout.js
JavaScript 代碼内容爲:
setTimeout(function () {
jQuery.ajax({
url: "/webroot/decision/logout",//單點登錄的報表服務器
data: {},
timeout: 5000,
success: function (data) {
window.location = "/webroot/decision/login";
},
error: function () {
alert("error"); // 登錄失敗(超時或服務器其他錯誤)
}
});
},3600);//最大預覽時間(單位:毫秒),設置了 3600 毫秒後退出,可以根據實際需要進行修改
2.2 引用 JS 文件
打開一個模板,點擊菜單欄「模板>模板 Web 屬性>引用 JavaScript」,引用 logout.js 文件,如下圖所示:
注:如果需要設置全局使用此設置,需要在服務器>服務器配置>引用 Javascript 中引用 logout.js,這樣服務器中所有的模板都會使用此生命周期控制方案了。
2.3 效果預覽
保存模板,點擊「分頁預覽」,經過 3.6 秒後,報表會自動退出,并進入到重新登錄「決策平台」的界面,即通過 JavaScript 可以控制模板預覽生命周期。如下圖所示: