国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Activiti業務鍵(businessKey)

2019-11-14 20:47:43
字體:
來源:轉載
供稿:網友
Activiti業務鍵(businessKey)

問題:如何讓業務對象和對應的流程 關聯?

  發現PRocessInstance 有個方法getBusinessKey()可以得到一個businessKey。

  ProcessInstance 對應數據庫中的表act_ru_execution有個字段BUSINESS_KEY_對應類中的businessKey,這個字段在創建表時自動被設置為unique

解決:

  1、保證流程的ID和業務對象的類名一致。例如:流程id為LeaveBill,我們的業務對象的類名也創建為LeaveBill。

  2、在流程啟動的時候獲取業務對象執行方法的時候傳入businessKey,workflowService.startProcess(key,businessKey,vars);(這里vars為一些變量根據實際情況可有可無)businessKey產生規則: className+“.”+objId

    public void startProcess(Long id) {        //1. 獲取業務對象        LeaveBill bill = this.get(id);        if(bill!=null){            // 修改業務對象狀態            bill.setState(1);// 請假單狀態 0初始錄入,1.開始審批,2為審批通過            this.update(bill);            //2. 添加流程變量(Map)            Map<String,Object> vars = new HashMap<>();            vars.put("inputUser", bill.getUser().getName());            // 添加變量來描述業務對象的信息            String classType =bill.getClass().getSimpleName();            vars.put("classType", classType);            vars.put("objId", bill.getId());            //3. 啟動流程            // 獲取流程定義key            String key = classType;            // 獲取業務鍵 產生規則: className+“.”+objId            String businessKey = classType +"." + bill.getId();            this.workflowService.startProcess(key,businessKey,vars);        }    }

  3、根據以下方法就可以用taskId獲取業務對象id

    public String getBusinessObjId(String taskId) {        //1  獲取任務對象        Task task  =  taskService.createTaskQuery().taskId(taskId).singleResult();                //2  通過任務對象獲取流程實例        ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();        //3 通過流程實例獲取“業務鍵”        String businessKey = pi.getBusinessKey();        //4 拆分業務鍵,拆分成“業務對象名稱”和“業務對象ID”的數組         // a=b  LeaveBill.1        String objId = null;        if(StringUtils.isNotBlank(businessKey)){            objId = businessKey.split("http://.")[1];        }        return objId;    }

  4、根據業務鍵獲取流程實例和任務

ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey("LeaveBill.1").singleResult();List<Task> task = taskService.createTaskQuery().processInstanceBusinessKey("LeaveBill.1").list();

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海门市| 凭祥市| 江津市| 延庆县| 珲春市| 毕节市| 琼中| 肇源县| 旬阳县| 仁怀市| 五大连池市| 西畴县| 保靖县| 大安市| 图木舒克市| 塔城市| 衡山县| 海兴县| 鹤山市| 开远市| 长海县| 丹凤县| 抚州市| 清镇市| 工布江达县| 休宁县| 寻乌县| 淳安县| 长泰县| 西峡县| 潼南县| 宝兴县| 广州市| 龙川县| 成武县| 繁峙县| 襄樊市| 手游| 舒城县| 秦安县| 资溪县|