Java報(bào)表軟件中自定義函數(shù)概述
Posted on 2011-10-31 15:20 FineReport——報(bào)表技術(shù)領(lǐng)跑者 閱讀(304) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Java報(bào)表技術(shù)知識(shí)函數(shù)定義規(guī)則
FineReport報(bào)表已經(jīng)提供了大量的自帶函數(shù),在正常情況下足夠滿(mǎn)足用戶(hù)的報(bào)表制作需求,但是在一些特殊領(lǐng)域,可能需要一些特殊的函數(shù),在這種情況下,Java報(bào)表軟件提供了自定義函數(shù)機(jī)制,可以由用戶(hù)根據(jù)業(yè)務(wù)需要自己來(lái)定義一些函數(shù),但這些函數(shù)必須滿(mǎn)足FineReport函數(shù)定義規(guī)則。
FineReport函數(shù)定義規(guī)則:Functionname(Para,Para,...),其中Functionname為函數(shù)名,Para為參數(shù)。
函數(shù)原理
在FineReport報(bào)表中,每一個(gè)函數(shù)都被定義成一個(gè)類(lèi),這個(gè)類(lèi)必須要實(shí)現(xiàn)Function這個(gè)接口,在運(yùn)算的時(shí)候首先通過(guò)函數(shù)名反射取得這個(gè)類(lèi),然后調(diào)用它的run(Object[] agrs)方法。下面以SUM這個(gè)函數(shù)為例。
http://www.finereport.com/forumimages/e433.png
http://www.finereport.com/forumimages/e434.png
由程序可以看到,SUM類(lèi)用來(lái)運(yùn)算SUM函數(shù),他繼承了NormalFunction類(lèi),而NormalFunction實(shí)現(xiàn)了Function這個(gè)接口。
當(dāng)函數(shù)運(yùn)算的時(shí)候,先根據(jù)函數(shù)名取得運(yùn)算該函數(shù)的類(lèi),如SUM(2,4,true)這個(gè)函數(shù)先根據(jù)函數(shù)名取得SUM這個(gè)類(lèi),然后調(diào)用SUM類(lèi)的run(Object[] args)方法,args中存放的是SUM函數(shù)的參數(shù),運(yùn)算的時(shí)候可以從args中取得參數(shù)進(jìn)行運(yùn)算。如執(zhí)行結(jié)果為SUM(2,4,true)=2+4+1=7。
自定義函數(shù)使用步驟
Java報(bào)表軟件中自定義函數(shù)使用分為四個(gè)步驟,如下:
自定義函數(shù)
編譯自定義函數(shù)
注冊(cè)自定義函數(shù)
使用自定義函數(shù)
文章來(lái)自:http://blog.vsharing.com/fanfanzheng/A1438726.html