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