2018-08-28

馳騁工作流引擎JFlowactiviti



報(bào)



目錄

前言.. 3

工作流程引擎 - 對比.. 3

5種基本控制流模式的對比.. 4

4種高級分支同步模式.. 9

2種結(jié)構(gòu)化模式.. 13

4種包含多實(shí)例的模式.. 15

3種基于狀態(tài)的模式.. 18

2種取消模式.. 21

總結(jié).. 22

表單集成.. 23

表單引擎與流程引擎的關(guān)系.. 24

最簡單的請假流程-根據(jù)表單的請假天數(shù)來判斷流程的分支.. 24

流程引擎操縱表單引擎的一個案例.. 26

對多種表單的支持.. 28

簡潔明快的CCForm.. 28

Word文檔支持.. 30

Excel表單的支持.. 30

表單樹的支持.. 31

符合中國特色個性化JFlow功能.. 31

流程屬性.. 32

多種接受人規(guī)則.. 32

接受人員投遞路徑自動記憶.. 33

發(fā)起前置導(dǎo)航.. 34

節(jié)點(diǎn)屬性.. 34

方向條件可視化配置.. 35

JFlow對工業(yè)自動化的流程支持.. 36


?

前言

為了更好的說明activiti 與jflow的兩款工作流引擎的特點(diǎn)與區(qū)別,我們按照如下幾個方面做一次全面的、客觀的對比滩援。

????? 首先activiti是國外的一款開源的工作流程引擎,在國際上影響比較深遠(yuǎn)與廣泛破停,解決了BPM領(lǐng)域的很多問題吆视,值得我們贊賞。他的boss是jbpm的前身畅形。

?????JFlow是濟(jì)南馳騁公司開放的一款工作流程引擎株扛,JFlow的前身是CCFlow尤筐,ccflow是國內(nèi)開源的一款老牌的工作流程引擎汇荐,承擔(dān)過很多大型項(xiàng)目,適應(yīng)于復(fù)雜的國內(nèi)應(yīng)用環(huán)境盆繁。

??? ??Activity相對簡單掀淘,僅有流程引擎,沒有表單引擎油昂。在BPM的研究領(lǐng)域, 很多的學(xué)者革娄,專家都是把流程引擎與表單引擎分開的,對于這個觀點(diǎn)我們并不很贊同冕碟。實(shí)現(xiàn)功能需要大量的代碼開發(fā)拦惋。

JFlow是JFlow流程引擎+CCForm的表單引擎的有機(jī)結(jié)合,內(nèi)容相對復(fù)雜安寺,配置程度較高厕妖,實(shí)施周期短,上手快挑庶。

工作流程引擎 - 對比

以國外流行的工作流activiti的模式與當(dāng)今中國開源的JFlow(ccflow和jflow的總稱)流程引擎對照言秸。以便讓各位能夠了解到中國國情的工作流引擎與國際流行的設(shè)計(jì)規(guī)則的差別、不同迎捺、與優(yōu)缺點(diǎn)举畸。


國外工作流比較通用的就是滿足21種流程模式的支持。

[if !vml]

[endif]


5種基本控制流模式的對比

[if !supportLists]1.???[endif]順序流(Sequence)

ACTIVITI :

就是按照流程設(shè)計(jì)的步驟凳枝,一步步的向下運(yùn)行抄沮,這樣的模式下每個節(jié)點(diǎn)有先后順序,就是每個節(jié)點(diǎn)只有一個節(jié)點(diǎn)是活動的岖瑰。

例子:比如申請后進(jìn)行審批叛买,一步一步的進(jìn)行任務(wù)。

[if !vml]

[endif][if !vml]

[endif]

JFLOW:[if !vml]

[endif]


[if !vml]

[endif]


順序流锭环,也叫做沒有分支的線性流程聪全,流程一般在最后一個節(jié)點(diǎn)自動結(jié)束泊藕,并標(biāo)識流程完成辅辩。也可以通過設(shè)置節(jié)點(diǎn)條件,自動結(jié)束流程娃圆。

[if !vml]

[endif]

JFlow的特點(diǎn)是:允許用戶自己定義流程完成條件玫锋,在任何一個節(jié)點(diǎn)運(yùn)行過程中,JFlow都要去檢查條件設(shè)置讼呢,如果滿足這個條件流程就自動結(jié)束撩鹿。


[if !supportLists]2.???[endif]并行分叉(ParallelSplit)


[if !vml]

[endif]

ACTIVITI :

流程在某個活動(節(jié)點(diǎn)、步驟)之后產(chǎn)生多個分支悦屏,并且并行流轉(zhuǎn)节沦。

例子:比如在淘寶買了個商品需要開發(fā)票键思,那么賣家就需要一邊準(zhǔn)備商品發(fā)貨,一邊準(zhǔn)備發(fā)票郵寄甫贯。

JFLOW:

異表單分合流的分流動作吼鳞,一個動作結(jié)束后(分流節(jié)點(diǎn)),并行啟動多個分支叫搁,每個分支都要向下運(yùn)動赔桌。

在cc中,可以根據(jù)方向條件設(shè)置來決定是否啟用某一個分支渴逻。

[if !supportLists]3.???[endif]同步(Synchronization)

ACTIVITI :

在流程中的某個點(diǎn)疾党,多個并行的子流程或者活動,合并成一個流程惨奕。流程必須等待所有的分支都執(zhí)行完成后雪位,才能激活后續(xù)活動。

例子:比如商家在收到“發(fā)票”和“商品”后墓贿,才能確認(rèn)收貨茧泪。

JFLOW:

異表單分合流中的合流動作,可以指定一定的完成率聋袋,才能到達(dá)合流節(jié)點(diǎn)队伟。對于未完成的子線程,可以進(jìn)行刪除操作幽勒。

[if !supportLists]4.???[endif]獨(dú)占式選擇(Exclusive

Choice)

ACTIVITI :

一個活動完成后嗜侮,只能在后面的多個分支中激活一個。

例子:比如用戶下單后啥容,可以有N種付款方式锈颗,但是只能選擇其中一種。

JFLOW:

具有分支的線性流程咪惠』髦ǎ可以由方向條件控制,也可以由用戶手動控制遥昧。

[if !supportLists]5.???[endif]簡單聚合(Simple Merge)

ACTIVITI :

在流程中有2個以上的分支中某一個點(diǎn)處被合并成一個分支覆醇,只要分支中的一條完成,即可繼續(xù)進(jìn)行炭臭,而其他分支自動結(jié)束永脓。

例子:比如發(fā)貨在建設(shè)銀行和中國銀行等支付方式中的一個完成后才被激活。

JFLOW:

即可以為帶有分支的線性流程鞋仍,又可以是異表單的合流動作常摧。在線性流程中,在某一處選擇需要執(zhí)行的節(jié)點(diǎn)并完成執(zhí)行后,后面的節(jié)點(diǎn)一步一步的執(zhí)行落午,沒有被選擇的節(jié)點(diǎn)不執(zhí)行谎懦。

在異表單中,可以通過條件設(shè)置需要執(zhí)行的節(jié)點(diǎn)溃斋,其他節(jié)點(diǎn)不執(zhí)行党瓮,在合流點(diǎn)完成匯總并激活⊙卫啵或者寞奸,通過設(shè)置完成率來激活合流點(diǎn)的操作。

[if !vml]

[endif]

區(qū)分到底是否是分合流在跳,通過查看節(jié)點(diǎn)類型枪萄。

[if !supportLists]6.???[endif]基本控制流程模式,在ACTIVITI中與JFLOW中的綜合實(shí)現(xiàn)猫妙。

ACTIVITI :

JFLOW:


4種高級分支同步模式

[if !supportLists]1.???[endif]多重選擇(Multiple

Choice)

在流程中瓷翻,當(dāng)一個活動完成后,有多個分支進(jìn)行選擇割坠,可以選擇執(zhí)行其中的一個或者N個分支齐帚。

例子:比如去世博園玩,在門口檢票后彼哼,可以選擇A-E個片區(qū)中的N個進(jìn)行觀光对妄。

ACTIVITI 中的支持情況:

1.JPDL方式不支持先定義好這里的幾種,然后根據(jù)條件去篩選其中的幾種進(jìn)行敢朱,但是ACTIVITI.4之后支持一種叫foreach的節(jié)點(diǎn)剪菱,允許我們在運(yùn)行時指定幾種特定的任務(wù),比如上面例子中的片區(qū)拴签,我們可以在選定后再去循環(huán)孝常。

2.BPMN方式支持根據(jù)條件執(zhí)行多個子分支。


JFLOW中的支持情況:

1.通過定義流程為異表單分合流來實(shí)現(xiàn)蚓哩。

a通過條件控制發(fā)起子線程數(shù)量构灸。設(shè)置方向條件的時候,可以根據(jù)需要岸梨,選擇不通的條件設(shè)置喜颁,比如:崗位條件、部門條件盛嘿、表單條件等洛巢。

b通過節(jié)點(diǎn)樹形中設(shè)置手工選擇方向控制括袒,可以控制發(fā)起子線程的發(fā)起數(shù)量次兆。

2.通過父子流程也可以實(shí)現(xiàn)。


[if !supportLists]2.???[endif]同步聚合(Synchronizing

Merge)

在流程中的某個聚合點(diǎn)锹锰,流程會等待所有的分支到來芥炭,才能激活后續(xù)的活動漓库。如果分支只有一個,那么就變成簡單聚合模式园蝠;如果存在2個以上分支渺蒿,那就是同步模式。

這種模式的關(guān)鍵在于能夠動態(tài)的根據(jù)分支的多少進(jìn)行聚合彪薛。

ACTIVITI 中的支持情況:

可以通過設(shè)置ACTIVITI 的join節(jié)點(diǎn)屬性multiplicity的值為某個變量茂装,并在程序中動態(tài)的修改變量的值來制定分支的數(shù)量。

JFLOW中的支持情況:

分合流中合流操作善延。無論分支有多少少态,都可以進(jìn)行匯總,并且可以對匯總的子線程進(jìn)行刪除操作易遣、完成率控制等彼妻。


JFLOW的多重選擇與同步聚合實(shí)例圖:

結(jié)束為聚合點(diǎn),中間的為分支豆茫。

[if !supportLists]3.???[endif]多重聚合(Multiple

Merge)

在流程中的多個分支侨歉,都可以激活后續(xù)的活動,也就是會產(chǎn)生多個實(shí)例揩魂。

例子:游客觀光完N個片區(qū)之后幽邓,每個片區(qū)各自的系統(tǒng)可以對游客在自己片區(qū)的信息進(jìn)行存儲。

ACTIVITI 與JFLOW的支持請參考同步聚合火脉。

[if !supportLists]4.???[endif]鑒別器(Discriminator)

在流程的某個聚合點(diǎn)颊艳,N個分支的第一個分支到達(dá)后,就立刻激活后續(xù)活動忘分;與此同時棋枕,流程仍然要等待其余的分支完成并忽略完成。

注意:在其余分支未全部完成前妒峦,第一個到達(dá)的分支所激活的后續(xù)節(jié)點(diǎn)是無法執(zhí)行的重斑。

例子:個人申請?zhí)峤缓螅⑿刑峤唤o第一導(dǎo)師審批肯骇、第二導(dǎo)師審批窥浪、第三導(dǎo)師審批,他們中只要有一個完成了笛丙,那么就可以提交給學(xué)院審批漾脂。

N-out-of-M鑒別器模式:

跟鑒別器模式一樣的,只是這種模式是N個到達(dá)后胚鸯,激活后續(xù)節(jié)點(diǎn)骨稿,而剩下的M-N個節(jié)點(diǎn)未完成前,新激活的后續(xù)節(jié)點(diǎn)一樣無法被執(zhí)行。

ACTIVITI 中的支持情況:

沒有直接支持這種模式坦冠,但是通過自定義節(jié)點(diǎn)形耗,應(yīng)該是可以處理這種模式的。

JFLOW中的支持情況:

有兩個屬性的控制辙浑,可以實(shí)現(xiàn)功能激涤,就是上面所說的子線程完成路和子線程刪除規(guī)則。

第1個:子線程完成率判呕。該規(guī)則可以決定是否可見

第2個:子線程刪除規(guī)則倦踢。該規(guī)則決定那些子線程可以被刪除以及他們的刪除方式。


2種結(jié)構(gòu)化模式

[if !supportLists]1.???[endif]任意循環(huán)(Arbitrary

Cycles)

ACTIVITI :

某一個或多個活動可以反復(fù)執(zhí)行侠草。

例子:用戶買了瓶汽水硼一,拿到汽水后,中了一瓶梦抢,又去兌換了一瓶汽水般贼,如果又中了,再去兌換一瓶汽水….

JFLOW:

完全是條件判斷奥吩,在表單中增加一個審核組件哼蛆,就可以把每次校驗(yàn)的信息,寫入里面霞赫,完整的顯示出來整個軌跡腮介。


[if !supportLists]2.???[endif]隱式終止(Implicit

Termination)

ACTIVITI :

指這一個流程中,如果沒有活動可以執(zhí)行端衰,那么流程會自動終止叠洗。

例子:比如用戶買了汽水,中了50元旅东,但是沒有地方可以兌換灭抑。

JFLOW:

這種類型屬于JFlow的線性流程的一種,該流程配上流程完成條件抵代,就可以實(shí)現(xiàn)該功能腾节。

流程完成條件,就是流程在前進(jìn)中檢查的條件荤牍,如果滿足該條件案腺,流程就停止運(yùn)行,該流程實(shí)例結(jié)束康吵。


4種包含多實(shí)例的模式

[if !supportLists]1.???[endif]無同步的多實(shí)例(MIwithout)

在流程中劈榨,一個活動可以激活多個實(shí)例,每個實(shí)例相互獨(dú)立晦嵌,并不需要在后面進(jìn)行同步同辣。

例子:比如用戶購買了N本書拷姿,于是后續(xù)的支付賬單、更新客戶可以以本書為單位各自執(zhí)行邑闺。

ACTIVITI 中的支持情況:

支持這種模式,但是不允許在后面進(jìn)行結(jié)束動作棕兼。

JFLOW中的支持情況:

分合流與父子流程支持這種模式陡舅,分合流上面已經(jīng)講過,下面說下父子流程伴挚。

第一種情況:發(fā)起子流程后靶衍,等所有的子流程執(zhí)行完成后,父流程繼續(xù)下一步驟或者結(jié)束茎芋。

第二種情況:發(fā)起子流程后颅眶,無論子流程是否執(zhí)行完成,都執(zhí)行到下一步或者結(jié)束田弥。

父流程:

[if !supportLists]2.???[endif]設(shè)計(jì)時確定的多實(shí)例(MIwith? a?Priori? Design? Time? Knoledge)

在流程中涛酗,被激活的多個實(shí)例需要在某個聚合點(diǎn)聚合,而實(shí)例的個數(shù)在設(shè)計(jì)的時候就已經(jīng)知曉率偷厦。

ACTIVITI 中的支持情況:

對于設(shè)計(jì)時已經(jīng)知道實(shí)例數(shù)量的商叹,最簡單的就是使用多個Task節(jié)點(diǎn)來實(shí)現(xiàn)多個實(shí)例。

JFLOW中的支持情況:

合流節(jié)點(diǎn)處理各個子線程的任務(wù)比率只泼。

完成率 = 子線程上已經(jīng)完成的數(shù)據(jù)/所有子線程數(shù)量*100%

該節(jié)點(diǎn)對于合流節(jié)點(diǎn)與分合流節(jié)點(diǎn)有效剖笙,當(dāng)子線程的完成率達(dá)到該值的時候,該節(jié)點(diǎn)的待辦才能顯示出來请唱,否則該節(jié)點(diǎn)的人員不能處理待辦弥咪。如果合流節(jié)點(diǎn)的處理人能夠看到待辦,他就可以對該流程進(jìn)行操作十绑,比如:發(fā)送聚至、刪除、退回本橙、刪除子線程等等晚岭。

[if !supportLists]3.???[endif]運(yùn)行時確定的多實(shí)例(MI with

a Priori RunTime Knoledge)

在流程中,被激活的多個實(shí)例需要在某個聚合點(diǎn)聚合勋功,而實(shí)例的個數(shù)在設(shè)計(jì)的時候并不知道坦报,只有在運(yùn)行時根據(jù)條件來決定需要激活多少個實(shí)例。

ACTIVITI 中的支持情況:

對于運(yùn)行時可以知曉實(shí)例數(shù)量的狂鞋,可以通過設(shè)置JOIN節(jié)點(diǎn)的multipliclty來實(shí)現(xiàn)片择。

JFLOW中的支持情況:

同表單分合流配合節(jié)點(diǎn)訪問規(guī)則可以實(shí)現(xiàn)這個功能。

[if !supportLists]4.???[endif]運(yùn)行時無法確定的多個實(shí)例(MI

without a Priori RunTime Knoledge)

在流程中骚揍,被激活的多個實(shí)例需要在某個聚合點(diǎn)聚合字管,而實(shí)例的個數(shù)在設(shè)計(jì)的時候并不知道啰挪,該模式與上一個模式的區(qū)別就是,在產(chǎn)生的實(shí)例執(zhí)行時或者已經(jīng)執(zhí)行完時嘲叔,仍然有新的實(shí)例產(chǎn)生亡呵。

例子:比如要采購100臺電腦,涉及到多個供應(yīng)商硫戈,但是每個供應(yīng)商供應(yīng)多少臺電腦是不知道的锰什,因此供應(yīng)商的數(shù)量也是不確定的,但是每次供應(yīng)商送貨來后丁逝,就會將所擁有的電腦數(shù)量和所需的100臺進(jìn)行比較汁胆,來決定是否要下一個供應(yīng)商進(jìn)行供應(yīng)。


ACTIVITI 中的支持:與運(yùn)行時確定的多個實(shí)例的實(shí)現(xiàn)方式一樣霜幼。

JFLOW中的支持:

這種方式屬于JFlow的父子流程來實(shí)現(xiàn)嫩码,開始節(jié)點(diǎn)啟動一個任務(wù),需要采購100臺電腦罪既,需要發(fā)起n此的選擇供應(yīng)商采購的子流程铸题,每個子流程完成后,就訪問父流程節(jié)點(diǎn)信息琢感,進(jìn)行相關(guān)的業(yè)務(wù)處理(就是是否啟動下一個子流程回挽,如果滿足100,就不啟動子流程了猩谊,直接完成父流程的任務(wù)千劈,結(jié)束主流程.)。


3種基于狀態(tài)的模式

[if !supportLists]1.???[endif]延遲選擇(Deferred

Choice)

流程中某個點(diǎn)可以有多個分支進(jìn)行選擇牌捷。不是基于簡單的數(shù)據(jù)或者決定就可以很明顯地作出選擇墙牌,而是會向系統(tǒng)或者執(zhí)行環(huán)境提供多種可選擇的分支;但是又不同于AND-Split模式暗甥,延遲選擇只能選擇一個分支執(zhí)行喜滨,一旦選擇了其中第一個分支,那么其他分支就會被撤銷撤防。這種延遲一直會持續(xù)到第一個選擇分支開始實(shí)際運(yùn)行虽风。

例子:收到的一批商品運(yùn)送到各個部門,到底選擇什么樣的運(yùn)行方式寄月,要看資源的可用性辜膝。

JFLOW中的模式:

通過在節(jié)點(diǎn)屬性—基本屬性中,設(shè)置手工選擇方向條件的方式漾肮,可以實(shí)現(xiàn)此種模式厂抖。實(shí)際上JFlow就是將流程流轉(zhuǎn)的權(quán)限在交給了當(dāng)前節(jié)點(diǎn)的操作的人員,由他來決定流程要發(fā)送到什么地方去克懊。


[if !supportLists]2.???[endif]交叉存取并行路由(Interleaved

Parallel Routing)

或者叫任意順序流忱辅,指幾個活動必須按順序執(zhí)行七蜘,不能同時進(jìn)行,但是這種順序又是不定的墙懂。

例子:體檢的時候有很多項(xiàng)目橡卤,這些項(xiàng)目不能同時進(jìn)行,但是可以以隨意順序進(jìn)行损搬。

JFLOW中的模式:

這是典型的一種多任務(wù)分配流程碧库,使用多維度的分合流可以實(shí)現(xiàn),這個流程的特點(diǎn)是场躯,一個操作人員可以處理三個不同的任務(wù)谈为,這三個任務(wù)屬于三個子線程旅挤,與普通的分合流不同的是這三個子線程是同一個人處理踢关。在這里就決定了,有一個批次號(項(xiàng)目維度)粘茄,在這里就是檢查項(xiàng)目签舞。

該數(shù)據(jù)源返回了三個列,分別是:No,Name,BatchNo柒瓣。 No=操作員編號儒搭,Name=操作員名稱,BatchNo批次編號芙贫。


[if !supportLists]3.???[endif]里程碑(Milestone)

一個活動的激活需要一種具體的狀態(tài)搂鲫,比如活動A,B,C,只有在AB都執(zhí)行完成的情況下才能執(zhí)行C磺平。

ACTIVITI 中的模式:

類似與順序模式或者同步模式魂仍。

JFLOW中的模式:

這個可能類似與JFlow的延續(xù)流程,當(dāng)一個流程長度很大的時候拣挪,需要跨度很多年實(shí)施的時候擦酌,把該流程截成一段段的,分開設(shè)計(jì)菠劝,一條流程赊舶,是上一條流程的延續(xù)。

延續(xù)流程是父子流程的一種赶诊,但是延續(xù)流程只有一個段接一段笼平,就是一個父流程有多個子流程,但是延續(xù)流程就只能有一個子流程舔痪。


2種取消模式

[if !supportLists]1.???[endif]取消模式(Cancel

Activity)

就是將某個活動取消出吹。


JFLOW中,類似與刪除流程操作相同辙喂。

不能刪除:不允許刪除捶牢。

邏輯刪除:僅僅將此流程標(biāo)記為刪除狀態(tài)鸠珠,數(shù)據(jù)仍然存在節(jié)點(diǎn)表單與流程報(bào)表中。

記錄日志方式刪除:刪除節(jié)點(diǎn)表單秋麸、流程報(bào)表數(shù)據(jù)渐排,并記錄備案。

徹底刪除:徹底清除該流程的所有數(shù)據(jù)灸蟆,包括該工作實(shí)例的節(jié)點(diǎn)表單數(shù)據(jù)驯耻、流程報(bào)表數(shù)據(jù)、軌跡數(shù)據(jù)炒考、退回可缚、移交操作信息。

讓用戶決定刪除方式:顯示對話框斋枢,讓用戶選擇刪除方式帘靡。


[if !supportLists]2.???[endif]取消實(shí)例(CancelCase)

如果一個活動產(chǎn)生了多個實(shí)例,那么僅僅撤銷這個活動是不夠的瓤帚,要將他所引起的所有實(shí)例都移除才行描姚。


JFLOW中的解決方案,參考取消模式戈次。


總結(jié)


[if !vml]

[endif]


共同點(diǎn):

[if !supportLists]1.???[endif]嵌入式的工作流引擎轩勘,降低集群復(fù)雜性。

[if !supportLists]2.???[endif]嚴(yán)格而靈活的流程版本控制

[if !supportLists]3.???[endif]支持多種數(shù)據(jù)庫

[if !supportLists]4.???[endif]支持多種流程設(shè)計(jì)模式

[if !supportLists]5.???[endif]成熟度高的開源工作流怯邪,具有可靠的穩(wěn)定性和性能绊寻。


區(qū)別:

[if !supportLists]1.???[endif]流程定義方式:

ACTIVITI :采用xml的方式,通過拼字符串的方式完成悬秉,所以流程定義時的結(jié)果不直觀澄步、不方便。

JFLOW:擁有自己的流程設(shè)計(jì)器和表單設(shè)計(jì)器搂捧,畫布性質(zhì)的驮俗,所見即所得。包括流程運(yùn)轉(zhuǎn)條件允跑、方向條件等王凑。

[if !supportLists]2.???[endif]面向使用對象:

ACTIVITI :由于設(shè)計(jì)方式,只能面向流程開發(fā)人員聋丝。

JFLOW:既面向流程開發(fā)人員又面向業(yè)務(wù)人員索烹,即使不會編程,也可以進(jìn)行流程設(shè)計(jì)弱睦。

[if !supportLists]3.???[endif]節(jié)點(diǎn)類型:

ACTIVITI :開始節(jié)點(diǎn)百姓、結(jié)束節(jié)點(diǎn)、自動節(jié)點(diǎn)况木、任務(wù)節(jié)點(diǎn)垒拢、fork分支旬迹、join聯(lián)合等多種節(jié)點(diǎn)。通過多種節(jié)點(diǎn)的配合以及事件等使用求类,組成流程奔垦。

并且,開始節(jié)點(diǎn)必須有一個向外的流向尸疆。

JFLOW:普通節(jié)點(diǎn)椿猎、分流節(jié)點(diǎn)、子線程節(jié)點(diǎn)寿弱、合流節(jié)點(diǎn)犯眠。

開始節(jié)點(diǎn)屬于普通節(jié)點(diǎn),可以做為一個單節(jié)點(diǎn)的流程症革,沒有流向筐咧。

結(jié)束節(jié)點(diǎn)由CC自動判斷定義。

CC中的循環(huán)是通過方向條件判斷地沮,同步嗜浮、聚合等是由合流節(jié)點(diǎn)羡亩。

[if !supportLists]4.???[endif]對復(fù)雜流程的支持:

ACTIVITI :不適合非常復(fù)雜的流程摩疑,他只是提供了一套豐富的工作流模型,可以讓你去做任何事情畏铆,即便違反工作流規(guī)范雷袋。

JFLOW:通過節(jié)點(diǎn)運(yùn)行規(guī)則、方向條件辞居、豐富的事件楷怒、運(yùn)行模式和表單解決方案,完全滿足復(fù)雜的流程運(yùn)轉(zhuǎn)瓦灶,對任何情況鸠删,都是可控的。

[if !supportLists]5.???[endif]對歷史數(shù)據(jù)的挖掘:

ACTIVITI :對歷史數(shù)據(jù)的支持不是很好贼陶,比如刃泡,子任務(wù)不能寫入歷史之類。當(dāng)然碉怔,通過修改代碼與BUG烘贴,也是可以實(shí)現(xiàn)的。

JFLOW:具有軌跡功能撮胧,即對某一個流程運(yùn)行產(chǎn)生數(shù)據(jù)的保存桨踪,流程運(yùn)行中,可以查看相關(guān)節(jié)點(diǎn)的處理信息與流程數(shù)據(jù)芹啥,流程結(jié)束后也可以锻离。

表單集成

因?yàn)閍ctiviti 僅僅是一個流程引擎铺峭,所以無可比性,這里不做對比汽纠。僅僅說明表單引擎與流程引擎在業(yè)務(wù)系統(tǒng)中的應(yīng)用逛薇。


表單引擎與流程引擎的關(guān)系

我們把BPM系統(tǒng)比喻一部汽車,那么車的控制系統(tǒng)疏虫,就象流程引擎永罚,比如:剎車、油門卧秘、離合呢袱、方向燈,就是車的控制系統(tǒng)翅敌。車的車廂就是表單羞福,而貨物就是數(shù)據(jù)。

[if !vml]

[endif]


我們研究汽車不能把車的控制系統(tǒng)與車的拉貨分開討論的蚯涮。

工作流程在運(yùn)行的過程中治专,他的主要目的就是協(xié)調(diào)各個部門,人員遭顶,崗位處理業(yè)務(wù)流水線化张峰。

流程在運(yùn)動過程中,需要操縱表單數(shù)據(jù)的分合棒旗,或者需要讀取表單數(shù)據(jù)進(jìn)行方向轉(zhuǎn)向喘批、流程業(yè)務(wù)處理的控制工作。


最簡單的請假流程-根據(jù)表單的請假天數(shù)來判斷流程的分支


[if !vml]

[endif]


可以方便的可視化的設(shè)計(jì)方向條件


[if !vml]

[endif]


流程引擎操縱表單引擎的一個案例

比如:在JFlow的分合流里, 如下流程:

[if !vml]

[endif]


項(xiàng)目經(jīng)理下達(dá)任務(wù)填寫節(jié)點(diǎn):

[if !vml]

[endif]


每個銷售人員填寫數(shù)據(jù)節(jié)點(diǎn)表單:

[if !vml]

[endif]


數(shù)據(jù)匯總節(jié)點(diǎn)(數(shù)據(jù)匯總):

[if !vml]

[endif]


JFlow認(rèn)為一個流程引擎與表單引擎就是



對多種表單的支持

簡潔明快的CCForm

[if !vml]

[endif]


[if !vml]

[endif]

[if !vml]

[endif]



[if !vml]

[endif]


Word文檔支持

[if !vml]

[endif]


Excel表單的支持


[if !vml]

[endif]



表單樹的支持




[if !vml]

[endif]


符合中國特色個性化JFlow功能

如果使用符合中國特色的流程引擎铣揉,有些牽強(qiáng)饶深,因?yàn)橐恍┮?guī)則,在國外也需要用到逛拱,只是國外的開發(fā)者敌厘,不想把他們抽象出來。

在國內(nèi)的開發(fā)者朽合,與實(shí)施人員要求個性化定制要求比較高俱两,一起需要基于設(shè)置開發(fā),所以這對流程引擎的設(shè)計(jì)者對業(yè)務(wù)規(guī)則的抽象要求提出更高的水平旁舰。

并不能說每個屬性設(shè)置都屬于中國特色锋华,以下以幾個功能來說明該問題,為什么activti沒有涉及到這些功能箭窜,因?yàn)樗麄儗α鞒桃娴陌l(fā)展定位不同毯焕。


流程屬性

流程屬性是控制整個流程的規(guī)則的設(shè)置。

比如單據(jù)編號生成規(guī)則,

每個流程屬性纳猫,都是從實(shí)際也規(guī)則走

JFlow提供了豐富的流程屬性定義規(guī)則婆咸,讓我們開發(fā)


[if !vml]

[endif]


多種接受人規(guī)則

[if !vml]

[endif]


接受人員投遞路徑自動記憶

[if !vml]

[endif]


發(fā)起前置導(dǎo)航

[if !vml]

[endif]



節(jié)點(diǎn)屬性

[if !vml]

[endif]


方向條件可視化配置

以表單字段

以SQL表達(dá)式

以定義參數(shù)

以當(dāng)前操作員組織機(jī)構(gòu)?????


[if !vml]

[endif]



JFlow對工業(yè)自動化的流程支持

[if !vml]

[endif]




=== OVER ===

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市芜辕,隨后出現(xiàn)的幾起案子尚骄,更是在濱河造成了極大的恐慌,老刑警劉巖侵续,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔丈,死亡現(xiàn)場離奇詭異,居然都是意外死亡状蜗,警方通過查閱死者的電腦和手機(jī)需五,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轧坎,“玉大人宏邮,你說我怎么就攤上這事「籽” “怎么了蜜氨?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捎泻。 經(jīng)常有香客問我飒炎,道長,這世上最難降的妖魔是什么族扰? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任厌丑,我火速辦了婚禮定欧,結(jié)果婚禮上渔呵,老公的妹妹穿的比我還像新娘。我一直安慰自己砍鸠,他們只是感情好扩氢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著爷辱,像睡著了一般录豺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饭弓,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天双饥,我揣著相機(jī)與錄音,去河邊找鬼弟断。 笑死咏花,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昏翰,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼苍匆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棚菊?” 一聲冷哼從身側(cè)響起浸踩,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎统求,沒想到半個月后检碗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡码邻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年后裸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冒滩。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡微驶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出开睡,到底是詐尸還是另有隱情因苹,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布篇恒,位于F島的核電站扶檐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胁艰。R本人自食惡果不足惜款筑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腾么。 院中可真熱鬧奈梳,春花似錦厂捞、人聲如沸循榆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽殴泰。三九已至于宙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悍汛,已是汗流浹背捞魁。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留离咐,地道東北人谱俭。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親旺上。 傳聞我的和親對象是個殘疾皇子瓶蚂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)宣吱。 注意:講述HT...
    kismetajun閱讀 27,453評論 1 45
  • 對于java中的思考的方向窃这,1必須要看前端的頁面,對于前端的頁面基本的邏輯征候,如果能理解最好杭攻,不理解也要知道幾點(diǎn)。 ...
    神尤魯?shù)婪?/span>閱讀 806評論 0 0
  • 2018年8月31日匯賢小學(xué)三年級學(xué)生報(bào)到 2018年8月31日匯賢小學(xué)三年級學(xué)生報(bào)到 一疤坝、匯賢小學(xué)概況 匯賢小學(xué)...
    思無心閱讀 1,242評論 0 0
  • 偶然間翻到我前一陣寫了一半的簡書兆解,看到去年我跟公司HR溝通的一段對話: “我是不是那種不管別人多少分都要求他們要達(dá)...
    曲海文_教練閱讀 379評論 0 4