最近有好幾個客戶都提出,需要實現在上一個流程節點辦理的時候,由用戶去選擇下一步任務的執行人。
這種需要在我們的工作流系統中,早就有相關的實現。是在下一步節點任務的參與人先設置一個虛擬的審核人checker。然后用戶在上一個節點辦理的時候,將選擇的用戶id存到這個checker中,再將這個checker以變量的形式送到流程引擎中,流程引擎在創建下一步任務的時候,就將用戶選擇的人生成到任務的參與人了。也可以多選,多選的用戶id以逗號分隔的方式存到checker變量中,選擇后的值為 USR_0000001,USR_0000002,USR_0000003... 這樣。
但是又有客戶提出,需要在上一個節點辦理的時候,由用戶去選擇下一步驟任務的執行人,並且這個選擇范圍是在流程設計器中圈定,如審核報銷單的時候,審核人必須是部門經理,再在每個流程實例運行的時候,由上一步填寫人提交的時候,去選擇一個部門經理來審核。
這種需求還是按上面那種方式來處理,在下一步節點任務參與人先設置一個虛擬的審核人checker,然后在上一步節點辦理的表單中,選擇下一步任務的參與人列表,只列出部門經理來。這樣也能達到客戶的要求。
但是,又有客戶提出了,圈定的范圍必須要在流程設計器中定義任務的時候,先圈定好,在上一步節點辦理的表單中,讀出這個范圍,再由用戶去選擇,這樣就不必在表單中固定好選擇范圍
這種需求我們現在的產品中沒有,客戶是上帝,提出的又是合理的需求,我們必須要想想怎樣去實現了.....
開始總想着在流程設計器任務節點屬性中,加上定義范圍的功能,但這樣太繁瑣了,要定義任務參與人,又要定義任務可選擇的范圍,而且可能是按用戶,按角色,按群組等等。。。。。太繁瑣了,不是好方案
應該借助任務參與人的這個范圍,而且客戶提出的也是,在任務定義的時候,定義的任務參與人就是可選擇的范圍,增加表來存儲用戶的選擇結果也不是好的方案,會使得得復雜和繁瑣。
還是利用一個臨時變量appoint_nexttask_operator來處理又簡單又能解決問題,在上一步節點的辦理表單中,讀出下一步任務節點的參與人列表(利用流程引擎的API來獲取),將用戶選擇的結果存到appoint_nexttask_operator這個變量中,將此變量送到流程引擎中,流程引擎在生成任務之前,先判斷這個變量是否有值,有值,就將此變量中的值生成到任務參與人,沒有則用流程定義時的參與人。也可以多選,用逗號分隔。
^_^,這樣,也不用額外增加定義的表等,就能完美的解決這個需求了,讀出下一步任務節點的參與人,我們利用api寫一個通用的方法,在表單中只要調用進來,就可以了。
在定義的時候,可以加用戶,角色等
在第一個節點辦理的表單中,讀出任務定義的參與人
選擇后,就是下一步的審核人了。