1. 程式人生 > >Activity 工作流引擎

Activity 工作流引擎

自己的小例子

結合業務開啟流程:

    @Transactional(readOnly = false)
    public void save(OaInstallTask oaInstallTask) {
        //生成(儲存)安裝單
        super.save(oaInstallTask);
        //#################這裡開始寫activity開啟流程####################
        //設定流程變數
        Map<String, Object> variables = Maps.newHashMap
(); variables.put("pass", "0");//控制流程線的走向(流程方向線中的屬性:流條件->${pass==0}) variables.put("oaInstallTaskId", oaInstallTask.getId()); variables.put("oaInstallTask.CreateBy", oaInstallTask.getCreateBy().getName()); variables.put("oaInstallTask.CreateDate", oaInstallTask.getCreateDate
()); //記錄流程發起人 identityService.setAuthenticatedUserId(UserUtils.getUser().getLoginName()); //開啟流程 String processDefinitionKey = ActUtils.PD_INSTALL_TASK[0]; String businessKey = ActUtils.PD_INSTALL_TASK[1]+":"+oaInstallTask.getId(); ProcessInstance procIns = runtimeService.startProcessInstanceByKey
(processDefinitionKey, businessKey, variables); //#################這裡寫完寫activity開啟流程#################### //儲存到安裝單裡 oaInstallTask.setProcInsId(procIns.getProcessInstanceId()); //更新(儲存)安裝單 super.save(oaInstallTask); }

使用者任務中的執行監聽器

package com.thinkgem.jeesite.modules.oainstalltask.service;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;

public class AssingeeGroup implements ExecutionListener {

    private static final long serialVersionUID = 1L;

    @Override
    public void notify(DelegateExecution execution) throws Exception {
        System.out.println("getCurrentActivityId:"+execution.getCurrentActivityId());
        execution.setVariable("userGroup", "repair");//角色英文名,分配使用者裡的候選使用者組(${userGroup})
    }

}

流程圖
這裡寫圖片描述
箭頭方向位置是一個執行監聽器,在這裡配置使用者任務中的執行監聽器