1. 程式人生 > >FineReport和泛微OA(Ecology)的單點登入整合方案

FineReport和泛微OA(Ecology)的單點登入整合方案

最近出現了很多關於帆軟報表和泛微OA的整合問題,均出現在“單點登入”上。直接也有相關的文章介紹一些FineReport和泛微整合的背景、價值等,以及FineReport和OA的深度整合的方案,但是並沒有提到單點登入的整合方案,今天就簡單介紹下FineReport和OA單點登入整合方式。

同步使用者資訊

單點登入的基礎,就是使用者資訊的同步,FineReport的決策系統中有一個很強大的功能,可以自動幫助使用者實現使用者資訊同步。具體選單:決策系統-管理系統-使用者管理。點選使用者管理選單後,右側頁面右上角有一個“設定”按鈕,如下圖:

 

點選“設定”,則會出現如下圖的介面。按照下圖中的配置進行對應的配置。

 

認證方式:選擇平臺內建認證。單點登入的整合是通過平臺內建認證進行整合的。

使用者同步資料集:選擇“已開啟”

伺服器資料集:伺服器資料集是需要去帆軟報表的開發工具上進行配置。如下圖:

 

 

進入設計器,點選選單伺服器-伺服器資料集,新增一個數據集,選擇OA的資料來源,寫入SQL“select * from hrmresource”,儲存即可。

儲存後,需要去本地的開發環境上找到對應的xml,複製到決策系統伺服器端,才可使用。本地開發環境的xml路徑見上圖“儲存路徑”後面的對應檔案路徑。

通過EditPlus編輯器開啟datasource.xml檔案後,找到“OA使用者”這塊xml程式碼。將這塊程式碼複製到伺服器上的datasource.xml上,路徑和/WebReport/WEB-INF/resourcr/datasource.xml,貼上格式參見本地的開發環境。如下圖:

 

注:不要用記事本開啟xml,儲存可能會損壞xml。更新伺服器檔案時,做好備份。

繼續配置使用者同步

使用者名稱:XXX

姓名:XXX

密碼:XXX,注意,OA的密碼已經進行了32位大寫的MD5加密。

加密方式:不設定密碼加密

其他選填。

點選儲存,OK,決策系統已經開始在後臺執行了使用者同步了。只需要在決策系統中的使用者管理上檢視同步的使用者資訊結果即可。

泛微OA的登入方式和如何編寫單點登入

瞭解單點登入之前,先了解下OA的登入方式。泛微OA的登入方式有2種。第一種,是通過頁面登入進OA;第二種是,是通過E-Message上的快捷方式進入到OA。

這樣的話,如果實現FineReport和泛微OA整合的單點登入,以上的兩種登入方式均瑤實現這個效果。很多使用者和泛微的實施團隊會在OA的login.jsp上編寫單點登入程式碼。在login.jsp上編寫單點登入程式碼智慧解決第一種登入方式“通過頁面登入進OA”。而通過E-Message上的快捷方式進入到OA是不能實現帆軟決策系統的單點登入的。如果要實現兩種登入方式的單點登入,可以在泛微OA登入後頁面上編寫單點登入程式碼。泛微OA登入後頁面的jsp為“/ecology/wui/theme/ecology7/page/main.jsp”。

第一步,引入js程式碼:

<script type="text/javascript" src="http://***.***.***.***:**/WebReport/ReportServer?op=emb&resource=finereport.js"></script>  

 

第二步,獲取當前使用者的登入名和密碼的java程式碼:

String nodeSql ="select loginid,password from HrmResource where id =  " + user.getUID();
        RecordSet.executeSql(nodeSql);
        if (RecordSet.next()){
                userpasswordstr = RecordSet.getString("password");     
                loginidstr = RecordSet.getString("loginid");
        }

從上面的程式碼可以很明顯的看到,這個和sql和rs的取值欄位跟之前配置使用者同步資訊對應的表和欄位是一樣的。

第三步,編寫js程式碼:

var username =FR.cjkEncode("<%=loginidstr%>");  
var password ="<%=userpasswordstr%>";
password = password.toUpperCase();//把密碼小寫字母轉換成大寫字母
var scr = document.createElement("iframe");                
scr.src = "http://***.***.***.***:**/WebReport/ReportServer?op=touchfs&username="+username+"&__redirect__=false&password="+password;

這裡是採用iframe的跨域單點登入方式,所以在JS中需要建立一個iframe,然後在iframe上設定SRC。

第四步,儲存main.jsp,備份伺服器的main.jsp,更新main.jsp。

第五步,重新登入OA,單點登入成功。校驗方式,在OA的瀏覽器上,新建一個頁籤,輸入“http://***.***.***.***:**/WebReport/ReportServer?op=fs”,如果出現如下圖,且登入名為自己的使用者,則表示單點登入成功。但是。。。還沒完。

 

在泛微OA上配置決策系統入口

完成了上述的配置,但是OA使用者通過什麼方式進入決策平臺呢?提供2個方式供參考。

第一,用系統管理員配置自定義左側選單。

第二,設定使用者元素。

以上3點完成後,FineReport和OA的整合工作就大功告成了。