工作流Camunda Stringboot例子

最近公司有工作流審批相關(guān)業(yè)務(wù)最疆,于是學(xué)習(xí)起了Camunda澡刹。

首先是工具傳送門

IDEA安裝camunda-modeler工具
安裝了工具才能好好畫圖啊

合同審核簡易流程圖

合同審核流程圖

常用操作

部署工作流

Deployment deployment=repositoryService.createDeployment()
                .name(name)
                .addClasspathResource("process/"+name)
                .deploy();
##部署路徑根據(jù)項(xiàng)目實(shí)際路徑填寫

開啟流程實(shí)例

 Map<String, Object> params=new HashMap<>();
 params.put("key","contract_create");
 params.put("manager","LI1,LI2");
 params.put("leader","Z3");
 Execution execution = runtimeService.startProcessInstanceByKey(params.get("key").toString(), params);
## 根據(jù)key啟動(dòng)流程實(shí)例 key是bpmn中定義的正蛙,Map<String, Object> params是傳入流程的參數(shù)
## demo中使用的是 camunda:candidateUsers="${manager}" 審核人通過params傳入,逗號(hào)分隔韵洋。一人審核流程即可通過

查詢我的待辦任務(wù)

List<Task> tasks = taskService.createTaskQuery()
                .taskCandidateUser(assignee)
                .orderByTaskCreateTime().asc()
                .active().list();

查詢我的已辦任務(wù)

List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery()
                .taskAssignee(assignee)
                .orderByHistoricActivityInstanceStartTime().desc()
                .finished().list();

審批通過

 Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (!ObjectUtils.isEmpty(task)) {
            Map<String, Object> approveVariables = new HashMap<>(1);
            approveVariables.put("passed", passed);
            approveVariables.put("comment",comment);
            this.taskService.claim(taskId, assignee);
            taskService.createComment(taskId, task.getProcessInstanceId(), comment);
            taskService.complete(taskId, approveVariables);
            System.out.println("任務(wù)審核完成鸭津,審核"
                    + (passed ? "通過" : "拒絕"));
            return "任務(wù)審核完成眼耀,審核"
                    + (passed ? "通過" : "拒絕");
        }
## 審批時(shí)添加審核意見和審核結(jié)果

撤回流程

 ActivityInstance activity = runtimeService.getActivityInstance(processInstanceId);
            runtimeService.createProcessInstanceModification(processInstanceId)
                    //關(guān)閉相關(guān)任務(wù)
                    .cancelActivityInstance(activity.getId())
                    .setAnnotation("發(fā)起人撤回")
                    //啟動(dòng)目標(biāo)活動(dòng)節(jié)點(diǎn)
                    .startBeforeActivity("root")
                    .execute();

查詢 流程歷史

 List<HistoricActivityInstance> activityInstanceList= historyService.createHistoricActivityInstanceQuery()
                .processInstanceId(instanceId).orderByHistoricActivityInstanceStartTime().asc().list();
        for (HistoricActivityInstance hi : activityInstanceList) {
            HistoricActivityInstanceEntity entity=(HistoricActivityInstanceEntity) hi;
                System.out.println("");
                System.out.println("===================-===============");
                System.out.println(hi.getStartTime());
                System.out.println(hi.getAssignee());
                System.out.println(hi.getActivityId());
                System.out.println(hi.getActivityName());
                System.out.println(entity.getActivityInstanceState());
                 List<Comment> taskComments = taskService.getTaskComments(hi.getTaskId());
                taskComments.stream().forEach(e->{
                    System.out.println("comment:"+e.getFullMessage());
                });
                System.out.println(hi.getTaskId());
                System.out.println(hi.getProcessDefinitionId());
                System.out.println(hi.getProcessInstanceId());
                System.out.println("===================-===============");
                System.out.println("");
        }

源碼傳送門

camunda springboot例子

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚯舱,一起剝皮案震驚了整個(gè)濱河市改化,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枉昏,老刑警劉巖陈肛,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凶掰,居然都是意外死亡燥爷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門懦窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來前翎,“玉大人,你說我怎么就攤上這事畅涂「刍” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵午衰,是天一觀的道長立宜。 經(jīng)常有香客問我,道長臊岸,這世上最難降的妖魔是什么橙数? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮帅戒,結(jié)果婚禮上灯帮,老公的妹妹穿的比我還像新娘。我一直安慰自己逻住,他們只是感情好钟哥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞎访,像睡著了一般腻贰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扒秸,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天播演,我揣著相機(jī)與錄音冀瓦,去河邊找鬼。 笑死写烤,一個(gè)胖子當(dāng)著我的面吹牛咕幻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顶霞,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锣吼!你這毒婦竟也來了选浑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤玄叠,失蹤者是張志新(化名)和其女友劉穎古徒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體读恃,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隧膘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寺惫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疹吃。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖西雀,靈堂內(nèi)的尸體忽然破棺而出萨驶,到底是詐尸還是另有隱情,我是刑警寧澤艇肴,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布腔呜,位于F島的核電站,受9級特大地震影響再悼,放射性物質(zhì)發(fā)生泄漏核畴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一冲九、第九天 我趴在偏房一處隱蔽的房頂上張望谤草。 院中可真熱鬧,春花似錦娘侍、人聲如沸咖刃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嚎杨。三九已至,卻和暖如春氧腰,著一層夾襖步出監(jiān)牢的瞬間枫浙,已是汗流浹背刨肃。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箩帚,地道東北人真友。 一個(gè)月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像紧帕,于是被迫代替她去往敵國和親盔然。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容