




已閱讀5頁,還剩47頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第 1 頁 用友用友 NCNC 二次開發平臺二次開發平臺 查詢引擎查詢引擎 目目 錄錄 第一章前言 1 第 2 頁 1 產品的前身 1 2 產品的需求背景 1 第二章查詢引擎的管理 2 1 對象樹管理 2 1 1目錄管理 2 1 2對象管理 3 1 3導入導出 3 2 切換定義數據源 4 第三章查詢引擎的查詢模型 5 1 參數控制 5 2 SQL 設計 7 2 1數據字典 7 2 2向導設計 8 2 3手工設計 12 3 數據交叉 13 3 1第一類 投影 交叉 13 3 2第二類 旋轉 交叉 14 4 代碼嵌入 16 4 1SQL整理 16 4 2數據加工 18 4 3穿透規則 22 5 查詢瀏覽 25 5 1查詢執行與展現 25 5 2數據導出 25 5 3創建物化表 25 第四章查詢引擎的界面模型 27 1 引用查詢 28 2 格式設計 28 2 1控件管理 29 2 2行列格式設計 33 2 3預定義數據處理 36 3 界面運行 38 3 1界面初始化 38 3 2數據處理 39 3 3控件連動 42 3 4報表打印 43 3 5功能節點掛接 43 附錄 45 第 3 頁 1 查詢引擎 FAQ 之參數篇 45 參考文獻 47 第 1 頁 第一章第一章 前言前言 查詢引擎的功能定位 一個面向高級實施人員和專業開發人員的查詢建模產品 可以全面 支持復雜查詢的設計和個性化的報表展現 1 產品的前身產品的前身 查詢引擎在功能流程和查詢模型方面參考了自定義查詢的理念 在界面設計方面汲取了 Form Design 的思路 同時融入了數據倉庫的技術 并依賴于通用的 NC 數據字典 DDC 1 自定義查詢 NC 于 2000 年開始研發的一個面向中級實施人員和二次開發人員的 查詢報表工具 由查詢管理中心 報表格式設計 報表瀏覽 報表權限控制和數據 加工廠幾個模塊構成 此工具首次提出了基于數據字典來管理數據并建立查詢對象 的思路 能夠提供比較豐富的查詢分析 數據加工和報表展現功能 2 Form Design NC 于 2003 年開始研發的一種界面開發模式 定位于支持功能建模 3 數據字典 一種管理數據庫邏輯結構的機制 存在于物理數據庫和用戶接口之間 NC 于 2002 年開始研發數據字典 最開始只用于自定義查詢 后來經過功能強化 和逐步推廣 成為現在的 DDC Data Dictionary Control 其功能包括數據庫對象 的管理與編輯 數據字典的解析生成等 4 數據倉庫 NC 的一個獨立產品 能夠按照指定的入倉規則從多個業務數據庫抽取 數據 并通過入倉服務定期把數據加載到數據倉庫 2 產品的需求背景產品的需求背景 1 復雜查詢報表的需求 在實際的業務查詢中 開發人員經常會遇到以下一些棘手的 問題 復雜的 SQL 從不同的查詢條件得到完全不同的查詢結果 查詢結果的 復合 業務邏輯代碼和大量數據加工算法的介入 各種各樣的數據交叉和數據處理 手段等等 在展現格式方面 通常要求靈活 友好 可視化 個性化的設計界面 豐富的展現控件和統計圖表 依據數據對單元格 列表頭和行表頭的格式進行設置 表單控件之間的連動等等 這一切都對早期的查詢報表工具提出了艱巨的要求 2 二次開發的需求 隨著 NC 對行業用戶的拓展 由業務組程序員在通用軟件中針對 每個查詢報表需求進行開發的方案已經變得不太現實 一線人員越來越頻繁的面臨 來自用戶的個性化報表實施壓力 實施團隊迫切要求一個強大而且易用的二次開發 工具 盡管功能的強大和易用往往存在著一些矛盾 3 工具整合的需求 自定義查詢在推出后 在實施中得到了一定的應用 但局限于出 復雜程度不太高的查詢報表 IUFO 是公司的傳統報表產品 它更偏重于報表的管 理方面 比如報表的發布 審核 校驗等等 數據倉庫使查詢的應用由單數據源拓 展到了多數據源 并且提供定時同步業務數據的功能 為了有效地實現資源共享 結合發揮各個工具的優勢 NC 決策層一直在推動相關產品的整合 4 查詢分析軟件發展潮流的需求 近幾年來 查詢分析 數據挖掘 商業智能的研究 不論在企業應用還是在學術領域都成為熱點 ERP 軟件的數據建模和查詢建模功能 第 2 頁 已經成為代表產品水平的重要指標 第 3 頁 第二章第二章 查詢引擎的查詢引擎的管理管理 1 對象樹管理對象樹管理 查詢引擎的管理調度功能由主界面完成 主界面左側為一棵對象樹 樹上掛有代表查詢對 象和界面對象的節點 右側為顯示當前選中對象基本屬性的屬性框 圖 2 1 管理調度主界面 對象樹 ObjectTree 對象樹是一個支持層次管理的數據結構 它維護自身的加載 存儲和節點的目錄管理 每個節點的信息主體存儲在數據庫的一個 BLOB 字段中 對象樹上 的節點通常分為目錄 Folder 和對象兩類 并支持快速定位 在樹獲得焦點時用 ctrl f 快捷鍵可彈出查找對話框 支持按編碼或名稱來模糊查找 屬性框 ObjectInspector 一個自動顯示對象的屬性和取值的控件 取值部分會根 據屬性的數據類型采用不同的渲染器來展示 不同的編輯器來編輯 1 1 目錄管理 1 增加 刪除 修改 在根節點或目錄節點之下可以增加目錄 刪除目錄時會刪除目錄 第 4 頁 下的所有對象 目錄的可修改屬性為目錄名稱 同一目錄下的目錄和對象不能重名 2 復制 剪切 粘貼 在查詢子樹或格式子樹下 可以將一個目錄及其下屬內容從某位 置拷貝或移動到另一個位置 1 2 對象管理 1 增加 刪除 修改 在根節點或目錄節點之下可以增加查詢對象或者界面對象 前者 的屬性為編碼 名稱和數據源 后者的屬性為編碼和名稱 其中編碼一經使用 就 不再建議作任何修改 因為此編碼可能被其它對象引用 2 復制 剪切 粘貼 在查詢或格式子樹下 可以將一個對象從某位置拷貝或移動到另 一個位置 1 3 導入導出 1 導出 選中某個對象 可將其導出為 XML 文件 文件里描述了對象的所有信息 也可選中某個目錄 將該目錄下所有的子目錄和對象都導出到指定位置 保持原有 的目錄級次 2 導入 在選中某個目錄之后 導入功能可用 導出的 XML 文件 可以導入到當前 目錄下 此功能可用于對象的跨數據庫復制 導入時 我們可以選擇單個文件 也 可以選擇一組文件或目錄 導入后會保留原目錄的級次結構 需要注意的是 a 在 導出查詢對象或界面對象時 需將其引用的查詢對象一并導出才有意義 b 導入 不能違反對象主鍵及名稱的唯一性約束 下圖顯示了某查詢對象所導出的 XML 文 件 第 5 頁 圖 2 2 導出 XML 文件 2 切換定義數據源切換定義數據源 多數據源運作機制 查詢引擎支持這樣的模式 NC 業務在數據源 A 下運行 查詢引 擎的定義放在數據源 B 通過引擎定義的查詢可以到數據源 C 去執行 注 只有數據倉庫下的查詢引擎有切換定義數據源和跨庫查詢的功能 客戶化下的查詢引 擎只能查詢當前賬套數據源的數據 圖 2 3 切換定義數據源 定義數據源 上面說的 B 是指查詢引擎自身的系統表所在的數據源 執行切換功能后 主界面上的對象樹的內容會作相應改變 第 6 頁 圖 2 4 切換定義數據源效果 第 7 頁 第三章第三章 查詢引擎的查詢模型查詢引擎的查詢模型 查詢模型的定義包括參數定義 SQL 設計 含交叉定義 SQL 整理 數據加工 穿透規 則等幾部分 其中穿透規則描述的是本查詢與外部查詢的通信關系 剩余部分都用于描述 查詢內部的屬性 查詢引擎的查詢模型 數據模型 設計如下 查詢設計態和運行態的基本流程如下圖所示 圖 3 1 查詢模型流程 1 參數控制參數控制 參數是查詢模型中代表動態信息的元素 在 SQL 設計 SQL 整理和數據加工中 均可以根 據參數的不同 對查詢的定義和執行進行調整 第 8 頁 過濾型參數 如果創建某個參數的作用是根據其取值的不同改變 WHERE 條件的設置 則 這類參數成為過濾型參數 這是最常用的參數功能 參數的應用可以參見附錄 1 參數定義 用于定義本查詢內部引用的所有參數 其中參數名要保證互不相同 數據類型包括自由錄入 枚舉 參照幾種 當類型為枚舉時 枚舉項為用 分隔的枚舉值 或者是一個單字段的查詢 SQL 當類型為參照時 枚舉 項為基礎參照名 或者是用尖括號括起的自定義參照的類名 2 參數引用 參數可在 SQL 設計的篩選條件頁簽引用 也可在 SQL 整理或數據 加工的嵌入代碼中利用編碼向導引用 3 參數設置 運行態要求用戶首先對參數進行設置 這與查詢模板的使用類似 當報表引用了多個查詢時 參數將通過多頁簽設置 每個頁簽代表一個查詢 圖 3 2 參數定義 圖 3 3 參數引用 第 9 頁 圖 3 4 參數設置 2 SQL 設計設計 SQL 設計包括向導設計方式和手工設計方式 無論采用哪種 在完成設計時系統均會對 SQL 進行合法性校驗 如未通過校驗則不能保存設計 作為向導設計的一個重要組成環節 我們有必要先介紹一下數據字典 2 1 數據字典 前面已經提到過 查詢對象的屬性中包含數據源信息 因此在設計查詢的時候需要加載相 應數據源的數據字典 我們知道 NC 的數據庫以 DDC 作為數據字典 但非 NC 的數據庫 則沒有 DDC 此時 系統會根據執行數據源是系統會根據執行數據源是 NC IUFO 或其它數據庫三種情況分別加或其它數據庫三種情況分別加 載不同的數據字典載不同的數據字典 而且這一機制已經預留了擴展的接口 其目的就是可以面向各種類型 的數據庫執行取數功能 NC 數據字典提供了統一的數據建模平臺 支持對各種數據庫對象進行管理 維護這些物 理對象的邏輯屬性 并向外系統提供訪問數據庫邏輯信息的接口 以查詢引擎為例 查詢查詢 對象的定義是基于數據字典進行的對象的定義是基于數據字典進行的 而這份數據字典來自查詢對象所指定的數據源 由于 多數報表的列與業務數據庫的字段存在某種對應關系 因此數據字典的存在有助于提高查 詢定義的直觀性和易用性 第 10 頁 圖 3 5 NC 數據字典 NC 數據字典通常在安裝產品時候由系統生成由系統生成 如果想自己為某些數據庫對象生成字典 可以采用數據字典管理界面提供的導入方法 導入方式包括三種 詳細操作可參見 數據 字典導入說明 1 解析 PDM 文件 xml 格式 2 解析 NC 標準建庫腳本 3 提取數據庫元數據 如果需要給非 NC 數據庫 比如用戶采用的第三方數據庫 生成數據字典 可以利用 PowerDesigner 提供的逆向工程功能將庫里的物理表生成 PDM 文件 修改其中表和字段的 中文名稱 然后以 xml 文件格式存儲 再使用上述第一種方法導入 查詢引擎中用到的數據字典都以一棵對象樹的形式存在 樹節點包括目錄 表 視圖 字 段 外鍵等信息 通過雙擊對象節點可以協助錄入 SQL 語句的成分 2 2 向導設計 向導設計參考典型 SQL 的構成規則 充分利用數據字典的功能 引導用戶一步步完成 SQL 的設計 因此是推薦使用的方式 它由以下六個環節構成 其中最后一步 交叉屬性 超 出了 SQL 的涵義 我們在后面的專門章節中進行介紹 1 表定義 即 SQL 語句中的 from 部分 可以利用數據字典選擇庫里的數據表 也可以選擇查詢對象 從而實現查詢的集成 基于查詢結果定義新的查詢 2 連接定義 即 SQL 語句中的 join 部分 表間連接關系 支持單鍵連接和多鍵 連接兩種模式 第 11 頁 3 字段定義 即 SQL 語句中的 select 部分 可以定義任何 SQLSERVER 語法支 持的查詢表達式 但要保證字段別名不重復且使用規范名稱 以字母開頭 由 字母 數字 下劃線組成的字符串 且不能使用 SQL 保留字 如果使用了聚 集函數 則由系統自動完成 group by 部分 4 篩選條件定義 即 SQL 語句中的 where 部分 可定義確定條件和待定條件 秘笈 如果是待定條件 在值編輯框獲得焦點時雙擊編輯框可彈出參數界面并 作引用 或者在值編輯框獲得焦點時按 F12 鍵彈出參數引用框 如果是固定 條件 在值編輯框獲得焦點時按 F11 鍵可彈出環境變量引用框 按 F12 鍵可彈 出所引用的基礎數據表的參照 對于在查詢字段里使用了聚集函數的 SQL 設計 篩選條件可能需要使用 having 子句 Having 頁簽默認是隱藏的 可以在查詢定義框的南部面板按 Ctrl Shift 鼠標左鍵彈出隱藏的 Having 頁簽 5 排序字段定義 即 SQL 語句中的 order by 部分 6 數據交叉屬性 交叉是一種常用的多維數據分析手段 詳見后文 秘笈 向導設計完成后在查詢定義框的南部面板鼠標雙擊可彈出向導生成的等效 SQL 待定條件全用 1 1 代替 圖 3 6 表定義 第 12 頁 圖 3 7 增加表 物理表 與臨時表 圖 3 8 連接定義 圖 3 9 字段定義 第 13 頁 圖 3 10 表達式生成器 圖 3 11 篩選條件定義 典型模式參見圖 3 3 圖 3 12 排序字段定義 第 14 頁 2 3 手工設計 手工設計是支持自由 SQL 的方式 由于復雜 SQL 在解析 適配 執行等方面的不穩定性 較大 因此不推薦普通用戶使用 手工設計分為以下兩個環節 1 SQL 錄入 用戶可以在數據字典的輔助下錄入 SQL 語句 要求遵循 SQLSERVER 語法 如圖 3 13 注意 我們在 SQL 定義里用到了一個替換型參數 pk corp 關于替換 型參數的具體說明參見附錄 2 字段顯示名設置 系統通過對用戶錄入 SQL 的解析獲得字段信息 并向用戶提供輸入 字段顯示名的機會 顯示名的默認值與查詢字段的物理名相同 圖 3 13 SQL 錄入 圖 3 14 字段顯示名設置 第 15 頁 3 數據交叉數據交叉 3 1 第一類 投影 交叉 投影交叉 假定有一個查詢 SQL 其查詢結果是單行單列的匯總值 另外還有兩組 WHERE 條件的序列 分別為橫向序列 WhereX1 WhereX2 WhereXn 和縱向序列 WhereY1 WhereY2 WhereYn 則數據矩陣 A aij 對應的結果集成為投影交叉 如果 aij是 WhereXi和 WhereYj同時作用在上述 SQL 上獲得的結果 比如 某查詢用于某公司下各部門各民族的人數 原始 SQL 由查詢向導生成的等效 SQL 為 select bd deptdoc deptname as deptname bd defdoc docname as docname count bd psndoc pk psndoc as psnno from bd deptdoc left outer join bd psndoc on bd deptdoc pk deptdoc bd psndoc pk deptdoc left outer join bd accpsndoc on bd psndoc pk psndoc bd accpsndoc pk psndoc left outer join bd defdoc on bd accpsndoc nationality bd defdoc pk defdoc where bd deptdoc pk corp group by bd deptdoc deptname bd defdoc docname 查出的結果如下表所示 圖 3 15 原始數據 無交叉 現在我們把查詢字段中只保留人數 count bd psndoc psncode 一項 然后進行如下的投影交 叉設置 第 16 頁 圖 3 16 投影交叉設置 則交叉后的結果如下表所示 圖 3 17 投影交叉結果 3 2 第二類 旋轉 交叉 旋轉交叉 此類交叉用于顯示表中某幾個字段 稱為交叉值字段 的統計值 并將其分 組放置在查詢結果中 一組列在數據表的左側 稱為交叉行字段 一組列 稱為交叉列字 段 旋轉到數據表的上部成為列表頭 統計值則放在對應的交叉單元 關于旋轉交叉的更細節的內容 請參考李媛媛所著的 交叉表使用說明 兩類交叉的最大差別在于 第一類交叉屬于查詢行為 適用于行列設置都已在表樣中固定 的報表 其交叉結果嚴格遵循表樣格式 其行列結構不會受查詢數據的影響 第二類交叉 屬于數據加工行為 其交叉后的行列結構在查詢出數據之前不可預料 多用于完全真實地 對原始數據進行動態處理 沿用 3 1 使用的例子 假定我們進行如下的旋轉交叉設置 其中交叉砝碼的意義是代表交 叉值字段的位置 它只能出現在交叉行字段或交叉列字段當中 第 17 頁 圖 3 18 旋轉交叉設置 則交叉后的結果如下表所示 圖 3 19 旋轉交叉結果 在旋轉交叉設置界面上單擊行 列 值標簽 在圖 3 18 中用藍色框標示的位置 可彈 出交叉行列復合維度設置和是否小計的設置框 第 18 頁 圖 3 20 旋轉交叉結果 設置了小計 4 代碼嵌入代碼嵌入 4 1 SQL 整理 SQL 整理 SQL Repair 指在 SQL 查詢之前 對 SQL 所作的調整 通常會根據參數的 不同 對查詢的表 字段或條件等信息進行增補或修改 SQL 整理的具體內容由內嵌的代碼片段描述 這與后面將介紹的數據加工和穿透規則一樣 代碼的錄入可通過編碼向導協助完成 盡管如此 這幾種功能仍然推薦由高級實施人員或 程序員使用 第 19 頁 圖 3 21 SQL 整理代碼 在圖示的 SQL 整理代碼中 表達了這樣一個整理愿望 當參數 detail 取值為 Y 時 引擎會在本查詢對象已完成的 SQL 設計基礎上多查詢一張表 bd defdoc 和兩個字段 檔案編碼 檔案名稱 從而獲得更明細的查詢信息 如果該參數取值不為 Y 則仍 然按照 SQL 設計的定義去執行查詢 以下簡單介紹幾種 SQL 整理算法的編碼向導使用方法 1 追加查詢表 參數為待追加的表物理名 圖 3 22 追加表向導 2 追加連接條件 與追加表同時使用 參數為連接模式 追加表物理名和追加的 表間連接條件 第 20 頁 圖 3 23 追加連接條件向導 3 追加查詢字段 與追加表同時使用 參數為追加字段的表達式 顯示名和別名 圖 3 24 追加字段向導 4 按參數追加條件 根據參數取值的不同追加不同的篩選條件 參數為參數名和 篩選字段 圖 3 25 按參數追加條件向導 4 2 數據加工 查詢結果集 ResultSet 由二維數據集合 數據體 及其列信息 元數據 包括列名 第 21 頁 列數據類型等信息 構成的一個數據載體 查詢引擎中使用的結果集為 Borland 公司開發 的 DataSet 數據加工 Data Process 數據加工是指某個 或某幾個 結果集在經過一系列加工 算法的變換后得到另一個結果集 而后者通常是業務上要求的展現結果 相關的算法又稱 為加工濾鏡 濾鏡通常支持輸入多個結果集和輸出一個結果集 并可以嵌套使用 數據加工與 SQL 整理的區別在于 前者在 SQL 查詢之后進行 作用的對象是結果集 后者 在查詢之前進行 作用的對象是 SQL 定義 在數據加工的編碼向導中 提供了多種實用加工濾鏡 圖示的數據加工代碼把 ID 分別為 male 和 female 的兩個結果集按照 deptname 字段為鍵進行了左外連接 并在連接結 果中保留了 deptname mpsnnum fpsnnum 三列 圖 3 26 數據加工代碼 以下簡單介紹幾種數據加工算法的編碼向導使用方法 1 由查詢獲得結果集 根據查詢 ID 和參數變量獲得查詢結果集 這里的參數變 量是指需要傳給目標查詢的參數哈希表 默認可以是當前查詢的參數哈希表 見圖 3 27 不需修改 第 22 頁 圖 3 27 獲得結果集向導 2 公式設置 參數為公式列名 返回值數據類型和公式 如果公式列名不存在則 新增一列 否則將該列的內容更新為公式返回值 一個公式也可以引用另一個 公式列的計算結果 圖 3 28 公式編輯 第 23 頁 圖 3 29 公式定義 3 結果集連接 指定兩個結果集的連接字段 連接方式和連接后的保留字段 得 到連接后的結果集 圖 3 30 結果集連接向導 4 結果集聯合 指定兩個列結構相兼容的結果集 得到聯合 union 后的結果 第 24 頁 圖 3 31 結果集聯合向導 4 3 穿透規則 數據穿透 假定報表 R1 上存在某個區域 A1 A1 內部有若干業務數據 如果以 A1 為出 發點能夠切換到另一張報表 R2 的上的區域 A2 而且 A1 和 A2 的內部數據存在著某種內在 聯系 則稱可以從 R1 穿透到 R2 當這種穿透行為傳遞下去 我們就可以了解某張報表的 數據明細 甚至追溯到它的數據來源 通常我們會把上述的區域選為一個表格行或者一個 表單元 而上述的內在聯系就稱為穿透規則 一個查詢上可以定義多個穿透規則 每個規則需要指定穿透的目標查詢 同時目標查詢上 要創建一個過濾型參數 用于接收穿透區域的取值 如我們現在定義了兩個查詢 公司部門和部門人員 如圖 3 32 我們希望在瀏覽公司部門 的時候選中某個部門能穿透到部門人員查詢查看這個部門下的所有員工 這首先需要我們 在公司部門的查詢列和部門人員的查詢參數之間建立一個關聯關系 這里我們選擇公司部 門的部門編碼 deptcode 列 在部門人員查詢里加入一個查詢參數部門編碼 deptcode 源查詢列和目標查詢參數名字不一定要相同 但是含義要一致 并在查詢定義里引用該參 數作為過濾條件 第 25 頁 圖 3 32 公司部門 上 和部門人員 下 定義公司部門的穿透規則 選擇查詢間穿透向導 設置如下 圖 3 33 穿透規則定義向導 圖 3 34 穿透規則代碼 下圖顯示了一個由人員信息穿透到薪資信息再穿透到同姓員工工資信息 最后穿透到每月 明細的用例 其中第一步穿透是單列等值穿透 相當于 人員 李滌非 第二步是非等 值穿透 相當于 姓名 like 李 第三步是多列聯合穿透 相當于 人員 李屏 and 年份 2003 第 26 頁 圖 3 35 穿透效果示意 第 27 頁 5 查詢瀏覽查詢瀏覽 5 1 查詢執行與展現 在建立好查詢模型之后 系統提供預覽查詢執行結果的功能 用戶首先輸入執行查詢所需 要的參數取值 如果有參數的話 查詢引擎會根據該查詢對象的數據源去對應的數據庫執 行查詢 在經過查詢結果集評估 對于查詢記錄數過大的情況允許用戶優化或放棄查詢 之后 把結果集展現給用戶 在展現之后 用戶可以繼續進行穿透 交叉等工作 圖 3 36 查詢預覽 5 2 數據導出 導出功能支持將預覽數據導出為純文本文件 并可進而用 EXCEL 打開 隨著產品的發展 數據導出的格式會逐步豐富 5 3 創建物化表 查詢引擎可以根據預覽數據直接到數據庫創建物化表 同時將物化表的結構注冊到數據字 典 物化表會注冊到 DDC 的 物化臨時表 目錄下 中 以后的 SQL 設計就可以基于新創 建的物化表進行 從而擴充了查詢集成的范圍 引用了物化表的查詢 在執行前會提示是 否同步刷新物化表 如果選擇了刷新 則會按當前的參數設置傳遞給產生物化表的查詢 重新執行得到結果并更新物化表 再在此基礎上執行當前查詢 如果未選擇刷新 則直接 基于物化表里的已有數據執行查詢 第 28 頁 由一個查詢生成物化表 該表會創建到查詢定義所在的數據源 如果是數據倉庫下 可 通過切換定義數據源查看當前所在數據源 而不是查詢取數數據源 就是選中查詢后在右 邊屬性列表里的數據源 如果是客戶化下的查詢引擎 這兩者是一致的 因為客戶化下的 查詢引擎只支持單數據源 就是當前登錄賬套所在數據源 圖 3 37 創建物化表 圖 3 38 在定義查詢時引用創建的物化表 第 29 頁 第四章第四章 查詢引擎的界面模型查詢引擎的界面模型 界面模型節點的新建和管理參見第二章 我們可以設計新的界面模型 也可以對已有的界 面模型進行修改 界面模型的設計包括引用查詢 界面可視化設計 綁定數據集 數據預 處理等部分 界面模型 展現模型 設計如下 界面模型設計態和運行態的基本流程如下圖所示 設計態的操作并沒有嚴格意義上的順序 限制 圖 4 1 界面模型流程 第 30 頁 1 引用查詢引用查詢 引用查詢是指將界面模型所要展現的查詢結果集對應的查詢定義引用到模型中來 由于同 一查詢定義根據不同參數設置也可以得到不同結果集 所以為了區分這種綁定基于同一查 詢定義的不同結果集時 我們對每一個查詢結果集起一個單一的別名來標志 圖 4 2 查詢引用界面 對于數據集之間存在的某種一對多的關系 我們還可以根據需要建立主從關系 即主子表 查詢引擎支持兩個數據集之間按照多列關聯建立主從關系 圖 4 3 主子連接設置界面 2 格式設計格式設計 界面模型的格式設計包括了控件拖放 編輯控件屬性及數據綁定屬性 定義列格式 列表 頭 行表頭等行列格式以及數據預處理等幾部分 分別介紹如下 第 31 頁 圖 4 4 界面模型設計界面 2 1 控件管理 界面模型設計工具提供了幾種最常用的控件 如圖 4 4 中控件欄中所示 分別是按鈕 復 選框 組合框 標簽 列表 單選框 多頁簽 表 文本域 文本框 樹 面板 分割欄 圖表和參照控件 其中最重量級的控件是表和圖表 絕大部分的數據集展現工作是這兩個 控件完成的 初始時 界面上只有一個面板 處于選中狀態 布局是默認的 BorderLayout 我們接下來 的工作就是要在這個面板上定制我們的界面 這個過程和一般的 Java 可視化設計大同小異 查詢引擎的布局基本上沿用 Java 布局的 FlowLayout BorderLayout 和 GridLayout BorderLayout 和 Java 稍有區別 前兩種是比較常用的 FlowLayout 布局顧名思義 是流程式的 象字處理程序安排段落里的文本一樣布局 GUI 元 素 圖 4 5 FlowLayout 示例 查詢引擎里的 BorderLayout 將容器分成了北 中 南三個區域 每個區域放置一個子控件 和 Java 的五個區域稍有不同 北區域和南區域按控件首選高度來布置 寬度都是充滿 這個容器 剩下的空間全部劃分給中區域 如圖 4 6 主面板的布局就是 BorderLayout 其北區域放置了一個子面板 布局為 FlowLayout 中區域放置了一個分隔欄控件 左右各 第 32 頁 放了一個表格 南區域放置了一個多頁簽 圖 4 6 BorderLayout 示例 GridLayout 按照指定的行數和列數來平均分隔容器空間 形成很多子區域 每一個區域內 放置一個子控件 圖 4 7 GridLayout 示例 圖 4 8 界面模型 雙擊界面上的控件就可以打開屬性編輯器 可以編輯控件的相關屬性 屬性編輯器上邊是 當前界面的控件列表 下面列出了當前選中控件的屬性列表 我們可以從控件列表中選中 控件 也可以在界面上雙擊控件來選中控件進行屬性編輯 圖 4 9 屬性編輯器 所有控件都有背景色 前景色 字體和首選大小等普通屬性 其次 控件具有一些自己特 有的屬性 如面板具有布局屬性 分割欄有分欄方向 分欄位置等特有屬性 下面我們來 介紹一下幾個主要的控件 展現數據集的最重要的控件 表的幾個屬性 1 綁定數據集 可以將表綁定到引用查詢中的某一個查詢定義 那么在運行態下 表展現的就是該查詢定義對應得到的查詢結果集 當設置了表的數據集綁定屬 性后 該查詢定義中定義的列就相應的出現在表里 此時沒有數據只有表頭 2 列格式綁定 有時候會對表中的數據展現有各種格式上的要求 如預警顯示 精度設置 前綴后綴等等 這時可以設置表的列格式屬性 在列格式屬性里不 但可以設置列綁定的列格式 也可以設置列的顯示順序 顯示與否等屬性 列 格式的定義在后面的小節里專門講述 第 33 頁 圖 4 7 列格式設置 3 列表頭綁定 當表綁定了數據集之后 可以根據展現需要綁定列表頭格式 在 表頭 ID 屬性里綁定表頭的 ID 之后 從界面上就可以看到表的列表頭已經綁定 到了表頭 ID 對應的表頭格式 列表頭格式的設計在后面的小節里會專門講述 4 行表頭綁定 如果表綁定的查詢定義里定義了第一類交叉 即投影交叉 參見 第三章第 3 節 則表還可以設置行表頭格式 關于行表頭的定義和設置在后 面小節中講述 圖表 圖表控件在設置了數據集綁定屬性之后 可以設定其數據綁定屬性 在圖表控件上彈出右 鍵菜單點擊數據綁定菜單項 可彈出數據綁定設置界面如圖 4 8 所示 在這里我們可以設 置圖表的類型 以及綁定的系列等屬性 圖 4 8 圖表數據綁定設置界面 圖表支持的類型有三種 分類圖 餅圖和儀表圖 分類圖有 2D 和 3D 兩種 還可以選擇是水平方向還是垂直方向展開 如果選擇了各系列單 獨設置圖例 還可以對不同的系列設置不同的展現類型 如圖 4 9 顯示了兩個系列的數 據 一個系列是直方圖 一個系列是折線圖 第 34 頁 圖 4 9 分類圖 餅圖也有 2D 和 3D 兩種 圖 4 10 顯示了圖 4 9 中的數據用餅圖類型的展現 圖 4 10 餅圖 儀表圖將每個系列的數據在一個儀表盤中顯示 圖 4 11 為同樣的數據在儀表圖的展現 儀 表圖一次展現數據中的一條記錄 可以通過儀表圖中的導航工具欄瀏覽數據 第 35 頁 圖 4 11 儀表圖 列表 下拉框 文本框 標簽 參照等簡單控件提供了綁定到多種內容的屬性 其中 列 表和下拉框可以綁定到查詢結果集中某列 導航或枚舉 綁定查詢結果集對應的參數 即 查詢參數 文本框可以綁定查詢參數和環境變量 參照控件可以綁定查詢參數 下面是設 置一個文本框綁定到查詢參數的截圖 圖 4 12 綁定查詢參數的文本框 2 2 行列格式設計 行列格式設計包括列格式定義 列表頭定義和行表頭定義三部分 分別說明如下 列格式定義 第 36 頁 圖 4 13 列格式定義界面 我們可以定義四種類型的列格式 字符型 數值型 貨幣型 百分比型 后三種實際上都 屬于數值型數據的不同展現 格式定義包括對齊方式 文本顏色 前導符號等等 對于數 值型的列格式還可以設置保留小數位數 是否加千分位等格式 列格式的一個比較重要的 設置就是設置預警顯示 預警顯示就是將符合指定條件的數據按指定顏色來顯示 如銷售 額這樣的數據通過分段預警就很容易體現出高中低來 方便瀏覽數據 圖 4 14 中所示預警設置就是將小于 60 的數用紅色顯示 60 到 80 之間的數用藍色顯示 大于 80 的數用黃色顯示 預警條件中除支持用常量表達式進行比較之外 也支持用含變量 的表達式進行比較 其中的變量名必須是表中某列的列名 如表中有 A B C 三列 要 求某行中 A 列中的值大于 B 列和 C 列的值之和時該行 A 列按某種指定顏色顯示 我們可 以給 A 列綁定列格式 在列格式的預警設置中設置預警條件為 B C 注 這里的 A B C 都是指的列名 不是列顯示名 參見圖 4 7 圖 4 14 預警設置界面 列表頭定義 第 37 頁 圖 4 15 列表頭設計界面 有時候為了方便歸類和分組列數據 我們需要定義多表頭來加強展現 如圖 4 15 我們可 以根據自己的需要定義一個多表頭用來展現 在這里 可以很方便的組合表中列 定義好 的表頭格式存在數據庫中 并有一個表頭 ID 與之對應 通過表頭 ID 該列表頭格式可以被 表綁定 綁定了列表頭的表效果參見圖 4 5 小技巧 定義對應某一查詢的列表頭展現時 我們可以通過參照 選中該查詢來快速引 入該查詢定義的列 而不用手工錄入 行表頭定義 如果設置表的綁定數據集屬性到一個定義了第一類交叉的查詢 那么表中會出現與查詢中 定義的列和行相對應的列頭和行頭 默認的列頭和行頭沒有任何附加的格式 如圖 4 16 所 示 第 38 頁 圖 4 16 綁定到第一類交叉查詢定義的表 就像可以給列分組定義列表頭一樣 我們也可以給行分組定義行表頭 如圖 4 17 所示 類似于列表頭的定義 我們也可以合并行 還可以定義行號顯示與否 行號顯示的位置 甚至可以為定義好的表頭綁定列表頭 保存后我們可以看到界面上的表已經顯示了新定義 的行表頭格式 圖 4 17 行表頭設計界面 圖 4 18 定義了行列表頭格式的表 承圖 4 16 2 3 預定義數據處理 界面模型中支持兩種數據預定義的處理 定義公式列和定義小計合計 其中 公式列定義 是基于查詢結果集的 定義的公式列對于所有綁定該查詢結果集的控件都是可見的 小計 合計是基于表控件的 定義的小計合計只對該表起作用 不影響其他綁定到相同數據集的 第 39 頁 控件 公式列 點擊數據處理菜單下的公式列菜單項 就會彈出如圖 4 19 所示的公式列定義界面 圖 4 19 公式列定義界面 在查詢結果集下拉框中選中要定義公式列的數據集 如果是添加公式列 則數據集中可選 的列名會出現在可選列列表中 如果是預定義的公式列 則可選列是數據集的原始列 如 果是運行態定義的公式列 可選列還包括已經定義的公式列 雙擊列項可將該列添加到公 式表達式中 公式列中可用函數和操作符也已列出 均是通過雙擊可以添加到表達式中 添加公式列需要指定公式列名和公式類型 也可以給公式列指定列格式 公式列表達式只 支持 Ascii 字符 不支持中文 如果表達式有誤 則運行態下公式列內各行的值均為空 如果是刪除公式列 列表中列出了當前數據集已定義的公式列 選中即可刪除 修改公式 列界面與添加公式列類似 小計合計 設計界面模型時在表控件的表頭上彈出右鍵菜單 點擊小計合計菜單項可彈出設置小計合 計的界面 如圖 4 20 其中 根據表綁定的查詢定義的不同 界面會稍有區別 分別說明 如下 普通表 可以設置根據什么列分組 進行小計合計 以及分組列的升降序 可以設置小計合計計算與否 以及小計行和合計行標志展現 可以設置需要小計合計的列 以及統計運算的類型 目前支持的運算類型有求和 最大值 和最小值 可以設置統計數據放置在原始數據之前還是放置在后 第一類交叉表 投影交叉表 定義了第一類交叉的查詢結果集行列結構是固定的 多用在固定格式的報表中 因此 其 第 40 頁 小計合計也設計得稍有區別 在這種情況下 小計合計是根據表的行頭來進行的 它根據 表行頭所示的樹狀結構中樹節點的級次來小計合計 所以 對于這類表 我們設置的是小 計開始級次和終止級次 而不是分組列 a 普通表 b 投影交叉表 圖 4 20 小計合計設置界面 3 界面運行界面運行 對于已經格式設計完畢的界面模型 我們可以運行該界面來查看結果 3 1 界面初始化 我們發出運行某界面的命令后 在界面呈現出來之前 系統會做一系列的初始化工作 根 據界面模型引用的查詢定義查詢得到對應的結果集 由界面定義構造出界面 根據數據集 綁定屬性將控件綁定到對應的結果集 當所有的初始化工作都完成以后 界面才呈現在我 們面前 圖 4 21 查詢參數設置界面 第 41 頁 如果界面引用的查詢定義里定義了查詢參數 那么在初始化界面工作去后臺查詢結果集之 前 會要求我們輸入查詢參數 如當我們運行圖 4 5 中定義的界面模型 它引用的查詢如 圖 4 2 所示 時 因為其引用的查詢定義中 部門檔案 是定義了參數的 所以系統會彈 出查詢參數設置界面讓我們輸入查詢參數 如圖 4 21 所示 圖 4 22 界面模型運行結果 承圖 4 5 輸入相應的查詢參數 運行結果如圖 4 22 所示 3 2 數據處理 界面模型在運行態提供了幾種數據處理的功能 查找 排序 過濾 公式列 小計合計 交叉和穿透 其中 查找 排序 過濾和公式列是基于數據集的 這些操作對于所有綁定 到被操作數據集的控件都是起作用的 放在數據處理菜單下 而小計合計 交叉和穿透是 基于表控件的 放在表控件表頭右鍵菜單下 只對表控件本身的數據展現起作用 不影響 其他控件 查找 圖 4 23 查找設置界面 選中要進行查找的數據集 以及要查找的字段 輸入查找值就可以進行查找 如果數據集 中存在符合查找條件的記錄 數據集會滾動到這一條記錄 同時在界面控件上體現出來 第 42 頁 排序 圖 4 24 排序設置界面 選中要進行排序的數據集 選擇排序列及升降序 可以對數據集進行排序 相當于 Order By 過濾 過濾設置分兩種類型 疊加過濾和重新過濾 疊加過濾是在前過濾結果的基礎上再按指定 條件進行過濾得到新的結果 而重新過濾則是去掉了之前設置的過濾條件 在原始結果集 的基礎上按指定條件過濾得到新的結果 過濾條件的設置有普通模式和高級模式 普通模式的條件設置類似于查找設置 而高級模 式的過濾條件設置支持帶參數表達式的過濾 其表達式的定義類似與公式列表達式的定義 但必須是邏輯表達式 第 43 頁 圖 4 25 過濾設置界面 公式列 小計合計 運行態公式列定義和小計合計定義類似于預定義數據處理中所述 不再贅述 交叉 圖 4 26 第一類交叉 投影交叉設置界面 第 44 頁 圖 4 27 第二類交叉 旋轉交叉設置界面 數據交叉的意義和說明參見第三章第 3 節 界面運行態下的表控件支持交叉操作 如果綁 定了定義第一類交叉 投影交叉 的查詢定義 則表控件支持的是第一類交叉 如果綁定 的是其他查詢定義 表控件支持第二類交叉 穿透 第 4 28 穿透規則選取界面 穿透的意義和說明參見第三章第 4 3 小節 界面運行態上如果某表控件綁定到定義了穿透 規則的查詢定義 則該表控件支持穿透操作 回退 恢復 界面還提供了回退 恢復功能 在對數據集進行了一系列數據處理操作之后 可以利用恢復 功能恢復到原始狀態 表控件提供了回退功能可以撤銷交叉和穿透等操作 3 3 控件連動 控件連動分同步連動和主子連動兩種 同步連動 當多個控件綁定到一個數據集時 當對該數據集進行了查找 排序 過濾 公式列等操作 第 45 頁 時 數據集的變化會通知到每個控件 是它們相應的更新展現 體現出同步的連動 圖 4 29 上的表格和圖表引用了相同數據集 因此當進行排序 過濾等數據集操作的時候 表和圖上的數據會出現完全同步的變化 同樣 在圖上點擊某個系列時 表也會相應的定 位到該系列 圖 4 29 表 圖同步互動 主從連動 如果兩個數據集之間建立了主從關系 則分別綁定到這兩個數據集的控件之間就形成了主 從連動的關系 如圖 4 22 展現的就是兩組建立了主從連動關系的表控件 當主表選中某 行時 子表則相應的展現出與主表記錄對應的所有子表記錄 3 4 報表打印 界面模型提供了預覽和直接打印的功能 這部分的功能暫時還不完善 有待擴充 3 5 功能節點掛接 定義好的界面模型并不限制在查詢引擎下運行 它也可以作為獨立的功能節點掛接在各業 務組的功能模塊下 其掛接步驟如下 第 46 頁 圖 4 30 功能節點掛接 注冊功能節點 注冊功能節點時需指定對應文件名為 nc ui pub querymodel QueryNodeUI 每個節點還需 定義兩個參數 pkQryNode 界面模型對應的編碼 dsName 定義數據源 這樣 功能節點掛接就完成了 第 47 頁 附錄附錄 1 查詢引擎查詢引擎 FAQ 之參數篇之參數篇 1 參數定義中的 操作符提示 列是什么意思 是否有用 答 通常此列內容只有提示意義而無實際用處 只有對于參照型參數并且所填內容為 like 或 in 的時候有特殊含義 前者會在參照出來的值后面加百分號 后者支持參照多選 2 數值型參數和字符型參數有何差別 答 數值型參數保證其在引用過程中參數值不加單引號 而字符型參數可能視引用的具體 情況有所不同 3 在進行復合查詢的參數定義時 是否需要列出所引用子查詢的參數 答 是的 復合查詢不會自動去遞歸提取所引用子查詢的參數并集 這個并集需要通過手 工引用 復合查詢自身不一定使用其中的參數 但它負責把參數分發給引用的子查詢 4 如何快速引用其它查詢對象的參數 答 鼠標單擊南部面板 5 什么是替換型參數 答 參數名以 開頭和結尾的參數稱為替換型參數 如 param1 這類參數在引用時被完 全字符替換為相應的參數值 而普通參數只限于在向導式設計中作為待定條件的取值 在 Sql 手工設計
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030人才測評機構產業運行態勢及投資規劃深度研究報告
- 2025至2030全球及中國修腿褲行業產業運行態勢及投資規劃深度研究報告
- 2025至2030中國生物質干燥機行業產銷規模與需求潛力分析報告
- 2025至2030中國珍珠養殖行業現狀動態與發展規劃研究報告
- 2025至2030中國環氧活性稀釋劑市場未來趨勢及前景規劃建議報告
- 2025至2030中國物聯網中的低性能SOC行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國爆破片架行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025至2030中國焦化行業運行動態及投資前景深度評估報告
- 孫小果案制度完善心得體會他
- 2025年中國船用發電機行業市場發展現狀及投資方向研究報告
- 學校會議室改造項目投標方案(技術標)
- 《操作風險管理》課件
- 兒童樂園安全管理制度
- 【醫學課件】外科營養支持
- 燕秀工具箱模具設計快捷鍵一覽表
- 物業承接查驗標準及表格
- 燈箱廣告投標方案(完整技術標)
- dzl213型鍋爐低硫煙煤煙氣袋式除塵濕式脫硫系統設計
- 《公路橋涵養護規范》(5120-2021)【可編輯】
- 新人教版一年級數學下冊期末考試卷(附答案)
- 人教版三年級語文上冊期末試卷及答案【完整】
評論
0/150
提交評論