2012-09-12 138 views
5

我有一個需要進行的具體項目,我希望在邁出第一步之前,向主人們提供一些指導。Java中的流程/工作流程

我們有許多應用程序接收來自外部來源(例如文件,XML-RPC,Web服務等)的輸入,然後以某種方式處理它,對其應用規則,與其他外部系統通信可能),訪問數據庫(可能),然後發送迴應。我們正在維護同一應用程序的不同版本,以迎合我們客戶之間的所有小差異。 (是的,是的,我知道,這很糟糕,這就是爲什麼我想修復它...)

我正在玩的想法是有一個基於組件的架構,其中不同的組件可以通過配置連接到一起信息流通過業務規則進行管理。實質上,它必須能夠爲每個客戶提供一套具有不同配置的程序副本。我甚至在夢想着一個基於GUI的應用程序,一個系統可以用VB風格的拖放方式連接在一起。

現在,上面的聲音絕對像之前做過的事......我不想重新發明輪子。問題在於上述問題必須能夠處理大量的實時事務,所以我不確定像BPEL這樣的東西是否是正確的選擇。

任何建議之前,我去做輪輪?

+2

看來您正在尋找一些ETL工具;搜索talend或apatar。 – SiB

回答

1

我會爲您的應用程序編寫一個非常簡單的XML方言。保持元素類型最小化,並使用class="my.class.name'屬性在運行時構建正確的類實例。這使得容易擁有3個實現的元素(例如 <source class="my.package.XmlRpc">,<source class="my.package.LocalFile"><source class="my.package.WebService">)。每個元素類型一旦被實例化,都應該讀取其XML內容以查找正確配置自身所需的任何附加數據。

有許多易於使用的XML解析庫(我推薦JDom),並且有很多工具支持XML查看和編輯。 XML很容易記錄,使用幷包裝到GUI中。

因此:每個組件都獲得一個元素類型,並且它們的具體實現相關配置被隱藏在這些元素中。如果你有簡單的接線(特定的組件實例只在一個地方使用),你可以避開包含。如果你有複雜的佈線(你需要在幾個地方重複使用組件實例;例如,你想重新使用過濾器或計算中間結果),首先定義組件實例,然後從這些引用中構建佈線實例。

我基本上主張像Ant構建文件,並儘可能保持簡單。

+0

這就是我在想...併爲類之間的輸入/輸出流添加註釋。但是,我希望已經有一些經過嘗試和測試的東西。 (但+1因爲我真的真的很喜歡DIY這個,你確認了它:)) –

+1

如果你知道一點XML和反射,那麼我可以保證這會比試圖找到一個更快 - 適合所有的解決方案,並使其適應您的問題。 – tucuxi

+0

我對這兩個都很熟悉......足夠熟悉它的邪惡陰暗面。我可能會看到像Guice這樣的東西來爲我做對象創建而不是自省。 –