在Java報(bào)表軟件定時(shí)器中,參數(shù)尤為重要,特別是時(shí)間參數(shù),在涉及到時(shí)間的定時(shí)任務(wù)中都需要用到它的公式。下面就以FineReport報(bào)表軟件為例,詳細(xì)介紹一下定時(shí)器的參數(shù)。
1. 時(shí)間參數(shù)
定時(shí)器中主要用到的時(shí)間參數(shù)如下:
日?qǐng)?bào)
當(dāng)前日期的前一天:Format(today()-1,”yyyy-MM-dd”)
周報(bào)
當(dāng)前日期的上一周的第一天:
Format(dateInWeek((today()-7),1),”yyyy-MM-dd”)
當(dāng)前日期的上一周的最后一天:
Format(dateInWeek((today()-7),7),"yyyy-MM-dd")
當(dāng)前日期的上上周的第一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),1),-7),1),"yyyy-MM-dd")
當(dāng)前日期的上上周的最后一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),7),-7),7),"yyyy-MM-dd")
月報(bào)
當(dāng)前日期的上一個(gè)月的第一天:
Format(dateInMonth(monthDelta(today(),-1),1),"yyyy-MM-dd")
當(dāng)前日期的上一個(gè)月的最后一天:
Format(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),"yyyy-MM-dd")
當(dāng)前日期的上上月的第一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),1),-1),1),"yyyy-MM-dd")
當(dāng)前日期的上上月的最后一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1),daysOfMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1))),"yyyy-MM-dd")
年報(bào)
當(dāng)前日期的上一年的第一天:
Format(dateInYear(yearDelta(today(),-1),1),"yyyy-MM-dd")
當(dāng)前日期的上一年的最后一天
Format(dateInYear(yearDelta(today(),-1),daysOfYear(yearDelta(today(),-1))),"yyyy-MM-dd")
2. 其他類(lèi)型參數(shù)值
報(bào)表當(dāng)中除了時(shí)間參數(shù)之外,為了節(jié)省報(bào)表制作的工作量和減少報(bào)表文件的總量,我們往往要在報(bào)表里面加入其他的參數(shù)。例如主機(jī)名,指標(biāo)名等等。
首先我們?cè)趫?bào)表里面定義這些參數(shù)的時(shí)候,建議使用中文的參數(shù)名稱,這樣在定時(shí)生成之后,在報(bào)表查看時(shí)上方的參數(shù)名稱也就是直接讀的在報(bào)表
當(dāng)中定義的參數(shù)名稱。中文對(duì)于最終用戶來(lái)說(shuō)比較容易理解。
在報(bào)表當(dāng)中有這些參數(shù)的時(shí)候,定時(shí)生成的時(shí)候,我們需要設(shè)定參數(shù)包含哪些具體的值。比如exchange郵件服務(wù)器的性能報(bào)表,在哪幾臺(tái)機(jī)器上
有exchange,exchange又包含哪些參數(shù)指標(biāo)。這些我們都需要通過(guò)定義全局?jǐn)?shù)據(jù)源得到。
也就是說(shuō),我們先定義好一個(gè)全局?jǐn)?shù)據(jù)源,該數(shù)據(jù)源返回的結(jié)果是exchange服務(wù)器所在的所有主機(jī)。
然后在設(shè)置定時(shí)生成的時(shí)候,主機(jī)這個(gè)參數(shù)的參數(shù)類(lèi)型,設(shè)置為“列”。選擇我們已經(jīng)定義好的全局?jǐn)?shù)據(jù)源,以及該數(shù)據(jù)源中代表主機(jī)的列即可。這樣在這個(gè)數(shù)據(jù)源內(nèi)返回了多少結(jié)果,則報(bào)表在生成的時(shí)候,會(huì)每一個(gè)值生成一個(gè)報(bào)表。有一種特殊的情況,也許要通過(guò)多定義一些全局?jǐn)?shù)據(jù)源來(lái)實(shí)現(xiàn)。例如我們的報(bào)表當(dāng)中,有一部分是windows主機(jī)的性能報(bào)表。但是windows的主機(jī)又分為OA和CallCenter。如果分開(kāi)來(lái)設(shè)計(jì)報(bào)表的話,是一種重復(fù)勞動(dòng)。
解決的辦法,就是通過(guò)定義不同的全局?jǐn)?shù)據(jù)源。還是以主機(jī)這個(gè)參數(shù)舉例。在全局?jǐn)?shù)據(jù)源里面定義兩個(gè)不同的數(shù)據(jù)源分別返回的結(jié)果是OA的主機(jī)和CallCenter的主機(jī)。 然后我們只要設(shè)計(jì)一張Windows主機(jī)的報(bào)表即可。在定義定時(shí)任務(wù)時(shí),可以定義兩個(gè)不同的action, 只是主機(jī)這個(gè)參數(shù)定義的時(shí)候,選擇的數(shù)據(jù)源不同。選擇OA的主機(jī),那么生成的報(bào)表就是OA的性能報(bào)表,選擇CallCenter的主機(jī),生成的即是CallCenter的報(bào)表。 再舉一個(gè)例子。各個(gè)業(yè)務(wù)系統(tǒng)的報(bào)表,也可以通過(guò)這個(gè)方法,大大減少報(bào)表的數(shù)量。例如業(yè)務(wù)系統(tǒng)的日?qǐng)?bào),我們只需要設(shè)計(jì)一張報(bào)表。在設(shè)置定時(shí)生成的時(shí)候,業(yè)務(wù)系統(tǒng)這個(gè)參數(shù),可以分別設(shè)置固定的值,即十個(gè)不同的action。
文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1305575.html