@@ -239,4 +239,220 @@ void reject2() {
239
239
240
240
}
241
241
242
+
243
+
244
+ /**
245
+ * 驳回测试3
246
+ */
247
+ @ Test
248
+ void reject3 () {
249
+ PageRequest pageRequest = PageRequest .of (0 , 1000 );
250
+
251
+ User lorne = new User ("lorne" );
252
+ userRepository .save (lorne );
253
+
254
+ User user = new User ("张飞" );
255
+ userRepository .save (user );
256
+
257
+ User dept = new User ("刘备" );
258
+ userRepository .save (dept );
259
+
260
+ User boss = new User ("诸葛亮" );
261
+ userRepository .save (boss );
262
+
263
+ FlowWork flowWork = FlowWorkBuilder .builder (user )
264
+ .title ("请假流程" )
265
+ .nodes ()
266
+ .node ("开始节点" , "start" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
267
+ .node ("部门领导审批" , "dept" , "default" , ApprovalType .SIGN , OperatorMatcher .specifyOperatorMatcher (dept .getUserId ()))
268
+ .node ("总经理审批" , "manager" , "default" , ApprovalType .SIGN , OperatorMatcher .specifyOperatorMatcher (boss .getUserId ()))
269
+ .node ("结束节点" , "over" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
270
+ .relations ()
271
+ .relation ("部门领导审批" , "start" , "dept" )
272
+ .relation ("总经理审批" , "dept" , "manager" )
273
+ .relation ("总经理审批" , "manager" , "start" ,new OutTrigger ("" +
274
+ "def run(content) {\n " +
275
+ " if(content.getBindData().getDays() > 3) {\n " +
276
+ " return true;\n " +
277
+ " }\n " +
278
+ " return false;\n " +
279
+ " }" ),1 ,true )
280
+ .relation ("结束节点" , "manager" , "over" )
281
+ .build ();
282
+
283
+ flowWorkRepository .save (flowWork );
284
+
285
+ String workCode = flowWork .getCode ();
286
+
287
+ Leave leave = new Leave ("我要出去看看" );
288
+ leave .setDays (5 );
289
+ leaveRepository .save (leave );
290
+
291
+ // 创建流程
292
+ flowService .startFlow (workCode , user , leave , "发起流程" );
293
+
294
+ // 查看我的待办
295
+ List <FlowRecord > userTodos = flowRecordRepository .findTodoByOperatorId (user .getUserId (), pageRequest ).getContent ();
296
+ assertEquals (1 , userTodos .size ());
297
+
298
+ // 提交流程
299
+ FlowRecord userTodo = userTodos .get (0 );
300
+ assertEquals (0 , userTodo .getTimeoutTime ());
301
+
302
+ flowService .submitFlow (userTodo .getId (), user , leave , Opinion .pass ("同意" ).specify (dept .getUserId ()));
303
+
304
+ // 查看刘备经理的待办
305
+ List <FlowRecord > deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
306
+ assertEquals (1 , deptTodos .size ());
307
+
308
+ // 部门经理的提交审批
309
+ FlowRecord deptTodo = deptTodos .get (0 );
310
+ flowService .submitFlow (deptTodo .getId (), dept , leave , Opinion .pass ("同意" ));
311
+
312
+ // 查看总经理的待办
313
+ List <FlowRecord > bossTodos = flowRecordRepository .findTodoByOperatorId (boss .getUserId (), pageRequest ).getContent ();
314
+ assertEquals (1 , bossTodos .size ());
315
+
316
+ // 提交总经理的审批
317
+ FlowRecord bossTodo = bossTodos .get (0 );
318
+ flowService .submitFlow (bossTodo .getId (), boss , leave , Opinion .reject ("不同意" ));
319
+
320
+ deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
321
+ assertEquals (0 , deptTodos .size ());
322
+
323
+ userTodos = flowRecordRepository .findTodoByOperatorId (user .getUserId (), pageRequest ).getContent ();
324
+ assertEquals (1 , bossTodos .size ());
325
+
326
+ userTodo = userTodos .get (0 );
327
+ leave .setDays (3 );
328
+ flowService .submitFlow (userTodo .getId (), user , leave , Opinion .pass ("同意" ));
329
+
330
+ // 查看所有流程
331
+ List <FlowRecord > records = flowRecordRepository .findAll (pageRequest ).getContent ();
332
+ assertEquals (5 , records .size ());
333
+
334
+ deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
335
+ assertEquals (1 , deptTodos .size ());
336
+
337
+ // 部门经理的提交审批
338
+ deptTodo = deptTodos .get (0 );
339
+ flowService .submitFlow (deptTodo .getId (), dept , leave , Opinion .pass ("同意" ));
340
+
341
+ bossTodos = flowRecordRepository .findTodoByOperatorId (boss .getUserId (), pageRequest ).getContent ();
342
+ assertEquals (1 , bossTodos .size ());
343
+
344
+ // 提交总经理的审批
345
+ bossTodo = bossTodos .get (0 );
346
+ flowService .submitFlow (bossTodo .getId (), boss , leave , Opinion .pass ("同意" ));
347
+
348
+ records = flowRecordRepository .findAll (pageRequest ).getContent ();
349
+ assertEquals (6 , records .size ());
350
+ // 查看所有流程是否都已经结束
351
+ assertTrue (records .stream ().allMatch (FlowRecord ::isFinish ));
352
+
353
+ List <BindDataSnapshot > snapshots = flowBindDataRepository .findAll ();
354
+ assertEquals (7 , snapshots .size ());
355
+
356
+ }
357
+
358
+
359
+
360
+ /**
361
+ * 多条件流程测试撤回
362
+ */
363
+ @ Test
364
+ void reject4 (){
365
+ PageRequest pageRequest = PageRequest .of (0 , 1000 );
366
+
367
+ User user = new User ("张飞" );
368
+ userRepository .save (user );
369
+
370
+ User dept = new User ("刘备" );
371
+ userRepository .save (dept );
372
+
373
+ User boss = new User ("诸葛亮" );
374
+ userRepository .save (boss );
375
+
376
+
377
+ FlowWork flowWork = FlowWorkBuilder .builder (user )
378
+ .title ("请假流程" )
379
+ .nodes ()
380
+ .node ("开始节点" , "start" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
381
+ .node ("部门领导审批" , "dept" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .specifyOperatorMatcher (dept .getUserId ()))
382
+ .node ("总经理审批" , "manager" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .specifyOperatorMatcher (boss .getUserId ()))
383
+ .node ("结束节点" , "over" , "default" , ApprovalType .UN_SIGN , OperatorMatcher .anyOperatorMatcher ())
384
+ .relations ()
385
+ .relation ("部门领导审批" , "start" , "dept" )
386
+ .relation ("总经理审批" , "dept" , "over" ,new OutTrigger ("def run(content){content.getBindData().getDays()<=5}" ),1 ,false )
387
+ .relation ("总经理审批" , "dept" , "manager" ,new OutTrigger ("def run(content){content.getBindData().getDays()>5}" ),2 ,false )
388
+ .relation ("结束节点" , "manager" , "start" ,new OutTrigger ("def run(content){return true}" ),1 ,true )
389
+ .relation ("结束节点" , "manager" , "over" )
390
+ .build ();
391
+
392
+ flowWorkRepository .save (flowWork );
393
+
394
+ String workCode = flowWork .getCode ();
395
+
396
+ Leave leave = new Leave ("我要出去看看" ,6 );
397
+ leaveRepository .save (leave );
398
+
399
+ // 创建流程
400
+ flowService .startFlow (workCode , user , leave , "发起流程" );
401
+
402
+ // 查看我的待办
403
+ List <FlowRecord > userTodos = flowRecordRepository .findTodoByOperatorId (user .getUserId (), pageRequest ).getContent ();
404
+ assertEquals (1 , userTodos .size ());
405
+
406
+ // 提交流程
407
+ FlowRecord userTodo = userTodos .get (0 );
408
+ flowService .submitFlow (userTodo .getId (), user , leave , Opinion .pass ("同意" ));
409
+
410
+ // 查看部门经理的待办
411
+ List <FlowRecord > deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
412
+ assertEquals (1 , deptTodos .size ());
413
+
414
+ // 提交部门经理的审批
415
+ FlowRecord deptTodo = deptTodos .get (0 );
416
+ flowService .submitFlow (deptTodo .getId (), dept , leave , Opinion .pass ("同意" ));
417
+
418
+
419
+ // 查看老板的待办
420
+ List <FlowRecord > bossTodos = flowRecordRepository .findTodoByOperatorId (boss .getUserId (), pageRequest ).getContent ();
421
+ assertEquals (1 , bossTodos .size ());
422
+
423
+ // 提交老板的审批
424
+ FlowRecord bossTodo = bossTodos .get (0 );
425
+ flowService .submitFlow (bossTodo .getId (), boss , leave , Opinion .reject ("不同意,最多让你请假3天" ));
426
+
427
+ // 查看所有流程
428
+ List <FlowRecord > records = flowRecordRepository .findAll (pageRequest ).getContent ();
429
+ assertEquals (4 , records .size ());
430
+
431
+ // 用户修改确认
432
+ userTodos = flowRecordRepository .findTodoByOperatorId (user .getUserId (), pageRequest ).getContent ();
433
+ assertEquals (1 , userTodos .size ());
434
+
435
+ // 用户调整为3天
436
+ leave .setDays (3 );
437
+ // 提交流程
438
+ userTodo = userTodos .get (0 );
439
+ flowService .submitFlow (userTodo .getId (), user , leave , Opinion .pass ("同意" ));
440
+
441
+ deptTodos = flowRecordRepository .findTodoByOperatorId (dept .getUserId (), pageRequest ).getContent ();
442
+ assertEquals (1 , deptTodos .size ());
443
+
444
+ // 提交部门经理的审批
445
+ deptTodo = deptTodos .get (0 );
446
+ flowService .submitFlow (deptTodo .getId (), dept , leave , Opinion .pass ("同意" ));
447
+
448
+ records = flowRecordRepository .findAll (pageRequest ).getContent ();
449
+ assertEquals (5 , records .size ());
450
+
451
+ // 查看所有流程是否都已经结束
452
+ assertTrue (records .stream ().allMatch (FlowRecord ::isFinish ));
453
+
454
+ List <BindDataSnapshot > snapshots = flowBindDataRepository .findAll ();
455
+ assertEquals (6 , snapshots .size ());
456
+ }
457
+
242
458
}
0 commit comments