Package io.leandev.appfuse.report
@ExperimentalApi("REP-09\uff1a\u81f3\u5c11\u5169\u500b\u5be6\u969b\u5831\u8868\u9a57\u8b49\u5f8c\u8f49\u70ba\u7a69\u5b9a")
package io.leandev.appfuse.report
報表文件模型(實驗性)
與 renderer 無關的報表文件:應用以 ReportTemplate 把資料轉成
ReportDocument,再交給 renderer 分頁輸出。
模組內容
ReportDocument- 不可變的文件與建構器,建構時執行模型驗證ReportTemplate、ReportContext- 樣板與產生環境GroupedRows- 串流分組與彙總,記憶體與列數無關ReportDiagnostic、ReportValidationException- 驗證結果- 節點、樣式與列來源見
io.leandev.appfuse.report.node
設計與驗證規則見文檔站「REP-02 ReportDocument 核心契約設計」。
-
ClassDescription字型檔的來源;登錄時只記錄來源,render 時才讀取由應用提供位元組;每次讀取都呼叫 supplierclasspath 上的字型資源檔案系統上的字型檔GroupedRows<T>把已排序的領域資料串流轉成帶群組角色的
TableRow串流彙總結果的 handle;只能用於建立它的GroupedRows結束中的群組一個群組或總計的彙總結果頁面邊界頁首或頁尾;左、中、右三格,v1 全部頁面共用同一組頁首頁尾建構器頁面尺寸與邊界每頁內容末端的左右摘要;可以使用頁碼及總頁數,不改變固定PageRegion頁尾。 位於頂層pageBreakBefore=trueSection的頁面另可使用SectionPageNumber/SectionPageCount, 解析為該分節的頁碼與排版完成後的實際總頁數。 左右內容不自動換行,超寬時失敗而非截斷;同字級單行內容使用相同基線。 左右內距只縮排文字,摘要上線仍畫滿內容區寬度。 最後頁採lastPage,其他頁採everyPage;分節最後頁可逐側優先採PageSummaryOverride。 無摘要文字時仍保留設定的線及空間。摘要建構器;最後頁未覆寫的側沿用一般頁內容PDF renderer 的建立入口從已保存的 PDF 擷取選取的頁面(REP-08)單次 render 的選項render 成功的結果render 完成的報表產物(REP-05);以 renderer 的暫存檔承載,關閉後刪除產生報表時的環境驗證或排版時回報的訊息嚴重度與 renderer 無關的報表文件:資料已套入、尚未分頁ReportDocument建構器;不可重複使用於多份文件以外的用途,但ReportDocument.Builder.build()可呼叫多次Section建構器;摘要的線、間距及文字預設沿用文件 PageSummary。Table建構器renderer 使用的字型登錄;不可變,可在多執行緒共用ReportFonts建構器字型家族;每個字面是一條 fallback 鏈,regular必填家族的字面設定;每個方法依序列出 fallback 字型文件 metadata;除keywords外皆為選填metadata 建構器選取的 PDF physical pages(REP-08)連續頁的區間(1 <= from <= to <= MAX_PAGE)選頁不合法(REP-08);經StandardRestExceptionHandler轉為 400render 在產生階段被取消;已開啟的列來源與暫存資源都已釋放,out未被寫入把ReportDocument輸出成特定格式報表產生的狀態值型別;status()對齊前端ReportViewer的generating/ready/failed/expired已過期(應用依保存期限刪除後)失敗產生中已保存、可下載把應用資料轉成報表文件報表模型不合法;建構時由ReportDocument.Builder#build()丟出,讀取延遲列時由 renderer 丟出已保存到FileStorage的報表把
ReportArtifact保存到FileStorageStoredReport stored = StoredReports.save(fileStorage, partition, renderer.render(document, options));partition 由應用決定:tenant 模組傳目前 tenant ID,tenantless 模組傳應用常數或依資料範圍設計的值。 保存期限由應用以
StoredReport.storedAt()計算並自行刪除;框架不排程刪除。