Universe

第一章:Designer簡介
  1. 變量 $INSTALLDIR 是指 Designer 和 Web Intelligence
    所使用的數據訪問文件的安裝根路徑。這是帶有操作系統子目錄的 Business
    Objects 安裝路徑,其中包含 Designer 可執行文件和數據訪問驅動程序。
    在 Windows 下,$INSTALLDIR = \\...\Business Objects\BusinessObjects  Enterprise 12\win32_x86。

  2.Universe 是一個包含以下內容的文件:
  • 一個或多個數據庫中間件的連接參數
  • 稱爲對象的 SQL 結構,映射到數據庫中的實際 SQL 結構.對象按類分組.。Web Intelligence 用戶既可以看到對象,也可以看到類 
  • 在數據庫中使用的表和聯接的模式。。Web Intelligence 和Desktop Intelligence 用戶看不到該模式。


  3.  類和對象
  •    類是 Universe 中的對象的邏輯分組。它表示對象的類別。
  •    對象是映射到數據庫中的數據或數據派生的命名元素。
  
對象類型 說明
用於分析的參數。維通常與諸如
地理、產品或時間的層次相關。
明細 提供維的說明,但並不是分析的
焦點。
度量 傳遞用於確定維對象數量的數值
信息


  4.Universe 設計方法
  • 業務問題的分析和規劃 Universe 解決方案
  • 設計模式
  • 構建 Universe
  • 將 Universe 分發給用戶

  5.Universe 開發週期
   
開發階段 說明
準備
  • 確定目標數據源並熟悉其結構
  • 瞭解各目標數據庫的各個表中包含哪些數據。
  • 瞭解聯接。
  • 確定基數。
  • 瞭解可能發生的情況。
分析
  • 確定用戶羣及其組織方式
  • 確定用戶需要哪些信息
  • 確定用戶需要哪些標準報表
  • 熟悉用戶的業務術語,以便您能切合實際地命名對象
規劃 確定項目策略。例如,應創建多少個 Universe、哪些 Universe 應
具有被鏈接的能力以及被鏈接的程度。
實施
  • 使用 Designer 構建 Universe。
  • 在構建過程中經常進行測試,以確保推導出的 SQL 的有效性和可靠性。
測試 組織一小組用戶,最好是 Web Intelligence 的超級用戶,這些用
戶在一定程度上了解他們期望從Universe 獲得的信息。要求這些用
戶執行模擬 Universe 的實際使用的徹底測試。
部署 通過將 Universe 導出到中央管理系統(CMS)資源庫來分發 Uni-
verse,最終用戶可在資源庫中訪問它們。
發展
在數據源與用戶需求更改和發展時更新和維護 Universe




第 2 章 執行基本操作

  1、取消激活“快速設計嚮導”
  •   選擇“工具” > “選項”
  • 清除“顯示歡迎向導”複選框
  • 清除“文件/新建啓動快速設計嚮導”複選框
  • 單擊“確定”


  2.使 Universe 可供所有 Designer 用戶訪問
  • 驗證希望可供所有用戶使用的 Universe 並未具有安全連接
  • 必須具有安全連接才能將 Universe 導出到 CMS。
  • 另存爲 選擇“爲所有用戶保存”複選框。


  3.打開操作和導入操作有什麼不同?
  • 可以從文件系統中直接打開 Universe。當您保存此 Universe 時,只會
    將它保存到文件系統,而不會在 CMS 中更新此 Universe。此 Universe 的
    更新不可供Web Intelligence 用戶使用。
  • 當導入 Universe 時,會將資源庫中的最新可用版本提供給 Designer。
    當您完成修改 Universe 時,可將其導出到資源庫。CMS 即會被最新的更改
    加以更新。

  4.將 Universe 導出到資源庫
  • 選擇“文件” > “導出”
  • 從文件夾下拉列表框中選擇一個 Universe 文件夾。

    單擊“瀏覽”按鈕,並在文件夾瀏覽器中選擇一個 Universe 文件夾。
  • 在“組”列表框中單擊某個組。
  • 在“Universe”列表框中單擊某個 Universe。
  • 如果想導出其他未打開的 Universe,請單擊“添加 Universe”按鈕,然
    後使用瀏覽器選擇其他 Universe。

  4.將 Universe 定義另存爲 PDF
  •   選擇“文件” > “另存爲”
  • 從“另存爲類型”下拉列表框中選擇“可移植文檔格式 (*.pdf)”


  5.設置缺省保存選項
  •   選擇“工具” > “選項”
  • 單擊“保存”選項卡
  • 在“缺省 Universe 文件夾”文本框中鍵入文件路徑。
    或 瀏覽到包含 .unv 文件的文件夾
  • 如果想指定自動保存時間,則選擇“自動保存”複選框,然後在“選擇
    分鐘值”框中選擇或鍵入時間間隔數字。
  
  6.設置 Universe 參數
  • 標識 Universe
    
標識符 使用方
文件名 (8 個字符) 要引用 Universe 的文件系統和
Web Intelligence。
長名稱 (35 個字符) Web Intelligence 用戶。Web
Intelligence
說明 Web Intelligence 用戶。
唯一的數字 ID 要標識 Universe 的 CMS。在第
一次將 Universe 導出到 CMS,將爲
其分配此數字。

   
  • 連接包含三個元素:數據訪問驅動程序   連接和登錄參數  連接類型
       數據訪問驅動程序是將 Universe 連接到中間件的軟件層  
    連接和登錄參數
參數 說明
類型 連接的類型(個人、共享或安全)
個人連接(不安全):將對數據的訪問限制爲 Universe 創建者和在上面創建它的計算機。
共享連接(不安全):允許訪問所有用戶的數據。
安全連接:集中管理並控制對數據的訪問。
名稱 標識連接的名稱。
用戶名 您的數據庫用戶名。
密碼 您的數據庫密碼。
在查看時刷新報表期間使用單一
登錄
選中時,將自動使用用於訪問 CMS
的用戶名和密碼作爲數據庫登錄參
數。
使用與 BusinessObjects 用戶帳
戶關聯的數據庫憑據
選擇此選項後,將會強制用戶輸
入與其 BusinessObjects 帳戶關聯
的數據庫用戶密碼以刷新報表。此選
項是在中央管理控制檯級別設置的。
數據源/服務 數據源或數據庫名稱。如果使用
了 ODBC 驅動程序,則數據源名稱標
識目標數據庫。如果使用本機驅動程
序,則數據庫名稱標識目標數據庫。

  

  7.針對個人連接和共享連接設置密碼
  • 選擇“工具” > “選項”
  • 單擊“保存”選項卡。
  • 在“保護密碼”或“寫保護密碼”文本框中鍵入密碼。最多可以輸入
    40 個字母數字字符。

  8.摘要信息
信息 說明
創建時間 Universe 的創建日期和創建者名稱。
修改 上次修改的日期和修改者的名稱
修訂 指出已將 Universe 導出到 CMS的次數的修訂次數
註釋 供您自己或另一位設計員參考的Universe 相關信息。此信息只在Designer 中可用。
統計信息 Universe 中包含的類、對象、表、別名、聯接、上下文和層次的數量的列表。



  9.策略
  內置策略
  
策略 用於...
對象
在表模式中創建表時,自動創建默認類和對象。*
聯接
  • 在表模式中創建表時,自動抽取默認的聯接。
  • 在創建聯接時自動插入基數
  • 自動檢測表模式中的聯接。
  • 自動爲表模式中的現有聯接檢測和插入基數。
過濾可用於表瀏覽器中的表的信息


  使用策略的自動創建功能:選擇時自動創建,不選擇時手動創建
  • 選擇“工具” > “選項”
  • 單擊“數據庫”選項卡
  • 選擇對應於要用於策略的默認創建功能的複選框


  10.控件
查詢限制 說明
限制結果集的大小爲指定的值 在查詢中返回的行數被限制爲您指定的數量。這限制了返回到 Web Intelligence 的行數,但並不限制RDBMS 處理查詢中的所有行。
限制執行時間爲指定值 查詢執行時間被限制爲您指定的分鐘數。
這限制了將數據發送到 Web Intelligence 的時間,但不會停止數據庫上的進程。
限制長文本對象的大小爲指定值 爲長文本對象指定最大字符數

  

  11.指明 SQL 限制
  • 查詢控制
  • 多個 SQL 語句控制:爲每個上下文使用多個 SQL 語句   爲每個度量使用多      個 SQL 語句   允許選擇多個上下文
  • 笛卡兒積控制   阻止  警告
  
  12.SQL參數
  •  文件” > “參數” > “參數”




          第 3 章 創建包含表和聯接的模式   
  
1.模式
 



2.優化表瀏覽器的性能
插入表很慢,原因是 優化插入表的操作,通過
數據庫中有大量的表。Designer
會查詢系統目錄,因此當目錄很大
時,檢索表就可能會很慢。
使用想插入到單獨的數據庫帳戶
的表構建數據倉庫。創建與新的倉庫
的連接。
正在自動插入聯接和檢查所插入
的表的基數。
只插入表。可以按如下方式執行
此操作:
1。 選擇“工具” > “選項”。
將出現“選項”對話框。
2。 單擊數據庫選項卡。
此時將顯示“數據庫”頁面。
3。 清除下列複選框:“用表抽取聯
接”和“檢測聯接中的元組數
目”。
4。 單擊“確定”。


3.自動排列“結構”窗格中的表
   選擇“查看” > “排列表”


4.派生表
     添加派生表
        單擊“插入”菜單上的“派生表”
     編輯派生表
       右鍵單擊 Designer 模式中的表,然後從快捷菜單中選擇“編輯派生


5.嵌套派生表......基於派生表的派生表
  • 在示例目錄中打開 Universe
  • 右鍵單擊“Universe 結構”窗格,從上下文菜單中選擇“派生表”。
  • 鍵入嵌套派生表的名稱
  • 鍵入 SQL 表達式。可以鍵入整個文本,也可使用編輯器助理鍵入。
  • 雙擊對象(表、派生表、列、函數)
  • 使用 @DerivedTable 函數,語法如下:@DerivedTable(派生表名稱) 以選
    擇派生表。
  • 單擊“檢查語法”


6.顯示鍵
  • 選擇“工具”>“選項”
  • 單擊“圖形”選項卡。
  • 選擇“列”組框中的“爲鍵加下劃線”複選框。
  • 選擇“查看”>“刷新結構”。



7.使用公式欄
     



8.定義特定的聯接類型
聯接類型 說明
相等聯接
根據一個表的列中的值和另一個表的列中的值之間的相等性鏈接表。因爲同一列均出現在兩個表中,所以聯接使兩個表同步。
Theta 聯(條件聯接)
根據兩個列之間的關係(相等性除外)鏈接表。
外部聯接
鏈接兩個表,其中一個表包含與另一個表的共有列中的行不匹配的行。
快捷聯接
在兩個表之間提供替代路徑的聯接,此連接忽略中間表,並且不管是什麼方向結果都一樣。通過儘可能切短較長的聯接路徑來優化查詢時間。
自我限制的連接
用於在表上設置限制的單一表聯接。

   創建複合相等聯接
  •    雙擊某個現有聯接。
  • 在“表 1”列表框中選擇多個列
  • 在“表 2”列表框中選擇匹配列
  • 從“運算符”下拉列表框中選擇“Complex”

   創建 Theta 聯接
  • 雙擊該聯接。
  • 單擊“表 1”列的列表框中的一列
  • 按住 Ctrl 鍵並單擊“表 2”列的列表框中的兩列
  • 選擇相應的運算符



第 4 章 解決模式中的聯接問題

1.查找表:查找(或維)表包含與特定實體或主體關聯的信息。
2.事實表:事實表包含有關事務的統計信息。
3.
聯接路徑的類型 返回 說明
環路 太少行
聯接在查找表之間形成多個路徑。
會聚式多對一聯接 太多行 兩個事實表中的多對一聯接會聚在單一查找
表上。此類型的聯接會聚可能會導致名爲斷層
陷阱的聯接路徑問題。
系列式多對一聯接 太多行 一對多聯接鏈接了依次由一對多聯接鏈接的
表。一對多聯接這種類型的分散方式可能會導
致名爲扇形陷阱的聯接路徑問題。


4.檢測和解決聯接問題
聯接問題 檢測方式 解決方式
環路 檢測別名
檢測上下文
檢測環路
檢查完整性
模式的直觀分析
創建別名和上下文以中斷環路。
斷層陷阱 表模式的直觀分析
  • 創建上下文。
  • 使用功能“爲每個度
    量使用多個 SQL 語
    句”。
  • 創建多個 Universe
    (僅限 Web Intelli-
    gence)

扇形陷阱 表模式的直觀分析
  • 創建別名,使用別名
    創建上下文,然後依
    據別名建立受影響的
    度量對象。
  • 爲每個度量使用多個
    SQL 語句。


5.定義上下文:上下文是一組聯接的集合
  自動創建上下文
  • 選擇“工具”>“自動檢測”>“檢測上下文”
  • 單擊“候選上下文”列表中的一個上下文,然後單擊“添加”按鈕。
  • 單擊“確定”。
  • 當列表模式(“查看”>“列表模式”)處於活動狀態時,這些上下文
    列在“上下文”窗格中。

  手動創建上下文
  • 選擇“插入”>“上下文”
  • 在“上下文名稱”文本框中鍵入上下文的名稱。
  • 在“當前上下文聯接”列表中選擇定義上下文的所有聯接。
  • 單擊“檢測”按鈕,以便顯示和上下文名稱一起組成建議上下文的聯接。
  • 選擇“僅顯示選定項”複選框,以便僅查看選定的聯接。
  • 單擊“檢查”按鈕。
  • 鍵入上下文所返回數據的說明。


6.上下文如何影響查詢
  • 不明確查詢:提示最終用戶在一個查詢路徑和另一個查詢路徑之間進行選擇。
  • 推導式查詢:Web Intelligence 查詢在運行時不會提示最終用戶選擇上下文。
  • 不兼容查詢:來自兩個不同上下文的對象合併在一個查詢中
    
    爲每個上下文使用多個 SQL 語句
  • 選擇“文件”>“參數”
  • 單擊“SQL”選項卡
  • 選擇“爲每個上下文使用多個 SQL 語句”複選框


7.別名如何解決環路
  先前:
     


  最後:



8.上下文解決環路
  先前

  最後:
  




9.直觀地標識環路

如果環路包含... 則可以通過以下方式解決環路...
唯一一個查找表 別名
僅接收聯接的“一”端的查找表 別名
兩個或兩個以上事實表 上下文



10.什麼是斷層陷阱
  • Universe 結構中的三個表之間存在“多對一對多關係”。
  • 查詢包括基於兩個表的對象,這兩個表均位於其各自連接的“多”端。
  • 單一維返回了多個行。


11.解決斷層陷阱
  • 爲每個事實表創建一個上下文。此解決方法適用於所有情況。
  • 修改 Universe 的 SQL 參數,以便能夠爲每個度量生成單獨的 SQL 查詢。此解決方法僅適用於度量對象。它不會爲維或明細對象生成單獨的查詢。
    
是否使用多個 SQL 語句 場合
爲每個度量使用多個 SQL 語句 在只包含爲兩個事實表同時定義
的度量對象的 Universe 中。使用多
個 SQL 語句的優點在於可以避免使
用需要稍後維護的上下文。
不爲每個度量使用多個 SQL 語句 適用於爲一個或兩個事實表定義
了維或明細對象的情況。如果基於使
用此解決方法的 Universe 在查詢中
包括了維或明細對象,則將會返回笛
卡爾積。
由於此解決方法可能會減慢查詢
的響應時間併產生不正確的結果,您
應考慮創建上下文來解決斷層陷阱



12.什麼是扇形陷阱
當“一對多”連接鏈接了依次由另一個“一對多”連接鏈接的表時,扇形
陷阱是三個表之間的一種連接路徑。當查詢包括同時基於兩個表的對象時,
“一對多”連接的分散影響可能會導致返回不正確的結果。




13.如何解決扇形陷阱?
  
  爲包含初始聚合的表創建別名,然後使用“檢測上下文”(“工具”>“檢
  測上下文”)來檢測和建議用於別名表的上下文和用於原始表的上下文。
  這是解決扇形陷阱問題的最有效方式 
  • 通過分析模式中的“一對多對一對多”聯接路徑關係來確定可能的扇形
    陷阱。
  • 爲產生增殖性聚合的表創建一個別名。
  • 在原始表和別名表之間創建一個聯接。
  • 構建在別名表上進行聚合的對象。
  • 選擇“工具”>“檢測上下文”
  • 單擊一個候選上下文,然後單擊“添加”
  • 爲其他候選上下文重複該步驟。
  • 選擇“文件”>“參數”。
  • 單擊“SQL”選項卡。
  • 選擇“爲每個上下文使用多個 SQL 語句”複選框。
  更改 Universe 的 SQL 參數。






第 5 章 構建 Universe

1.對象
對象限定 說明
查詢中分析的焦點。維將映射到數據庫中的一個或多個列或函數,這些列或函數是查詢的關鍵所在。
明細 提供有關維的描述性數據。明細始終會附加到維。它映射到數據庫中的一個或多個列或函數,這些列或函數提供了與維相關的詳細信息。
度量 包含映射爲數據庫中的統計數據的聚合函數。



2.設置對象外鍵或主鍵感知
對象屬性-->鍵-->插入


3.源信息
  • 技術說明:Universe(從 Data Integrator 中生成)中可用的技術說明。
  • 映射信息:在 Data Integrator 內的源表和目標表之間應用的映射。
  • 數據沿襲信息:目標列中包含的源列的列表。

4.定義對象格式
在對象點擊右鍵-->對象格式


5.度量返回何種類型的信息?
  Sum
   Count
   Average
   Minimum
   Maximum


6.度量與維和明細有何不同?
  • 度量是動態的
  • 度量能夠投影聚合


7.使用 Where 子句時的問題
問題 說明 解決方法
產生大量的相似對象。 如果通過創建若干對象(每個對象推導出一個數據部分的 Where 子
句)限制對象數據,您可能會使用相似的名稱作爲多個對象的結尾。
例如,法國客戶、美國
客戶和日本客戶。對於
看到多個看起來相似的
對象的用戶而言,這可
能會產生混淆。
爲每個限制創建條件
對象。
難於創建層次。 如果有多個在相同數據上推導出 Where 子句的對象,用戶將難於構建用於向下鑽取的邏輯缺省層次。 爲每個限制創建條件對象。
對象名稱和應用的限制之間出現混淆。 除非對象採用非常精確的命名方式,否則,僅從對象的名稱來看,限制對於用戶來說可能並非顯而易見。用戶可以通過查看查詢的 SQL
來查看 Where 子句,但
並非所有用戶都會在運
行查詢之前查看 SQL。
爲每個限制創建條件
對象。
以適當的方式命名每
個對象。
Where 子句之間出現衝突。 如果同一查詢中包括了兩個或兩個以上採用類似方式加以限制的對象,則 Where 子句之間的衝突將導致不會返回任何數據。 爲每個限制創建條件對象,並確保用戶在報
表級別合併或同步了查
詢。


8.設置層次
  • 從層次編輯器中,單擊“新建”按鈕
  • 鍵入層次的名稱。
  • 按 RETURN 鍵應用該名稱
  • 選擇新的層次。
  • 展開左邊窗格中的默認層次結構節點。
  • 單擊一個維。
  • 單擊“添加”按鈕。
  您還可以通過拖放來移動維對象或層次


9.創建級聯值列表
  • 選擇“工具” > “值列表” > “創建級聯的值列表”
  • 單擊“默認層次結構”或“定製層次結構”單選按鈕。
  • 單擊或展開類,然後選擇一個或多個對象。
  • 單擊向右箭頭。
  • 爲每個對象鍵入提示文本。
  • 如果要在“級聯的值列表”中更改對象的位置,請單擊該對象,並使用向
    上和向下箭頭在列表中向上或向下移動它。
    如果要刪除對象,請單擊對象,然後單擊向左箭頭。
  • 選中或清除“層次視圖”複選框。
  • 單擊“生成 LOV”。


10.值列表:包含與對象關聯的數據
值列表數據源 說明
數據庫文件 當您創建對象時,Designer 會自
動將值列表與對象關聯。在用戶或您
(設計員)選擇爲“查詢”窗格中的
對象顯示值列表之前,將不會創建值
列表。然後,依據對象推導出的一個
或多個列運行 SELECT DISTINCT 查
詢。
返回的數據存儲在 universe 子
文件夾(在與存儲 Universe 文件的
相同文件夾下創建)中的一個擴展名
爲 .LOV 的文件中。該 .LOV 文件隨
後將用作列表的值來源。
外部文件 個人數據(例如文本文件或 Excel
文件)可與值列表關聯。
基於外部文件的值列表是固定的。
無法與外部文件建立動態鏈接。如果
更改了外部文件,您必須刷新 .LOV
文件。

工具-->值列-->編輯值列表




第 7 章 創建存儲過程 Universe
1.使用存儲過程
  • 單擊“快速設計嚮導”工具欄按鈕。
  • 單擊窗格底部的複選框“單擊這裏選擇存儲過程 Universe”
  • 單擊“開始”。
    此時將出現“定義 Universe 參數”面板。
  • 在“輸入 Universe 名稱”字段中鍵入 Universe 名稱。
  • 在“選擇數據庫連接”列表的下拉列表中選擇數據庫連接。
  • 單擊“下一步”。
    此時將出現“創建初始類和對象”面板。
  • 單擊存儲過程。
  • 單擊“添加”。
    “Universe 類和對象”窗格中將創建此存儲過程。
  • 單擊“下一步”。
  • 單擊“完成”。出現“配置”面板。


2。根據帶輸入參數的存儲過程創建 Universe。
  • 單擊“快速設計嚮導”工具欄按鈕。
    此時將出現“歡迎”窗格。
  • 單擊窗格底部的複選框“單擊這裏選擇存儲過程 Universe”。
  • 單擊“開始”。
    此時將出現“定義 Universe 參數”面板。
  • 在“輸入 Universe 名稱”字段中鍵入 Universe 名稱。
  • 在“選擇數據庫連接”列表的下拉列表中選擇數據庫連接。
    單擊“下一步”。
    此時將出現“創建初始類和對象”面板。
  • 單擊存儲過程。
  • 單擊“添加”。
    當存儲過程需要輸入參數時,將顯示“存儲過程編輯器”。
  • 單擊參數列表中的某個參數。
  • 在提示中或在“值”字段中輸入參數值。
  • 選擇“使用此值”或“提示我輸入值”。
  • 在輸入值後,當執行此過程時,它會檢索列和結果集結構,從而將此值傳
    遞給過程。
  • 如果選定了“提示我輸入值”,請在提示中鍵入值。
    用戶可以輸入提示消息,也可以瀏覽以選擇一個現有對象(例如,表中的
    “預訂 ID”列表)。
  • 單擊“確定”。
  • 單擊“下一步”。
  • 單擊“完成”。出現“配置”面板。



第 9 章 優化 Universe

使用 @函數
@函數 說明 通常用於對象的以下語句中
@Aggregate_Aware 在對象中結合包含聚合和維數據的列。 SELECT 語句
@Prompt 每次在查詢中包括使用
@Prompt 函數的對象時,提
示用戶輸入限制的值。
SELECT 語句
WHERE 子句
@Script 每次在查詢中包括使用
@Script 函數的對象時運行腳本。
WHERE 子句
@Select 允許使用另一個對象的SELECT 語句。 SELECT 語句
@Variable 調用內存中存儲的變量
的值,比如在引用的文本
文件中調用。
WHERE 子句
@Where 允許使用另一個對象的
WHERE 子句。
WHERE 子句




1.Aggregate_Aware 函數
   語法:
     @Aggregate_Aware(sum(agg_table_1), ...sum(agg_table_n))

必須將所有聚合表的名稱作爲參數輸入。從左到右按聚合的降序放置這些表的名稱。 

agg_table_1是最高聚合級別下的聚合 
agg_table_n是最低聚合級別下的聚合 
   


2.@Prompt 語法

@Prompt('Displayed text ','A',,,)

將 @Prompt 與不帶默認值的值列表一起使用:
@Prompt('Displayed text ','A',{'Paris','London','Madrid'},,)


將 @Prompt 與值列表和一個默認值一起使用:
@Prompt('Displayed text ','A',{'Paris','London','Madrid'},,,,{'Paris'})

將 @Prompt 與所有可能的設置一起使用
@Prompt('Displayed text ','A','Store\City',Mono,Constrained,Persis
tent,{'Paris'})

將 @Prompt 與包含值對、但不包含默認值的值列表一起使用
@Prompt('Displayed text ','A':'N',{'Paris':'12','Lon
don':'7','Madrid':'15'},,)

將 @Prompt 與包含值對及一對默認值的值列表一起使用
@Prompt('Displayed text ','A':'N',{'Paris':'12','Lon
don':'7','Madrid':'15'},,,,{'Paris':'12'})


3.Script 函數
@Script('var_name', ['var_type'], 'script_name')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章