一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springboot2.2 集成 activity6實現請假完整流程示例詳解

springboot2.2 集成 activity6實現請假完整流程示例詳解

2020-07-28 12:18黑貓的黑貓黑貓 Java教程

這篇文章主要介紹了springboot2.2 集成 activity6實現請假完整流程示例詳解,本文通過示例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

新手學習記錄。寫在springboot test 示例  示例代碼地址看結尾。后面有帶頁面的示例。

SpringBoot Test無頁面簡單示例

員工請假流程

  1. 員工發起申請,附帶請假信息(請假幾天)
  2. 單位領導審批,如果通過,交付經理審批,不通過,重新申請
  3. 經理審批,如果請假天數不超過三天,經理1審批
  4. 如果請假天數在3-5天,經理3審批
  5. 超過5天,經理2審批
  6. 經理審批通過,流程結束,經理審批不通過,員工重新申請

流程圖

springboot2.2 集成 activity6實現請假完整流程示例詳解

代碼

activiti.cfg.xml為必須文件且數據庫連接正確,否則ProcessEngines.getDefaultProcessEngine()會報空指針。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
復制代碼
<?xml version="1.0" encoding="UTF-8"?>
 
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 
 <!-- Activity 的引擎配置管理器 -->
 <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
  <!-- 指定數據源 -->
  <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activity?serverTimezone=UTC&amp;characterEncoding=UTF-8" />
  <property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver" />
  <property name="jdbcUsername" value="root" />
  <property name="jdbcPassword" value="111111" />
  <property name="databaseSchemaUpdate" value="true" />
 </bean>
</beans>

測試類

三個方法可合并在一起運行,拆開是自己為了方便查看代碼步驟。

1. 先運行deploymentProcess()部署一個流程。

2. 運行startLeaveProcess() 開啟流程。

3. 運行getTaskAndComplete()走流程。循環一次性整個流程走完。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.blackcat.activity;
 
import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * @Title 申請測試
 * @Description
 * @author zhanghui
 * @date 2020年07月17日 15:06
 * @version V1.0
 * @see
 * @link https://blog.csdn.net/fly_fly_fly_pig/article/details/81700820 參考該博客
 * @since V1.0
 */
@SpringBootTest
class LeaveProcessTest {
 
 // 獲取默認的流程引擎
 private ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
 
 // 實例流程id,用來記錄流程,以便獲取當前任務
 private String processInstanceId;
 
 // 部署一個流程
 @Test
 void deploymentProcess(){
  RepositoryService rs = engine.getRepositoryService();
  Deployment deploy = rs.createDeployment().addClasspathResource("processes/LeaveProcess.bpmn").deploy();
  rs.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();
 }
 
 // 開啟流程
 @Test
 void startLeaveProcess(){
  // 獲取runtimeservice對象
  RuntimeService runtimeService = engine.getRuntimeService();
 
  // 根據流程key值,獲取流程
  String processKey = "leaveProcess";
 
  // 將信息加入map,以便傳入流程中
  Map<String, Object> variables = new HashMap<>();
  variables.put("employeeName", "張三");
  variables.put("day",10);
 
  // 開啟流程
  ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processKey, variables);
  // 將得到的實例流程id值賦給之前設置的變量
  processInstanceId = processInstance.getId();
  System.out.println("流程開啟成功.......實例流程id:"+processInstanceId);
 }
 
 // 開始走流程
 // 1.獲取當前任務,并且完成
 @Test
 void getTaskAndComplete(){
//  processInstanceId = "12501";
  // 獲取taskservice實例
  TaskService taskService = engine.getTaskService();
 
  // 開始進行流程
  while(engine.getRuntimeService()
    .createProcessInstanceQuery()// 獲取查詢對象
    .processInstanceId(processInstanceId)// 根據id查詢流程實例
    .singleResult()// 獲取查詢結果,如果為空,說明這個流程已經執行完畢,否則,獲取任務并執行
    !=null){
   Task task = taskService.createTaskQuery()// 創建查詢對象
     .processInstanceId(processInstanceId)// 通過流程實例id來查詢當前任務
     .singleResult();// 獲取單個查詢結果
   String taskName = task.getName();
 
   if(taskName.equals("發起申請")){// 職員節點
    completeEmployeeTask(task);
   }else if(taskName.equals("領導審批")){// 領導節點
    completeLeaderTask(task);
   }else{// 經理節點
    completeJingliTask(task);
   }
  }
 
  System.out.println("審核結束..........");
 }
 
 // 職員提交申請
 void completeEmployeeTask(Task task){
  // 獲取任務id
  String taskId = task.getId();
 
  // 完成任務
  engine.getTaskService().complete(taskId);
  System.out.println("職員已經提交申請.......");
 }
 
 // 領導審批
 void completeLeaderTask(Task task){
  // 獲取任務id
  String taskId = task.getId();
 
  // 領導意見
  Map<String, Object> variables = new HashMap<>();
  variables.put("leaderResult", 1);
 
  // 完成任務
  engine.getTaskService().complete(taskId, variables);
  System.out.println("領導審核完畢........");
 
 }
 
 // 經理審批
 void completeJingliTask(Task task){
  // 獲取任務id
  String taskId = task.getId();
  String name = task.getName();
 
  // 經理意見
  // 領導意見和經理意見,用0和1表示,0表示未通過,1表示通過
  // 任一環節設置不同意,陷入死循環
  Map<String, Object> variables = new HashMap<>();
  variables.put("result", 1);
 
  // 完成任務
  engine.getTaskService().complete(taskId, variables);
  System.out.println("經理審核完畢........,審核經理:"+name);
 
 }

參考博客:https://blog.csdn.net/fly_fly_fly_pig/article/details/81700820

源碼地址:https://gitee.com/kylin_lawliet/springboot-demos/tree/master/springboot-activity3

SpringBoot含頁面完整示例

流程方面與上方示例代碼差不多,加了頁面與mybatis plus。就不貼上代碼,直接放示例代碼吧。

流程圖

springboot2.2 集成 activity6實現請假完整流程示例詳解

效果圖

springboot2.2 集成 activity6實現請假完整流程示例詳解

源碼地址:https://gitee.com/kylin_lawliet/springboot-demos/tree/master/springboot-activity4

到此這篇關于springboot2.2 集成 activity6實現請假完整流程示例詳解的文章就介紹到這了,更多相關springboot2.2集成activity6請假內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/Kylin-lawliet/p/13389375.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎在线成人免费网站 | 国产精品福利在线观看免费不卡 | 5g影院天天5g爽天天看 | 日韩欧美成末人一区二区三区 | 放荡的女老板bd中文字幕 | 天堂一区二区在线观看 | a级片在线观看免费 | 亚洲天天做夜夜做天天欢 | 男女发生性关系视频 | 啪哆哆 | 国产精品66福利在线观看 | 青青青视频免费观看 | 欧美日韩中文字幕在线视频 | 久久福利影院 | 成在线人免费视频一区二区三区 | 免费观看在线永久免费xx视频 | 青青草原国产视频 | 久久99热狠狠色一区二区 | 国产成人愉拍免费视频 | 女同69式互添在线观看免费 | 秋葵污视频 | 搞逼综合网 | 男人好大好硬好爽免费视频 | 免费看美女被靠到爽 | 亚洲欧美国产精品久久久 | eee在线播放成人免费 | www.亚洲天堂 | 91久久线看在观草草青青 | 俄罗斯激情性孕妇孕交大全 | 国产良家| 国产成人精品一区二区不卡 | 国产伦精品一区二区 | 日本捏胸吃奶视频免费 | 52av我爱avhaose01 51香蕉视频 | 毛片免费观看 | 国产成人久久精品推最新 | 国产成人精品午夜视频' | 日本孕妇与黑人xxxxxx | 91精品国产91热久久p | 91嫩草国产在线观看免费 | 久久性综合亚洲精品电影网 |