2.設(shè)計(jì)不帶網(wǎng)關(guān)的流程
有些人不喜歡網(wǎng)關(guān)臊泌,他們認(rèn)為網(wǎng)關(guān)使流程圖過(guò)于全面甚至膨脹涣易,他們寧愿沒(méi)有這些鉆石。雖然網(wǎng)關(guān)是可選的—您可以代替直接使用任務(wù)建模XOR、and和or網(wǎng)關(guān)的邏輯—但必須小心击罪。
網(wǎng)關(guān)幾乎不可能完全消除
圖2.1演示了or分割和xor合并的替代方法。
上面的流程模型和下面的流程模型是等效的贪薪,但是上面的模型顯示了直接路由到task 4的兩個(gè)流媳禁。它還用條件流符號(hào)表示or分割:連接到任務(wù)1的小菱形。條件流符號(hào)只能連接到任務(wù)或子進(jìn)程画切,并且只能作為輸出竣稽。它們不能用于網(wǎng)關(guān)或事件。
有這樣一個(gè)問(wèn)題:如果兩個(gè)條件中只有一個(gè)適用霍弹,那么一切都沒(méi)問(wèn)題毫别,但如果兩個(gè)條件都適用,它們將在or分割中生成兩個(gè)令牌典格,因此由于xor合并岛宦,它們將兩次觸發(fā)task 4。這并不一定是錯(cuò)的耍缴,但可能不是故意的砾肺。這就給我們帶來(lái)了第一個(gè)問(wèn)題:
1、在沒(méi)有網(wǎng)關(guān)的情況下防嗡,我們無(wú)法對(duì)同步(即合并)建模变汪。
2、第二個(gè)問(wèn)題是我們不能合并條件檢查蚁趁。由于中間事件的存在裙盾,我們無(wú)法在沒(méi)有網(wǎng)關(guān)的情況下表示圖2.2所示的流程邏輯。
圖2.2:組合的異或網(wǎng)關(guān)。
3番官、第三個(gè)問(wèn)題是條件流遵循與or分割相同的語(yǔ)義童芹。換句話說(shuō),所定義的條件不能相互排除鲤拿。因?yàn)閛r分割與隨后的xor分割是兼容的假褪,這并不重要,但是建模者和那些使用他們的圖的人需要意識(shí)到這一點(diǎn)近顷。否則生音,根據(jù)我們的經(jīng)驗(yàn),很快就會(huì)產(chǎn)生誤解窒升。
一直使用網(wǎng)關(guān)會(huì)更好嗎?不缀遍,也沒(méi)有這個(gè)必要。例如饱须,一個(gè)簡(jiǎn)單的循環(huán)域醇,在沒(méi)有異或合并的情況下會(huì)更好,因?yàn)樗粫?huì)讓沒(méi)有經(jīng)驗(yàn)的人感到迷惑蓉媳。而且因?yàn)閎pmn允許從開始事件到結(jié)束事件的多個(gè)流譬挚,圖可以很好地壓縮。為了說(shuō)明這一點(diǎn)酪呻,我們?cè)趫D2.3中對(duì)帶有和不帶有網(wǎng)關(guān)的流程進(jìn)行了建模减宣。(是的,從技術(shù)上講玩荠,這些模型并不完全相同:上面的模型在語(yǔ)法上包括xor網(wǎng)關(guān)漆腌,因此必須使用多個(gè)路徑。它要求條件1和條件2不能同時(shí)發(fā)生阶冈。在較低的模型中闷尿,情況并非如此,兩種情況都適用女坑。)
圖2.23:這兩個(gè)模型(幾乎)描述了相同的過(guò)程填具。
本文會(huì)持續(xù)更新,歡迎關(guān)注堂飞,技術(shù)支持:盤古BPM