1. 應對業務規則的變化
比如常見的員工請假流程:如果低於3天提交部門經理,如果多於3天以上,提交總經理審批。這就是一種流程。按照常規代碼處理時:
if days < 3
submit to Department Manager
else if days >=3
submit to CEO
或許有人會問,既然我代碼可用處理,爲什麼還要用工作流呢?
1). 主要考慮流程的變化因素不可控,比如,公司出來一項新的政策,說是5天以上總經理纔去審批,這個時候,如果通過編碼的方式就要改代碼了,再重新發布,系統的可擴展性太差;
2). 假如有人說我不去把請假天數硬編碼,我放在配置文件裏面不就可以了嗎?
的確是可以的,主要的好處不用重新發布程序。但是這樣做,跟流程相關的規則還是零碎的,分散的,不是完整放在一起的。
3). 我們可以認爲辦法2)就是工作流的萌芽思想,我們將所有跟業務規則有關,任務辦理人員有關,任務數據權限有關的信息全部整合的一個配置文件裏(相當於流程定義或配置信息),然後在程序運行時,讀取這個配置文件,判斷流程的執行流轉走向,最終結束。
<Condition type="Expression">
<ConditionText>
<![CDATA[
askDays < 3
]]>
</ConditionText>
</Condition>
if days < 3
submit to (Department Manager || HR Manager)
else if days >=3
submit to CEO
<Performers>
<Performer id="3c917748-6752-4bc6-aea8-b85d40521888"/>
<Performer id="8e54c07d-d424-4186-b86c-cec43019bed0"/>
</Performers>
3. 控制活動節點的數據權限
總結: