函數定義規則函數
FineReport報表已經提供了大量的自帶函數,在正常狀況下足夠知足用戶的報表製做需求,可是在一些特殊領域,可能須要一些特殊的函數,在這種狀況下,報表製做工具提供了自定義函數機制,能夠由用戶根據業務須要本身來定義一些函數,但這些函數必須知足FineReport函數定義規則。工具
FineReport函數定義規則:Functionname(Para,Para,...),其中Functionname爲函數名,Para爲參數。spa
函數原理orm
在FineReport報表中,每個函數都被定義成一個類,這個類必需要實現Function這個接口,在運算的時候首先經過函數名反射取得這個類,而後調用它的run(Object[] agrs)方法。下面以SUM這個函數爲例。繼承
http://www.finereport.com/forumimages/e433.png接口
http://www.finereport.com/forumimages/e434.pngci
由程序能夠看到,SUM類用來運算SUM函數,他繼承了NormalFunction類,而NormalFunction實現了Function這個接口。get
當函數運算的時候,先根據函數名取得運算該函數的類,如SUM(2,4,true)這個函數先根據函數名取得SUM這個類,而後調用SUM類的run(Object[] args)方法,args中存放的是SUM函數的參數,運算的時候能夠從args中取得參數進行運算。如執行結果爲SUM(2,4,true)=2+4+1=7。io
自定義函數使用步驟編譯
報表製做工具中自定義函數使用分爲四個步驟,以下:
自定義函數
編譯自定義函數
註冊自定義函數
使用自定義函數