客觀地說jBPM還是不錯的,雖然我沒有在項目中用過IBM,oracle等產品,但是我感覺jbpm比這兩個大公司的產品好用,大公司的bpm產品純粹徒有虛名。
這裏,我不得不說,當前Fire workflow比jBPM還是要強一點點,
。我碰到很多人,非常迷信jBPM的流程虛擬機。對此我相當不以爲然,本來計劃寫一系列的文章比較一下這兩款產品,但是由於時間的問題,這個計劃又要延遲了,甚至有點無限延遲的意思了。
今天我終於抽出時間,向大家再次吹一個牛皮,就是告訴大家如何在Fire workflow上面做一點簡單的定製就能實現BPEL語言。在Fire 微內核上實現BPEL要比jBPM PVM漂亮N倍.
我沒有時間實現完整的BPEL,只是實現了BPEL中的Sequnce, IF,While等語法。在附件中是一個完整的Eclipse項目,已經寫好了測試用例,大家可以試驗。
實現BPEL語法基本上只要在Fire 上增加3個類即可
BpelTranslator
:實現Bpel語法到Fire 流程模型的轉換
ActivityInstanceExtension,SynchronizerInstanceExtension
:響應微內核事件驅動BPEL語言。
下面是一個複雜的BPEL語法的流程以及他的執行效果
當x=1,a=2,b=2時,執行結果如下:
Sequence1 begin!
Activity1.1 executed!
If1.2 begin!
IF_1.2.2 begin!
Activity1.2.2.2 executed!
IF_1.2.2 end!
If1.2 end!
While1.3 begin!
XYZActivity executed!(1)
While1.3 end!
While1.3 begin!
XYZActivity executed!(2)
While1.3 end!
Activity1.4 executed!
Sequence1 end!
那麼BPEL的語言結構在Fire 工作流網中表現爲什麼樣子呢?下面這個圖是While在Fire工作流網中的結構,在附件中的project中,可以打開測試類中的註釋,將轉換後的流程圖輸出來。