smooks

smooks

Smooks是一個開源的Java框架,用於處理“數據事件流”。它常常被認為是一個轉換框架並以此被用於好幾個產品和項目中,包括JBoss ESB(以及其它ESB)。然而究其核心,Smooks未提及“轉換”或者其它相關的辭彙。它的套用遠不只這一點!

基本介紹

  • 中文名:smooks
  • 方式:2種
  • 原理:將數據流轉變成“事件”流
  • 用於:處理“數據事件流”
概覽,使用場景,

概覽

Smooks的工作是將結構化/層次化的數據流轉變成“事件”流,然後交與“訪問者邏輯(Visitor Logic)”進行分析,生成結果(可選的)。
那么,有哪些工作是這個工具可以完成,而sax和dom等工具不能完成的呢?鑒於Smooks構建於這些技術之上,所以簡單的回答是“沒有”。Smooks真正的價值在於能更方便地消費SAX和DOM(Smooks現在還不支持歸坑承基於StAX的過濾器)。它提供了一個訪問者API,以及一個配置模型,允許你輕易地將訪問者邏輯的目標設定為具體的SAX事件(如果使用的是SAX過濾器)或DOM元素(如果使用的是DOM過濾器)。Smooks同時還以一種標準方式簡化了對非XML源數據格式(EDI,CSV,JSON,Java等等)的消費,即由數據源產生的標準事件流變成了所有這些不同源數據格式的事實上的規範形式。這正是Smooks工作的關鍵!

使用場景

使用Smooks的方式有兩種,你可以使用其中之一或結合使用它們:
模式一:你可以完全投入到Smooks中,編寫你自己的定製訪問者邏輯事件處理器,將其用於處理一個數據源事件流中特定事件。使用這一模式,你必須熟悉核心的API。 模式二:你可以重用由Smooks發行版提供的開箱即用解決方案,其數目正在不斷的增長中。在這種模式下,你只需要重用別人創建的組件即可,重新配置它們來處理你的數據源,例如,通過配置一些參數就可以由EDI數據源生成Java對象模型。 在這篇文章中,我們會快速地瀏覽一遍Smooks v1.1發行版提供的一些開箱即用的功能,即那些你不需要編寫任何代碼就可加以利用的功能(即模式二)。這包括:
多源數據格式:“輕易”地消費諸多流行的數據格式,包括XML,EDI,CSV,JSON和Java(是的,你可以以一種聲明性的方式完成java到java的轉換)。 轉換:利用諸多選項消費章循埋由數據源產生的事件流,產生其它格式的結果(即,對源進行“轉換”)。這包括能在過濾源數據流時對Smooks所捕獲的數據模型套用FreeMarker和XSL模板。鑒於這些模板資源能被運用於源數據事件流內部的事件,因此它們能被用來執行“基於片斷的轉換(fragment based transforms)”。這意味著Smooks能被用於對數據源的片斷執行轉換,而不僅限於將數據源作為一個整體來施行轉換。 Java綁定:以一種標準方式由所支持的數據格式(即不僅限於XML)創建和生成Java對象整棵模型/圖。由EDI數據源 生成某對象模型的配置與由XML數據源或JSON數據源生雅捆海成對象模型所進行的配置幾乎一模一樣。唯一區別在於綁定配置的“事件選擇器(event selector)”取值不同。 大型訊息處理:Smooks支持多種處理大型訊息(GBs)的方式,它是通過基於SAX的過濾器完成的。由於榆辯囑綜合了 基於片斷轉換、Java綁定,以及使用節點模型混合DOM和SAX模型所帶來的能力,Smooks可以使用較低的記憶體空間處理全提腳蘭大型訊息。這些能力允許你執 行直接的1對1轉換,同時也支持對大型訊息數據流執行1對多的分解、轉換和路由。 訊息修飾:使用資料庫數據修飾訊息。這可以按片斷來完成,即你可以按片斷來管理在一個片斷上的芝笑察擔修飾。與此相關的一個用例是一個包含了消費者ID列表的訊息在發往另一個流程前需要從資料庫提取消費者地址和概要數據來豐富。 基於可擴展XSD的配置模型:從Smooks v1.1開始,你可以用自己的可重用定製訪問者邏輯配置模型來擴展Smooks XSD配置名字空間。創建這些定製配置擴展只是一項簡單的配置工作,這個工作極大的增進了這些重用組件的可用性。所有的現有Smooks預置組件都利用了這一工具。

相關詞條

熱門詞條

聯絡我們