精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Springboot整合工作流引擎Activiti之網關路由

開發 前端
本篇主要演示復雜的審批流程的應用:排他網關路由的使用(Exclusive Gateway),希望能夠幫助到你。

[[440908]]

環境:Springboot2.3.12.RELEASE + Activiti7.1.0.M6

本篇主要演示復雜的審批流程的應用:排他網關路由的使用(Exclusive Gateway)

流程設計

Springboot整合工作流引擎Activiti(五)之網關路由

審批說明:當員工請假天數小于等于3天時,部門經理審批,當部門經理同意flag==1流程結束,不同意flag==0流程返回到"員工請假"節點;當請假天數大于3天時,先由部門經理審批,再由總經理審批,當總經理同意flag==1流程結束,不同意flag==0流程返回到"員工請假"節點。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.xg.com"
  3.   <process id="holiday3" name="holiday3" isExecutable="true"
  4.     <startEvent id="startevent1" name="Start"></startEvent> 
  5.     <userTask id="usertask1" name="員工請假" activiti:assignee="${userId}"></userTask> 
  6.     <exclusiveGateway id="exclusivegateway1" name="Exclusive Gateway"></exclusiveGateway> 
  7.     <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow> 
  8.     <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="exclusivegateway1"></sequenceFlow> 
  9.     <userTask id="usertask2" name="部門經理審批" activiti:assignee="${d_mgr}"></userTask> 
  10.     <sequenceFlow id="flow3" name="${days <=3}" sourceRef="exclusivegateway1" targetRef="usertask2"
  11.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${days <=3}]]></conditionExpression> 
  12.     </sequenceFlow> 
  13.     <userTask id="usertask3" name="部門經理審批" activiti:assignee="${d_mgr}"></userTask> 
  14.     <userTask id="usertask4" name="總經理審批" activiti:assignee="${g_mgr}"></userTask> 
  15.     <sequenceFlow id="flow4" name="${days > 3}" sourceRef="exclusivegateway1" targetRef="usertask3"
  16.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${days > 3}]]></conditionExpression> 
  17.     </sequenceFlow> 
  18.     <sequenceFlow id="flow5" sourceRef="usertask3" targetRef="usertask4"></sequenceFlow> 
  19.     <endEvent id="endevent1" name="End"></endEvent> 
  20.     <sequenceFlow id="flow6" name="${flag==1}" sourceRef="usertask2" targetRef="endevent1"
  21.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${flag==1}]]></conditionExpression> 
  22.     </sequenceFlow> 
  23.     <sequenceFlow id="flow7" name="${flag==1}" sourceRef="usertask4" targetRef="endevent1"
  24.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${flag==1}]]></conditionExpression> 
  25.     </sequenceFlow> 
  26.     <sequenceFlow id="flow8" name="${flag==0}" sourceRef="usertask2" targetRef="usertask1"
  27.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${flag==0}]]></conditionExpression> 
  28.     </sequenceFlow> 
  29.     <sequenceFlow id="flow9" name="${flag==0}" sourceRef="usertask4" targetRef="usertask1"
  30.       <conditionExpression xsi:type="tFormalExpression"><![CDATA[${flag==0}]]></conditionExpression> 
  31.     </sequenceFlow> 
  32.   </process> 
  33.   <bpmndi:BPMNDiagram id="BPMNDiagram_holiday3"
  34.     <bpmndi:BPMNPlane bpmnElement="holiday3" id="BPMNPlane_holiday3"
  35.       <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"
  36.         <omgdc:Bounds height="35.0" width="35.0" x="470.0" y="40.0"></omgdc:Bounds> 
  37.       </bpmndi:BPMNShape> 
  38.       <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"
  39.         <omgdc:Bounds height="55.0" width="105.0" x="435.0" y="120.0"></omgdc:Bounds> 
  40.       </bpmndi:BPMNShape> 
  41.       <bpmndi:BPMNShape bpmnElement="exclusivegateway1" id="BPMNShape_exclusivegateway1"
  42.         <omgdc:Bounds height="40.0" width="40.0" x="467.0" y="260.0"></omgdc:Bounds> 
  43.       </bpmndi:BPMNShape> 
  44.       <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2"
  45.         <omgdc:Bounds height="55.0" width="105.0" x="220.0" y="253.0"></omgdc:Bounds> 
  46.       </bpmndi:BPMNShape> 
  47.       <bpmndi:BPMNShape bpmnElement="usertask3" id="BPMNShape_usertask3"
  48.         <omgdc:Bounds height="55.0" width="105.0" x="640.0" y="253.0"></omgdc:Bounds> 
  49.       </bpmndi:BPMNShape> 
  50.       <bpmndi:BPMNShape bpmnElement="usertask4" id="BPMNShape_usertask4"
  51.         <omgdc:Bounds height="55.0" width="105.0" x="880.0" y="253.0"></omgdc:Bounds> 
  52.       </bpmndi:BPMNShape> 
  53.       <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"
  54.         <omgdc:Bounds height="35.0" width="35.0" x="470.0" y="430.0"></omgdc:Bounds> 
  55.       </bpmndi:BPMNShape> 
  56.       <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"
  57.         <omgdi:waypoint x="487.0" y="75.0"></omgdi:waypoint> 
  58.         <omgdi:waypoint x="487.0" y="120.0"></omgdi:waypoint> 
  59.       </bpmndi:BPMNEdge> 
  60.       <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"
  61.         <omgdi:waypoint x="487.0" y="175.0"></omgdi:waypoint> 
  62.         <omgdi:waypoint x="487.0" y="260.0"></omgdi:waypoint> 
  63.       </bpmndi:BPMNEdge> 
  64.       <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"
  65.         <omgdi:waypoint x="467.0" y="280.0"></omgdi:waypoint> 
  66.         <omgdi:waypoint x="325.0" y="280.0"></omgdi:waypoint> 
  67.         <bpmndi:BPMNLabel> 
  68.           <omgdc:Bounds height="14.0" width="100.0" x="361.0" y="280.0"></omgdc:Bounds> 
  69.         </bpmndi:BPMNLabel> 
  70.       </bpmndi:BPMNEdge> 
  71.       <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4"
  72.         <omgdi:waypoint x="507.0" y="280.0"></omgdi:waypoint> 
  73.         <omgdi:waypoint x="640.0" y="280.0"></omgdi:waypoint> 
  74.         <bpmndi:BPMNLabel> 
  75.           <omgdc:Bounds height="14.0" width="100.0" x="538.0" y="280.0"></omgdc:Bounds> 
  76.         </bpmndi:BPMNLabel> 
  77.       </bpmndi:BPMNEdge> 
  78.       <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5"
  79.         <omgdi:waypoint x="745.0" y="280.0"></omgdi:waypoint> 
  80.         <omgdi:waypoint x="880.0" y="280.0"></omgdi:waypoint> 
  81.       </bpmndi:BPMNEdge> 
  82.       <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6"
  83.         <omgdi:waypoint x="272.0" y="308.0"></omgdi:waypoint> 
  84.         <omgdi:waypoint x="272.0" y="447.0"></omgdi:waypoint> 
  85.         <omgdi:waypoint x="470.0" y="447.0"></omgdi:waypoint> 
  86.         <bpmndi:BPMNLabel> 
  87.           <omgdc:Bounds height="14.0" width="100.0" x="300.0" y="429.0"></omgdc:Bounds> 
  88.         </bpmndi:BPMNLabel> 
  89.       </bpmndi:BPMNEdge> 
  90.       <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7"
  91.         <omgdi:waypoint x="932.0" y="308.0"></omgdi:waypoint> 
  92.         <omgdi:waypoint x="932.0" y="447.0"></omgdi:waypoint> 
  93.         <omgdi:waypoint x="505.0" y="447.0"></omgdi:waypoint> 
  94.         <bpmndi:BPMNLabel> 
  95.           <omgdc:Bounds height="14.0" width="100.0" x="800.0" y="429.0"></omgdc:Bounds> 
  96.         </bpmndi:BPMNLabel> 
  97.       </bpmndi:BPMNEdge> 
  98.       <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8"
  99.         <omgdi:waypoint x="272.0" y="253.0"></omgdi:waypoint> 
  100.         <omgdi:waypoint x="272.0" y="147.0"></omgdi:waypoint> 
  101.         <omgdi:waypoint x="435.0" y="147.0"></omgdi:waypoint> 
  102.         <bpmndi:BPMNLabel> 
  103.           <omgdc:Bounds height="14.0" width="100.0" x="290.0" y="151.0"></omgdc:Bounds> 
  104.         </bpmndi:BPMNLabel> 
  105.       </bpmndi:BPMNEdge> 
  106.       <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9"
  107.         <omgdi:waypoint x="932.0" y="253.0"></omgdi:waypoint> 
  108.         <omgdi:waypoint x="932.0" y="147.0"></omgdi:waypoint> 
  109.         <omgdi:waypoint x="540.0" y="147.0"></omgdi:waypoint> 
  110.         <bpmndi:BPMNLabel> 
  111.           <omgdc:Bounds height="14.0" width="100.0" x="790.0" y="151.0"></omgdc:Bounds> 
  112.         </bpmndi:BPMNLabel> 
  113.       </bpmndi:BPMNEdge> 
  114.     </bpmndi:BPMNPlane> 
  115.   </bpmndi:BPMNDiagram> 
  116. </definitions> 

到此流程設計完成。

Service接口

  1. @Service 
  2. public class HolidayService { 
  3.  
  4.   private static final Logger logger = LoggerFactory.getLogger(HolidayService2.class); 
  5.   @Resource 
  6.   private RuntimeService runtimeService ; 
  7.   @Resource 
  8.   private TaskService taskService ; 
  9.   /** 
  10.    *  <p> 
  11.    *    設置assignee的取值,用戶可以在界面上設置流程的執行人 
  12.    *  </p> 
  13.    *  <p>時間:2021年1月22日-下午8:30:39</p> 
  14.    * @author 爺爺 
  15.    * @param processDefinitionId  
  16.    * @return ProcessInstance 
  17.    */ 
  18.   public ProcessInstance startProcessInstanceAssignVariables(String processDefinitionId, Map<String, Object> variables) { 
  19.     Authentication.setAuthenticatedUserId((String)variables.get("assignee")) ; 
  20.     ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId, variables); 
  21.     logger.info("流程定義ID: {}", processInstance.getProcessDefinitionId()); 
  22.     logger.info("流程實例ID: {}", processInstance.getId()); 
  23.     logger.info("BussinessKey: {}", processInstance.getBusinessKey()) ; 
  24.     return processInstance ; 
  25.     } 
  26.   /** 
  27.    *  <p>執行任務</p> 
  28.    *  <p>時間:2021年1月24日-上午10:40:39</p> 
  29.    * @author 爺爺 
  30.    * @param variables 
  31.    * @param instanceId  
  32.    * @return void 
  33.    */ 
  34.   public void executionTask(Map<String, Object> variables, String instanceId) { 
  35.     Task task = taskService.createTaskQuery().processInstanceId(instanceId).singleResult() ; 
  36.     if (task == null) { 
  37.       logger.error("任務【{}】不存在", instanceId) ; 
  38.       throw new RuntimeException("任務【" + instanceId + "】不存在") ; 
  39.     } 
  40.     // 注意這里一定要設置變量,否則流程中設置的表達式無法獲取,如下圖 
  41.     taskService.setVariables(task.getId(), variables); 
  42.     taskService.complete(task.getId(), variables) ; 
  43.   } 

方法的含義已經在代碼中說明了。

Springboot整合工作流引擎Activiti(五)之網關路由

Controller接口

  1. package com.pack.controller; 
  2.  
  3. import java.util.HashMap; 
  4. import java.util.List; 
  5. import java.util.Map; 
  6. import java.util.stream.Collectors; 
  7.  
  8. import javax.annotation.Resource; 
  9.  
  10. import org.activiti.engine.history.HistoricActivityInstance; 
  11. import org.activiti.engine.runtime.ProcessInstance; 
  12. import org.activiti.engine.task.Task; 
  13. import org.apache.commons.lang3.StringUtils; 
  14. import org.springframework.web.bind.annotation.GetMapping; 
  15. import org.springframework.web.bind.annotation.PathVariable; 
  16. import org.springframework.web.bind.annotation.RequestMapping; 
  17. import org.springframework.web.bind.annotation.RequestParam; 
  18. import org.springframework.web.bind.annotation.RestController; 
  19.  
  20. import com.pack.dto.ProcessDefinitionDTO; 
  21. import com.pack.dto.ProcessInstanceDTO; 
  22. import com.pack.dto.R; 
  23. import com.pack.task.HolidayService2; 
  24.  
  25. @RestController 
  26. @RequestMapping("/holidays2"
  27. public class HolidayController2 { 
  28.      
  29.   @Resource 
  30.   private HolidayService holidayService ; 
  31.      
  32.   /** 
  33.    *  <p>啟動請假審批流程</p> 
  34.    *  <p>時間:2021年1月23日-上午10:32:55</p> 
  35.    * @author 爺爺 
  36.    * @param userId 
  37.    * @param processDefinitionId 流程定義Id 
  38.    * @return R 
  39.    */ 
  40.   @GetMapping("/start"
  41.   public R startProcess(String userId, String processDefinitionId) { 
  42.     Map<String, Object> variables = new HashMap<>() ; 
  43.     variables.put("userId", userId) ; 
  44.     ProcessInstance instance = holidayService.startProcessInstanceAssignVariables(processDefinitionId, variables) ; 
  45.     ProcessInstanceDTO dto = new ProcessInstanceDTO() ; 
  46.     dto.setInstanceId(instance.getId()) ; 
  47.     return R.success(dto) ; 
  48.   } 
  49.   /** 
  50.    *  <p> 
  51.    *    填寫審批單 
  52.    *  </p> 
  53.    *  <p>時間:2021年1月23日-上午11:57:30</p> 
  54.    * @author 爺爺 
  55.    * @param Map取值如下 
  56.    * @param days 請假天數 
  57.    * @param explain 審批單說明 
  58.    * @param instanceId 流程實例ID 
  59.    * @param assignee 指定下一個流程執行人 
  60.    * @return R 
  61.    */ 
  62.   @GetMapping("/apply"
  63.   public R fillApply(@RequestParam Map<String, Object> variables) { 
  64.     String instanceId = (String) variables.remove("instanceId") ; 
  65.     if (StringUtils.isEmpty(instanceId)) { 
  66.       return R.failure("未知任務") ; 
  67.     } 
  68.     holidayService.executionTask(variables, instanceId); 
  69.     return R.success() ;  
  70.   } 

測試

啟動流程

Springboot整合工作流引擎Activiti(五)之網關路由

請假人處理

Springboot整合工作流引擎Activiti(五)之網關路由

d_mgr:部門經理ID

days:3 (小于3天)

部門經理處理

Springboot整合工作流引擎Activiti(五)之網關路由

flag:0 (不同意,駁回到員工申請)

查看act_hi_actinst表數據:

Springboot整合工作流引擎Activiti(五)之網關路由

流程又進入到了“員工申請”節點

再次重復上面的流程,當走到部門經理時,將flag=1。

Springboot整合工作流引擎Activiti(五)之網關路由

到此流程結束,當請求天數大于3天的處理過程與上面基本相同。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-07-05 09:48:44

Activiti部署

2022-10-26 08:00:43

Activiti工作流BPM

2023-06-12 08:01:57

Camunda工作流引擎

2021-10-14 11:34:05

技術工作流引擎

2023-01-04 08:02:16

工作流架構設計

2011-12-14 09:58:58

JavajBPM

2015-07-14 09:26:28

微型工作流引擎設計

2024-10-17 08:39:32

2025-07-31 08:58:50

2023-08-02 18:48:23

Flowable工作流引擎

2009-06-11 14:43:34

jbpm工作流引擎jBPM搭建

2009-09-01 18:26:23

C#工作流引擎

2025-10-17 08:22:32

2009-06-11 14:33:11

jbpm工作流引擎什么是jbpm

2014-07-31 17:03:12

2021-03-12 06:44:09

Argo Workfl開源項目

2025-09-04 01:33:00

Flowable工作流引擎

2012-05-18 16:55:34

JavaBonita

2013-04-23 10:28:08

IBeamMDAAWF

2024-04-25 08:00:00

DevOps架構軟件開發
點贊
收藏

51CTO技術棧公眾號

欧美日韩在线看片| 成人毛片视频网站| 神马久久精品综合| 亚洲羞羞网站| 红桃视频亚洲| 欧美性高潮在线| 久久99精品久久久久久青青日本 | 欧美巨大丰满猛性社交| 99久久99久久综合| 国产成人激情小视频| 午夜激情福利电影| 一区二区网站| 欧美日韩在线另类| 亚洲激情电影在线| 亚洲av无码国产精品久久| 天堂а√在线最新版中文在线| av毛片久久久久**hd| 国产ts一区二区| 成人在线观看免费完整| 久久精品66| 欧美国产日韩亚洲一区| 成人网中文字幕| 日本一二三区视频| 国产精品欧美日韩一区| 欧美区一区二区三区| 久久av综合网| 日本免费在线观看| 91色|porny| 伊人av综合网| 三上悠亚 电影| 日本美女一区| 亚洲午夜久久久久久久久电影网| 欧美xxxx黑人又粗又长精品| 91杏吧porn蝌蚪| 婷婷精品视频| 欧美肥妇毛茸茸| 97在线免费公开视频| 在线看一级片| 国产精品久久久久久久久久久免费看 | 免费av网站观看| 欧美aa在线视频| 97香蕉久久超级碰碰高清版| 色一情一区二区| 四虎精品在线| 国产伦精品一区二区三区视频青涩| 91精品国产91久久久久久不卡| 丰腴饱满的极品熟妇| 中文久久电影小说| 欧美色精品天天在线观看视频| 精品蜜桃传媒| 亚洲AV无码乱码国产精品牛牛| 热久久国产精品| 97国产在线视频| 久久噜噜色综合一区二区| 综合亚洲自拍| 亚洲国产日韩欧美在线动漫| 视色视频在线观看| 亚洲人成午夜免电影费观看| 亚洲欧美日韩国产成人精品影院| 欧美精品尤物在线| 精品人妻一区二区三区免费看| 欧美日韩 国产精品| 中文字幕欧美精品在线 | 国产成人午夜99999| 国产欧美 在线欧美| 免费看毛片网站| 欧美成人日韩| 深夜成人在线观看| 91玉足脚交白嫩脚丫| 国产成人一二| 日韩欧美不卡一区| 香蕉视频在线观看黄| 久久在线观看| 日韩欧美一区二区在线视频| www.桃色.com| 精品999日本久久久影院| 6080yy午夜一二三区久久| 国产又黄又爽免费视频| 欧美黄色激情| 亚洲欧美日韩人成在线播放| 国产一区一区三区| 在线中文字幕视频观看| 国产日韩欧美电影| 亚洲视频欧美在线| 精品国产va久久久久久久| 一本久道久久综合婷婷鲸鱼| www.xxxx精品| 美女福利视频在线观看| 欧美婷婷在线| 久久6免费高清热精品| 久久中文字幕在线观看| 精品国产91| 亚洲欧美制服第一页| 九色porny自拍视频| 久久av超碰| 日韩在线观看免费高清| 欧美黑人猛猛猛| 极品尤物久久久av免费看| 久久久久女教师免费一区| 久久久精品视频在线| 国产精品久久久久毛片大屁完整版 | 日韩成人在线视频观看| 麻豆av免费观看| 久久99精品久久久久久园产越南| 亚洲国产精品久久久久秋霞不卡| 性欧美丰满熟妇xxxx性仙踪林| 成人羞羞视频在线看网址| 精品国产一区二区三区久久狼黑人 | 亚洲欧美久久234| 久久久久黄久久免费漫画| 色偷偷久久人人79超碰人人澡| 日本中文字幕观看| 尤物tv在线精品| 欧美日本高清视频| 在线播放亚洲精品| 2017欧美狠狠色| 久久av高潮av| 热久久久久久| 亚洲视频视频在线| 日产电影一区二区三区| 激情亚洲综合在线| 日本婷婷久久久久久久久一区二区 | 97视频在线观看播放| 国产女主播福利| 亚洲国产成人一区二区三区| 国产69精品久久久久久久| 国产成人久久精品一区二区三区| 亚洲性猛交xxxxwww| 国产a∨精品一区二区三区仙踪林| 国产精品911| 在线观看日韩片| 欧美日韩五区| 色婷婷国产精品| wwwxx日本| 午夜久久99| 成人深夜直播免费观看| 日本a在线播放| 欧美日韩亚洲丝袜制服| 午夜精产品一区二区在线观看的| 亚洲另类自拍| 精品久久蜜桃| 日本а中文在线天堂| 亚洲国产欧美精品| 亚洲天堂日韩av| 视频在线观看一区二区三区| 国产日韩精品视频| 国产日本在线视频| 色88888久久久久久影院按摩| 成人性生活免费看| 国产精品三上| 蜜桃麻豆91| 欧洲亚洲两性| 神马久久桃色视频| 国产一区二区三区视频免费观看| 国产精品理伦片| 在线播放免费视频| 欧美一区高清| 春色成人在线视频| www成人免费观看| 日韩久久免费视频| 亚洲天堂一区在线| 男人的j进女人的j一区| 日韩片电影在线免费观看| 99精品国自产在线| 日韩在线播放一区| 亚洲成人精品女人久久久| 亚洲午夜羞羞片| 最新在线黄色网址| 玖玖在线精品| 日本午夜精品电影| 性欧美video另类hd尤物| 久久五月天综合| 亚洲免费国产视频| 亚洲高清不卡一区| 成人在线视频首页| 美女av一区二区三区| 国产免费黄色片| 亚洲一区二区三区视频在线播放| 久久久男人的天堂| 亚洲一区久久| 亚洲欧美日韩国产yyy | 亚洲午夜精品一区二区三区他趣| 成人免费看片载| 久久久www| 亚洲精品乱码久久久久久蜜桃91| **国产精品| 97久久精品视频| 在线观看免费版| 久久这里只有精品首页| av污在线观看| 亚洲午夜av| 鲁片一区二区三区| 97成人资源| 日韩亚洲欧美成人| 欧美一级特黄aaaaaa| 在线免费观看不卡av| 永久免费看黄网站| 久久久久久一二三区| 国内精品在线观看视频| 欧洲福利电影| av一区二区三区在线观看| 欧美xoxoxo| 欧美大片在线免费观看| 激情综合闲人网| 日韩女优av电影在线观看| 中文字幕一区二区人妻视频| 一区二区三区免费| 国产视频123区| 成人av手机在线观看| 国产精品无码免费专区午夜| 国产美女视频一区二区| 欧美最顶级丰满的aⅴ艳星| 秋霞av鲁丝片一区二区| 欧美日韩久久一区| 久久一区二区三区视频| 亚洲乱码日产精品bd| 播金莲一级淫片aaaaaaa| 国内av在线播放| www日本高清视频| 影音先锋男人在线资源| 日本视频在线一区| 无码人妻aⅴ一区二区三区日本| 日韩精品福利一区二区三区| 亚洲tv在线观看| 蜜臀av午夜精品| 欧美精品1区2区| 波多野结衣家庭主妇| 亚洲 欧美综合在线网络| 亚洲波多野结衣| 日本一区二区成人在线| 亚洲狠狠婷婷综合久久久久图片| 国产成人高清视频| 亚洲av毛片在线观看| 美国毛片一区二区| 亚洲免费av一区二区三区| 神马电影久久| 久久精品日产第一区二区三区乱码 | 超碰97久久国产精品牛牛| 成人性生交大片免费看小说| 人人玩人人添人人澡欧美| 国产精品视频免费在线观看| 高清成人在线| 国产精品久久久久久久午夜| 全亚洲第一av番号网站| 国产97在线|日韩| 三级成人黄色影院| 日韩av电影国产| 亚洲伦乱视频| 日韩美女主播视频| 神马电影网我不卡| 国产精品扒开腿做爽爽爽视频| 少妇视频在线观看| 人体精品一二三区| 欧美第一视频| 国产精品户外野外| 不卡亚洲精品| 国产日韩欧美日韩大片| 3d动漫一区二区三区在线观看| 91精品啪aⅴ在线观看国产| 精品国产鲁一鲁****| 99蜜桃在线观看免费视频网站| 成人h动漫免费观看网站| 精品一区久久久| 国产传媒欧美日韩成人精品大片| 亚洲 国产 日韩 综合一区| 久久要要av| 久久久久久久香蕉| 亚洲国产一区二区三区高清 | 麻豆精品蜜桃视频网站| gogogo高清免费观看在线视频| 狠狠色丁香婷综合久久| 无码人妻丰满熟妇区毛片蜜桃精品| 国产成人免费视频网站| www.男人天堂| 欧美激情资源网| 欧美成人黄色网| 精品久久久久久久久中文字幕 | 日韩av影片在线观看| 国产在线观看免费| 久久精品国产电影| 国内高清免费在线视频| 亚洲一级一级97网| 在线观看免费黄色| 欧美丰满老妇厨房牲生活 | 午夜精品久久| 亚洲熟妇av一区二区三区漫画| 青青草97国产精品免费观看 | 卡通动漫国产精品| 色爱区成人综合网| 欧美三区视频| 午夜免费一区二区| 国产91对白在线观看九色| av女人的天堂| 亚洲愉拍自拍另类高清精品| 四虎影院在线免费播放| 日韩午夜激情视频| 97人人爽人人爽人人爽| 亚洲丁香婷深爱综合| 亚洲毛片在线播放| 一区二区三区天堂av| 成人av影院在线观看| 国产精品午夜视频| 青草久久视频| 欧美少妇在线观看| 日韩精品免费专区| 国产性生活毛片| 日韩理论片一区二区| 国产无套丰满白嫩对白| 日韩欧美国产综合| 成人精品一区| 2025国产精品视频| jizz国产精品| 三级在线免费观看| 麻豆精品一区二区| 黄色aaa视频| 亚洲超碰精品一区二区| 国产毛片在线视频| 一区二区三区视频在线| 日韩伦理在线一区| 高清不卡一区二区三区| 91一区在线| 美女喷白浆视频| 91免费在线视频观看| 久久网中文字幕| 欧美一区日韩一区| 午夜在线播放| 国产精品jizz在线观看麻豆| 秋霞蜜臀av久久电影网免费| 99re6这里有精品热视频| 精品一区二区影视| 午夜黄色福利视频| 欧美在线|欧美| 国产youjizz在线| 国产国产精品人在线视| 亚洲丝袜美腿一区| 成人免费在线小视频| aaa国产一区| 欧美一级视频免费观看| 精品久久国产老人久久综合| av色综合久久天堂av色综合在| 国产在线播放不卡| 国产大片一区| 欧美又黄又嫩大片a级| 国产精品的网站| 97精品久久人人爽人人爽| 菠萝蜜影院一区二区免费| 9999精品视频| 欧美精品一区二区性色a+v| 国产一区视频导航| 国产精品一级黄片| 亚洲成av人片在线观看无码| 成人精品在线播放| 国模精品系列视频| 亚洲欧美日本伦理| 日本xxxxxxx免费视频| 国产无一区二区| 中文字幕久久熟女蜜桃| 精品免费一区二区三区| 日本aa在线| 国产区二精品视| 日韩国产综合| 天天操天天爱天天爽| 中文字幕一区二区视频| 国产美女免费看| 欧美精品久久久久久久久久| 美女一区2区| 麻豆传传媒久久久爱| 国产精品午夜电影| 99久久久久久久| 国内精品久久久久久中文字幕| 日韩有码一区| 亚洲欧美自偷自拍另类| 99re这里只有精品6| 国产一级淫片a视频免费观看| 亚洲色图激情小说| 99久久这里有精品| 免费超爽大片黄| 久久综合九色综合久久久精品综合| 成年人视频免费| 蜜臀久久99精品久久久久久宅男 | 日韩欧美三区| 日韩精品在线中文字幕| 久久久777精品电影网影网| 在线免费观看中文字幕| 久久久久久亚洲精品| 成人一区不卡| 黄色在线免费播放| 欧美在线色视频| 成年网站在线视频网站| 日韩欧美在线一区二区| 成人一级视频在线观看| 中文字幕精品无码一区二区| 久久中文字幕国产| 亚洲精品动态| 久久久无码人妻精品无码| 欧洲一区在线观看| 福利成人导航| 亚洲一卡二卡三卡| 91丨porny丨在线| www.97av|