@@ -239,4 +239,220 @@ void reject2() {
239239
240240 }
241241
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+
242458}
0 commit comments