【引】
流程引擎是諸多業務系統的基礎,也是SAAS型雲計算體系的基礎,目前的流程體系有很多問題,需要建立一個新的理論體系解決它,我無意中找出了這其中的部分端倪,就拋磚引玉的爲大家講講這些事情,希望有耐心的看客能夠有所啓發。
目前絕大部分工作流軟件都採用了Petrinet作爲核心架構機制,而Petrinet很重要的流轉環節-“令牌”的生成機制卻大有問題。
在Petrinet中,每一次變遷的實施時,都會取走原有的令牌,而產生新的令牌,即使對於高級Petri網(多維染色Petrinet), 試圖用在一個流程實例中保有多個令牌的系統,其基礎流轉仍是令牌的傳遞而已,具體到系統實現,大多是採用子流程處理。
這種令牌生成的方式,從自然界的現象看,其實並不科學,如果把流程流轉比喻爲一棵大樹的生長過程看,一個嫩芽會形成多少枝杈,並不由嫩芽下面的枝幹決定,而是由嫩芽生長過程的環境決定,可能的情況如下:
1)發芽後就掉了,具體到業務就是Token可能會自行消失。
2)長出很多枝杈,一個token經過流轉會產生多個token。
3)樹枝被刀直接砍斷了,一個token的完成有可能使其他token失效。
因此Token的生成方式絕對不應該根據前一Token的流轉,而應根據步驟操作的要求而自行生成與消亡。
如果這一層面被突破,那麼很多流程設計的概念都可得到簡化,包括
分支與合併節點:由於每個步驟都有可能生成與銷燬令牌,不再有必要設計分支與合併節點了
狀態與活動節點:在實施時,這兩個節點總是結對出現的,因此都合併成一種節點即可
將以上兩點簡化後,我們可以看到由此理論設計的流程體系,更符合人類的思維方式,具有更大的適應性