Java軟件報表軟件技術(shù)博客

          java報表軟件技術(shù)匯總 java報表軟件制作 報表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          問題:實(shí)際應(yīng)用環(huán)境中,不同角色的人可能對數(shù)據(jù)具有不同的訪問權(quán)限,通過直接在SQL語句中篩選出需要的數(shù)據(jù)制作模板可以解決該需求,但對于角色較多的情況,就需要制作很多張樣式相同只是數(shù)據(jù)集不同的報表,不利于后期的維護(hù)并且加大了報表制作的工作量。

          方案:針對該問題,在java報表FineReport中,可以利用SQL參數(shù)配合參數(shù)處理器再結(jié)合權(quán)限以完成該需求。使用該方案只需要制作一張表樣,利用SQL中的參數(shù)進(jìn)行動態(tài)過濾達(dá)到該目的。下面具體描述該方案的實(shí)施過程。

           

          第一步:數(shù)據(jù)準(zhǔn)備

              這里使用的是DEMO數(shù)據(jù),主要為了演示該方案的操作,具體使用的時候需要根據(jù)具體的數(shù)據(jù)情況進(jìn)行調(diào)整:

          表:datas

          ID

          DATA

          ROLE

          1

          100

          0

          2

          200

          0

          3

          300

          0

          4

          400

          1

          5

          500

          1

          6

          600

          2

          7

          700

          2

          8

          800

          3

           

          ID:編號

          DATA:數(shù)據(jù)

          ROLE:可查看角色編碼

           

          表:roles

          ID

          ROLENANME

          ROLE

          1

          總裁

          0

          2

          總經(jīng)理

          1

          3

          部門經(jīng)理

          2

          4

          銷售人員

          3

          ID:編號

          ROLENAME:角色名稱

          ROLE:角色編碼

           

          第二步:制作模板

          2.1 新建一張模板,數(shù)據(jù)集中新建一個“數(shù)據(jù)庫查詢數(shù)據(jù)集”,名稱為:datasSQL語句寫成“select * from datas where ROLE>=[?ROLE?]

          2.2 拖拽新建的報表數(shù)據(jù)集datas的數(shù)據(jù)列至報表中,如下圖所示:

          http://www.finereport.com/forumimages/tgqxkzsjfw1.jpg

          2.3 新建一個服務(wù)器數(shù)據(jù)字典,用于進(jìn)行角色名稱與角色編碼的轉(zhuǎn)換,因為這里是演示用,就直接將數(shù)據(jù)寫死了,使用自定義的服務(wù)器數(shù)據(jù)字典,用戶可以根據(jù)具體的情況使用數(shù)據(jù)庫查詢數(shù)據(jù)字典來定義,關(guān)鍵點(diǎn)是要將“角色名”設(shè)置為key,“角色編碼”設(shè)置為value。因為在應(yīng)用的過程中,一個用戶的角色是通過角色名來定義的,而對數(shù)據(jù)的訪問控制是通過角色編碼來控制的,這里需要一個值轉(zhuǎn)換的過程。如果角色名與角色編碼一致則可以不經(jīng)過下列步驟的設(shè)置。

          數(shù)據(jù)字典的名稱為:roles_map

          http://www.finereport.com/forumimages/tgqxkzsjfw2.jpg

          2.4 設(shè)置參數(shù)處理器,選擇菜單中的“報表-“參數(shù)處理器”,定義先前SQL語句中定義的參數(shù)“ROLE”的參數(shù)處理器,這里采用公式類型,用于將角色名處理為角色編碼,公式為:“MAP($ROLE,”roles_map”)”如下圖所示:

          http://www.finereport.com/forumimages/tgqxkzsjfw3.jpg

          2.5 保存模板文件即可。

          2.6 用戶在集成應(yīng)用的時候,需要在系統(tǒng)登錄后設(shè)置當(dāng)前登錄的用戶的角色,或者使用FineReport自帶的權(quán)限管理系統(tǒng)。如果采用FineReport自帶的權(quán)限管理系統(tǒng),上述SQL語句中的ROLE參數(shù)可使用FR_ROLE_NAME來替代,該參數(shù)是FineReport權(quán)限系統(tǒng)中的默認(rèn)登錄角色參數(shù)名。具體登錄角色設(shè)置方式請參見FineReport權(quán)限集成幫助文檔或咨詢FineReport服務(wù)人員。
          文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1448107.html



          主站蜘蛛池模板: 军事| 麻阳| 沂源县| 辛集市| 马鞍山市| 金乡县| 司法| 正镶白旗| 长寿区| 阿拉善右旗| 电白县| 内江市| 司法| 沁阳市| 桂平市| 团风县| 天门市| 连云港市| 兴山县| 林口县| 合阳县| 大石桥市| 涞源县| 兴文县| 珠海市| 平陆县| 丽江市| 四会市| 绥棱县| 普安县| 津市市| 绥江县| 庆安县| 鄂州市| 静宁县| 河北区| 应城市| 靖西县| 定安县| 仲巴县| 聂荣县|