activiti之節點監聽器結合業務的使用(讓業務和流程完全分離)

來源:互聯網
上載者:User

在實際的activiti的項目開發中,任務節點是經常用到的,今天我就在任務節點監聽器摸索了一天,網上雖然有資料但是都是各種節點都講了下卻都沒有深入,我僅僅是以今天自己碰到的困惑記錄下,希望能幫到學習activiti的同學。
任務節點的監聽只要實現TaskListener介面即可,通常我們使用activiti肯定是將流程和業務完全區分開,那肯定必不可少的用到節點監聽器,在節點監聽器中我們可以處理業務,將參數通過
taskService.setVariables(“參數名”,參數map)
將參數先傳入到activiti內建的act_variable表中,然後在節點監聽器中通過
Object value = delegateTask.getVariable(“參數名”);
取到參數來實現業務的操作。當然這就和taskService.complete(task.id,var),即和完成任務傳入網關的判斷條件的流程變數不會衝突。
通常是在完成任務時進行業務的儲存

所以將Event改成complete,當然你如果想在節點進行前進行操作就是將Event改成creat,同理assign和delete,這就是activiti靈活的地方。
記得每次添加一個監聽器需要重新部署才會生效。

下面放上我項目中的一個應用public String startTask(String jsonstring) {      String processDefinitionKey = "report";      ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);      String nm_pid = processInstance.getProcessInstanceId();        //查詢上報角色的任務並完成任務      List<Task> taskSb = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).taskCandidateGroup("role_sb").list();      System.out.println(taskSb);      if(taskSb != null && taskSb.size() > 0){          for(Task task : taskSb){                        Map<String, Object> variables = new HashMap<String, Object>();              //存入業務變數,jsonstring是外面傳入來的參數,我直接儲存交給監聽器處理              variables.put("jsonstring", jsonstring);              //任務進行時存入流程變數              taskService.setVariables(task.getId(), variables);              //存入網關條件變數決定流程向哪走               Map<String, Object> map = new HashMap<String, Object>();              map.put("state",102206)              taskService.complete(task.getId(),map);          }          }}

下面是監聽器

“`

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

import cn.com.wavenet.webservices.workflow.activiti.saveData.SaveToDb;

public class FlowTaskListener_report implements TaskListener{
/**
* @return
* @return
*
*/
@Override
public void notify(DelegateTask delegateTask) {
///接收流程傳過來的參數
Object value = delegateTask.getVariable(“jsonstring”);
////這裡可以進行業務操作///
“`}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.