【Activiti】為每一個流程綁定相應的業務對象的2種方法

來源:互聯網
上載者:User

標籤:

方式1:

在儲存每一個流程執行個體時,設定多個流程變數,通過多個流程變數的組合來過濾篩選符合該組合條件的流程執行個體,以後在需要查詢對應業務對象所對應的流程執行個體時,只需查詢包含該流程變數的值的流程執行個體即可.

設定過程:
public void startProcess(Long id) { Customer cus = get(id); if (cus != null) { // 修改客戶的狀態 cus.setStatus(1); updateStatus(cus); // 將客戶的追蹤銷售人員的nickName放入流程變數,該seller變數可用於查詢包括該seller的流程執行個體 Map<String, Object> map = new HashMap<String, Object>(); if (cus.getSeller() != null) { map.put("seller", cus.getSeller().getNickname()); } // 將客戶的類型和id放入流程變數,此2個流程變數可用於查詢該客戶對象所對應的流程執行個體 String classType = cus.getClass().getSimpleName(); map.put("classType", classType); map.put("objId", id); // 擷取processDefinitionKey,預設為類型簡單名稱加上Flow String processDefinitionKey = classType + "Flow"; // 開啟流程執行個體 workFlowService.startProcessInstanceByKeyAndVariables(processDefinitionKey, map); } }
查詢過程:
/**     * 測試根據變數值的限定擷取相應的流程執行個體     *      * @throws Exception     */    @Test    public void testGetFromVariable() throws Exception {         Employee sller = new Employee();         sller.setNickname("員工2");         sller.setId(4L);        List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery()                .variableValueEquals("classType", sller.getClass().getSimpleName())                .list();        System.out.println(processInstances);        for (ProcessInstance processInstance : processInstances) {            System.out.println(processInstance);        }        //=====================================================================================================        Customer cus = new Customer();        cus.setId(4L);        List<ProcessInstance> processInstances1 = runtimeService.createProcessInstanceQuery()                .variableValueEquals("classType", cus.getClass().getSimpleName())                .variableValueEquals("objId", cus.getId()).list();        System.out.println(processInstances);        for (ProcessInstance processInstance : processInstances1) {            System.out.println(processInstance);        }    }

方式2:

使用 businessKey,在開啟流程執行個體時設定businessKey作為業務對象關聯流程執行個體的關聯鍵

設定過程:
/** * 使用businessKey作為流程執行個體關聯業務對象的關聯鍵 * * @throws Exception */ @Test public void testBusKey() throws Exception { //設定businessKey Customer customer = new Customer(); customer.setId(2L); //businessKey採用簡單類名+主鍵的格式 String busniessKey = customer.getClass().getSimpleName() + customer.getId(); String definitionKey = customer.getClass().getSimpleName() + "Flow"; Map<String, Object> map = new HashMap<String, Object>(); map.put("seller", "admin"); //開啟流程 runtimeService.startProcessInstanceByKey(definitionKey, busniessKey, map); }
查詢過程:
/** * 使用businessKey查詢相應業務對象的流程執行個體 * * @throws Exception */ @Test public void testgetByBusKey() throws Exception { List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery() .processInstanceBusinessKey("Customer2", "CustomerFlow").list(); System.out.println(processInstances); }

 

 

 

【Activiti】為每一個流程綁定相應的業務對象的2種方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.