2016-3-16 17:07
finefan
FineReport與OA系統整合的完全方案
這是帆軟某客戶分享的與OA系統整合的實例方案。
隨著社會訊息化高速發展,企業訊息化也得到了一定提高,而如何提高辦公效率已經成為企業一項重要而緊迫的任務,傳統的紙質報表等檔案不僅浪費紙張、不易存檔、不易調閱、不易統計,如何更有效、更快速提升辦公效率和辦公品質,成為了制約工作效率提升的最大瓶頸。
由點到面,從各位朋友的電腦桌面上繁多的報表檔案,明顯的可以看出日常工作的繁忙,可是一天下來感覺處理的檔案卻不多。
[b]地域限制:[/b]由於集團沒辦法實時和子公司實現同步辦公,在溝通方面成本很高,而且異地辦公效率低,得到的生產報表資料和財務資料不準確,而且不及時。
[b]員工素質的差別:[/b]每個人處事的方式都不同,造成「一鍋粥」的現象,這就要求我們用流程工具和報表工具來規範梳理工作。
[b]檔案丟失:[/b]員工的離職,造成報表文檔的丟失已經成了企業最大的損失。
透過現象看本質,實現訊息化已經迫在眉睫,集團急需一套OA並整合報表軟件的系統,而泛微OA正好符合我們的需求,且Finereport報表更是無縫整合於泛微OA。
[b]效果展示[/b]
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031601.png[/img]
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031602.png[/img]
[b]一、開發工具[/b]
讓我們先了解一下這個B/S架構的開發環境:
[b]操作系統:[/b]Redhat 5.4 Linux 64位
[b]WBE應用伺服器:[/b]RESIN
[b]開發語言:[/b]JAVA
[b]資料庫[/b]:ORACLE 10.2g
[b]報表開發工具:[/b]Finereport
[b]網頁開發工具:[/b]Dreamweaver 8
[b]OA系統:[/b]泛微協同OA
Finereport的資料來源於oracle現有資料庫,通過OA新增菜單,鏈接jsp網頁,利用OA角色與許可權控制單元在jsp頁面(嵌入報表頁面)做二次開發,並授權用戶訪問報表。
[b]二、資料源[/b]
由於OA已經有現成的oracle 10g資料庫,而我們的報表需要的資料庫源主要來自OA的資料庫表。
首先,我們要打開FR設計器,連接資料源,設計器最上方的菜單欄–伺服器—定義資料連接。用滑鼠選中剛剛命名的資料源,右邊顯示對應的資料源屬性編輯面板,共有五項屬性:
[b]資料庫:[/b]oracle
[b]驅動:[/b]oracle.jdbc.driver.OracleDriver
[b]URL:[/b]jdbc:oracle:thin:@192.168.X.X:1521:實例名
輸入帳號和密碼,點擊[b]「測試連接」[/b]按鈕,如下圖所示:
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031603.png[/img]
提示,測試成功,代表oracle資料庫連接成功。
[b]主要的資料庫表如圖所示:
1、workflow_currentoperator工作流請求節點操作人訊息表[/b]
存放如下欄位:請求id、用戶id、工作流類型、工作流id、操作節點id、操作日期、操作時間
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031604.png[/img]
[b]2、workflow_requestLog工作流請求簽字日誌表[/b]
存放如下欄位:操作者、操作時間、客戶端ip、下一節點id、工作流id、請求id、操作日期、操作節點id
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031605.png[/img]
[b]3、formtable_main_4簽報流程自定義表[/b]
存放如下欄位:抬頭、主辦部門、呈送、電話、傳真等敏感欄位
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031606.png[/img]
[b]4、HrmLocations人力資源辦公地點表[/b]
存放如下欄位:所在城市、所在國家、電話、傳真、手機。
[b]SysMaintenanceLog系統操作日誌表[/b]
存放如下欄位:操作日期、操作用戶id、操作時間、操作類型、是否為流程模板
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031607.png[/img]
[b]5、workflow_currentoperator工作流請求節點操作人訊息表[/b]
存放如下欄位:工作流id、工作流類型、操作節點id、接收到的日期、接收到的時間、標記流程是否歸檔、操作時間
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031608.png[/img]
[b]6、Hrmdepartment人力資源部門表[/b]
存放如下欄位:上級部門id、所屬分部1、所有上級部門id、部門名稱、部門標識等。
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031609.png[/img]
諸如hrmsubcompany人力資源分部表,存放如下欄位:所屬總部id、分部簡稱、分部描述等;HrmResource 人力資源表,存放如下欄位:身份證號碼、賬號id、籍貫、工作狀態、密碼等N多的訊息,這裡不再一一介紹。
[b]三、需求分析[/b]
基於Finereport的報表,並整合到OA,通過Finereport實現資料庫複雜查詢/填報的方式,在辦公OA上實現實時交互,讓OA專案花最少的力氣在報表工作上。體現在:
1、公文簽報,集中報表
2、考勤資料,集中報表
3、資產管理,集中報表
4、人員登錄,集中管控
5、流程管控,集中統一
6、許可權管控,集中統一
然後把大部分時間用於問題的解決,績效的提升,決策的制訂,有效的執行等核心事上,從而提高工作效率。
[b]四、資料分析[/b]
先分析一下專案資料的採集,報表資料貫穿著辦公OA流程,隨著時間的積累,積沙成塔。
[b]資料範圍:[/b]固定資產、人員登錄、集團/子公司的公文簽報、用章申請、考勤等資料
[b]資料層面:[/b]員工層面
[b]縱向維度:[/b]OA複雜的流程
[b]橫向維度:[/b]分公司、部門、員工、考勤種類等
[b]時間維度:[/b]日期
[b]五、報表設計[/b]
一般來說,一個完整的報表設計流程,大體分為如下幾個步驟:
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031610.png[/img]
打開設計器,跳過配置資料源這些簡單步驟,直奔設計報表主題,舉例集團簽報報表,首先、了解簽報所需要的欄位,一般是集團機要秘書來管理下發和收件,把欄位全部羅列出來,如圖:
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031611.png[/img]
其次、簽報情況匯總報表涉及了辦公OA流程的部分流程,查看流程,
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031612.png[/img]
包含總裁機要秘書接收日期,總裁機要秘書需要統計來文單位、檔案主題,然後再決定傳送給哪位集團分管領導,接下來又要統計分管領導意見以及會簽人的意見,最終才歸檔到經辦人和總裁機要秘書,所以這個報表具有重要意義,可以省去總裁機要秘書頻繁的登記收文和領導,提高領導的簽報效率。
約束條件是requestid,表與表之間通過requestid的關聯起來的,分別寫出該欄位需要查詢的條件,並且日期以流程節點「已查看」或者「已提交」為時間判斷標準。
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031613.png[/img]
思路清楚後,就直接設計報表欄位的SQL,如果用普通的網頁來製作這個簽報報表,我想我會瘋掉的。因為太複雜了,而且oracle的long類型的欄位在PL是不顯示的,而FineReport工具竟然能顯示出來,真的讓人佩服。
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031614.png[/img]
點擊「預覽」,結果就顯示出來了,如果用網頁還會存在緩存,很煩的,而改用FR設計器,更簡潔更快速。
為了提高瀏覽速度,設計的時候需要考慮分頁,點擊「檔案號」,點擊右鍵,設定條件屬性。設定公式為&B4 % 31,設定31行後就分頁。這樣是一個月的資料,對報表很有意義。
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031615.png[/img]
[b]六、許可權控制[/b]
Jsp頁面程式碼編寫,詳情見例子jtgw.jsp
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031618.png[/img]
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031619.png[/img]
注釋一下OA-Report-01
[b]許可權:[/b]901開始編號
[b]明細單元:[/b]9001 開始編號
[b]七、部署報表[/b]
1、安裝FineReport的安裝程序
2、通過SSH工具,將解壓出來的\FineReport_6.5\WebReport\WEB-INF地址下的reportlets,resources檔案上傳至伺服器\WEAVER\ecology\WEB-INF目錄下。
3、通過SSH工具,將\FineReport_6.5\WebReport\WEB-INF\lib地址下的fr-server-6.5.jar,fr-third-6.5.jar,ojdbc14.jar檔案上傳至於伺服器\WEAVER\Resin\lib目錄下。
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031616.png[/img]
1、在linux伺服器中\WEAVER\ecology\WEB-INF目錄下的web.xml添加內容,如圖:
[img]http://www.finereporktzhk.comm/tw/wp-content/themes/BusinessNews/images/2016031617.png[/img]
1、以上配置修改完成,重新啟動RESIN服務。
2、打開IE,輸入http://localhost/WebReport/ReportServer?op=fs,測試是否能打開。
3、在思科防火牆上映射外網IP到OA內網伺服器,並開放80埠,綁定公司域名到OA外網Ip,然後在IE輸入[url]http://oa.xx.com[/url],即可訪問到FineReport整合的OA系統。