最近碰到個(gè)流程實(shí)例合單的需求,具體場(chǎng)景類似支付寶合單的場(chǎng)景:
推斷了一下該需求在工作流引擎中的實(shí)現(xiàn)方案,共享如下:
引擎可增加一個(gè)API,如List<ProcessInstance> getMergedProcessInstances(String processInstanceId, String workItemId, Map<String, Object> processVars ),該API用于根據(jù)“指定的流程實(shí)例Id,工作項(xiàng)ID(如果是類似BPMN的實(shí)現(xiàn)也可以是活動(dòng)ID)以及一組能夠用來鑒別可以合單的流程實(shí)例的流程變量的Map”來查詢符合合單條件的流程實(shí)例。開發(fā)者可以調(diào)用該API來將返回的流程實(shí)例的信息顯示到界面上,以支付寶的例子為例就是訂單流水號(hào)。最終用戶可以選擇要合單的流程實(shí)例,然后填入表單其它信息,提交。server端如果發(fā)生根據(jù)表單信息設(shè)置流程變量,則可調(diào)用下面的API:void setVariable(Map<String, Object> processVars, String name, Object value),這個(gè)API表示為所有的流程實(shí)例中的流程變量值能match給定的processVars參數(shù)的流程實(shí)例的名稱為name的流程變量設(shè)置值value。同理,完成工作項(xiàng)也可以是finishWorkitem(String processInstanceId, String workItemId, Map<String, Object> processVars). 這里每個(gè)api中要傳的processVars參數(shù)相當(dāng)于“相關(guān)集”的概念。
歡迎提出更好的方案或與我討論。謝謝!