精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产又粗又长又爽| 欧美少妇一区二区三区| 中文字幕乱码视频| 欧美一区国产在线| 日韩av在线免费| 国产97色在线 | 日韩| 麻豆视频在线免费观看| 成人动漫精品一区二区| 国产激情久久久| 99久久婷婷国产综合| 国产区精品视频在线观看豆花| 欧美性色19p| 特级黄色录像片| 青草久久伊人| 国产精品一区专区| 欧洲永久精品大片ww免费漫画| 精品女人久久久| 欧洲亚洲视频| 日韩欧美自拍偷拍| 欧美日韩在线成人| 91九色国产在线播放| 中文字幕乱码久久午夜不卡| 国产伦理一区二区三区| 亚洲无码精品国产| 性xx色xx综合久久久xx| 欧美另类69精品久久久久9999| brazzers精品成人一区| silk一区二区三区精品视频| 欧美三级三级三级| 亚洲中文字幕无码专区| 91蜜桃在线视频| 国产精品伦理一区二区| 免费看污久久久| 黑人精品一区二区| 国产综合久久久久影院| 国产精品96久久久久久| 日韩 欧美 综合| 欧美激情视频一区二区三区在线播放 | 91久久青草| 色天使久久综合网天天| 青青草精品视频在线| 国产最新在线| 国产精品人成在线观看免费| 欧美日韩精品免费在线观看视频| 欧美 日韩 国产 成人 在线 91| 捆绑调教美女网站视频一区| 国产精品久久久久久久久久ktv| 黄色大片网站在线观看| 亚洲激情一区| 国外成人在线视频| 久久久久久久久99| 海角社区69精品视频| 久久国产精品99国产精| 国产精品免费人成网站酒店| 日韩一区二区在线| 一区二区三区视频免费在线观看 | 青青草原在线亚洲| 亚洲第一福利视频| 久久人人妻人人人人妻性色av| 北条麻妃在线一区二区免费播放| 日韩精品一区二区三区视频播放| 国产成人精品综合久久久久99| 欧美.com| 精品第一国产综合精品aⅴ| 免费看91视频| 久久国产精品色av免费看| 精品国产乱码久久久久久夜甘婷婷 | 亚洲欧美日韩另类| 91成年人网站| 色乱码一区二区三区网站| 久久精品国产亚洲| 国产十六处破外女视频| 国产综合婷婷| 91成人福利在线| 无码人妻精品一区二区蜜桃色欲| 日本中文字幕一区| 91久久嫩草影院一区二区| 99久久久久久久| 白白色亚洲国产精品| 久久精品五月婷婷| 成人激情电影在线看| 中文字幕一区二区三区蜜月| 国产精品久久久影院| 无码小电影在线观看网站免费| 91久久精品一区二区二区| 日本在线观看免费视频| 精品三级久久久| 精品性高朝久久久久久久| 91精品人妻一区二区三区| 久久亚洲专区| 性欧美长视频免费观看不卡| 国产成人av免费| 国产福利视频一区二区三区| 久久一区二区精品| 好吊日视频在线观看| 黄色一区二区在线| www亚洲成人| 一区二区三区亚洲变态调教大结局| 亚洲精品99久久久久| 国产成人在线网址| 亚洲福利国产| 国产区亚洲区欧美区| 熟妇高潮一区二区三区| 国产精品激情偷乱一区二区∴| 日本手机在线视频| 日韩伦理一区二区| 精品视频在线观看日韩| avtt天堂在线| 免费观看在线综合色| 国产精品美女黄网| 午夜视频成人| 色吊一区二区三区| 男人的天堂影院| 99成人在线视频| 日本成人激情视频| 性欧美8khd高清极品| 欧美国产在线观看| 美女日批免费视频| 51精品国产| www.亚洲一区| 日韩精品成人免费观看视频| 豆国产96在线|亚洲| 亚洲春色在线视频| 中文字幕人成乱码在线观看 | 高清中文字幕mv的电影| 小处雏高清一区二区三区| 国产激情999| 日本福利午夜视频在线| 亚洲一二三区在线观看| 国产在线观看中文字幕| 日韩成人精品一区| 国产精品99久久久久久久久久久久 | 亚洲国产精品字幕| 欧产日产国产v| 久久精品国产久精国产爱| 日本一区二区三区四区高清视频 | 玛丽玛丽电影原版免费观看1977| 日韩激情av| 欧美一区二区三区四区久久| 三级黄色在线观看| 蜜臀av性久久久久av蜜臀妖精| 欧美午夜精品久久久久久蜜| 亚洲欧美韩国| 亚洲欧洲av一区二区| 国产91精品一区| 成人精品国产一区二区4080 | 免费久久99精品国产| 日韩欧美亚洲日产国| 日本成人片在线| 伊人亚洲福利一区二区三区| 久久国产乱子伦精品| 国产亚洲1区2区3区| 美女网站免费观看视频| 欧美精品一区二区三区中文字幕| 国产成人午夜视频网址| 福利在线视频导航| 欧美日韩一区二区在线观看| 一本一本久久a久久| 激情综合亚洲精品| 久久免费视频2| 亚洲1区在线观看| 欧美激情伊人电影| 性高潮久久久久久久久久| 欧美日韩国产激情| 国产熟女一区二区| 另类欧美日韩国产在线| 日韩最新中文字幕| 国产精伦一区二区三区| 91av在线看| av色图一区| 日韩一区二区三区电影| 精品无码久久久久久久| 91麻豆免费观看| 高清一区在线观看| 欧美人与禽猛交乱配视频| 高清视频一区二区三区| 性爽视频在线| 日韩中文字幕国产| 超碰在线人人干| 欧美日韩一区二区在线 | 五月天激情综合| 中文字幕国产专区| 国产在线播放一区二区三区 | 日本欧美在线看| 国产又黄又爽免费视频| 欧美18xxxx| 国产日韩av高清| wwww亚洲| 综合国产在线视频| 人成网站在线观看| 欧美视频一区二区三区四区| 久久久久久久国产视频| 国产日产精品1区| 四虎国产精品免费| 久久激情视频| 欧美一区二区视频在线播放| 全国精品免费看| 亚洲精品日韩激情在线电影| 涩涩视频在线播放| 久久久国产精品免费| 偷拍自拍在线| 日韩欧美在线一区二区三区| www.欧美色| 一区二区三区不卡在线观看 | 99精品视频精品精品视频| 精品国产一区二区三区久久久久久| 亚洲狼人在线| 日本伊人精品一区二区三区介绍| 成人看av片| 在线观看欧美日韩国产| 无码h黄肉3d动漫在线观看| 欧美精品高清视频| 天天操天天干天天摸| 亚洲在线视频免费观看| 久久久久麻豆v国产| 久久色中文字幕| 欧产日产国产精品98| 国产一区二区三区免费| a在线观看免费视频| 国产精品久久久久毛片大屁完整版| 在线视频一二三区| 欧美中文一区二区| 蜜桃av噜噜一区二区三| 白白在线精品| 丁香五月网久久综合| 国产亚洲精aa在线看| 国产精品久久久久久久久久新婚| 在线看片福利| 97色在线视频| 丁香花电影在线观看完整版| 欧美另类在线播放| 国产乱色在线观看| xvideos亚洲| 天堂中文а√在线| 最近2019中文字幕第三页视频| 美国成人毛片| 亚洲天堂久久av| 黄色小视频在线观看| 亚洲精品自拍第一页| 丝袜+亚洲+另类+欧美+变态| 亚洲国内精品在线| 天堂中文网在线| 日韩国产精品一区| 天天干,夜夜操| 日韩精品电影网| 日本大片在线观看| 亚洲网站在线播放| 国产高清一级毛片在线不卡| 亚洲天堂影视av| a天堂在线资源| 少妇精69xxtheporn| 香蕉视频免费在线播放| 日韩中文字幕不卡视频| 日本欧美在线视频免费观看| 久久精品国产96久久久香蕉| 久cao在线| 欧美极品少妇全裸体| av免费不卡国产观看| 欧美专区福利在线| 久久野战av| 成人欧美一区二区三区黑人| 国产一区一区| 国产精品三区四区| 亚洲色图丝袜| 一区二区三区视频| 欧美日本三区| 人人妻人人添人人爽欧美一区| 三级在线观看一区二区 | www.成人网.com| 亚洲综合网在线观看| 国产精品全国免费观看高清 | 国产精品麻豆免费版| 亚洲精品进入| 亚洲最新在线| 亚洲一级二级| 国产日韩一区二区在线观看| 另类中文字幕网| www国产视频| 久久精品日韩一区二区三区| 四虎永久免费地址| 性久久久久久久久| 成人毛片一区二区三区| 欧美一卡二卡三卡| 色鬼7777久久| 久久久www成人免费精品| 55av亚洲| 成人黄色在线观看| 欧美午夜寂寞| a级黄色片网站| 先锋a资源在线看亚洲| 欧美一级xxxx| 92国产精品观看| 无码黑人精品一区二区| 欧美性xxxxxx| 国产成人精品免费看视频| 亚洲欧美精品一区| 污污的视频在线观看| 国产成人精品视频| 草莓视频一区二区三区| 亚洲国产日韩综合一区| 亚洲人成久久| 国产精品999.| 国产欧美一区二区在线观看| 国产一级片免费观看| 欧美色综合网站| 深夜影院在线观看| 欧美猛交免费看| 欧美成人福利| 日本黑人久久| 中文亚洲字幕| 性猛交╳xxx乱大交| 亚洲欧洲国产日本综合| 波多野结衣一二区| 日韩av在线免费看| 日本大胆在线观看| 国产日韩在线播放| 精品国产精品久久一区免费式| 日韩av高清在线看片| 黑人精品欧美一区二区蜜桃 | 国产在线中文字幕| 韩国一区二区电影| 日韩欧美中文字幕在线视频| 中文字幕中文字幕在线中心一区| 天堂成人免费av电影一区| 又黄又爽的网站| 亚洲国产日产av| 99久久国产热无码精品免费| 精品国产欧美一区二区五十路| 日韩在线影院| 日本一区二区三区四区高清视频| 亚洲欧美日韩国产一区| 大乳护士喂奶hd| 香蕉成人啪国产精品视频综合网| 成人激情四射网| 欧美大片免费观看在线观看网站推荐| 91亚洲精品在看在线观看高清| 亚洲日本一区二区三区在线不卡| 日本成人在线不卡视频| 亚洲精品国产精品国自产网站| 一道本成人在线| 邻居大乳一区二区三区| 日本精品一区二区三区在线| 欧美女王vk| 冲田杏梨av在线| 国产精品视频在线看| 亚洲天堂视频在线| 色综合伊人色综合网站| 欧美一级做a| 国产对白在线播放| 国产在线国偷精品产拍免费yy| 麻豆天美蜜桃91| 欧美不卡一区二区| bbw在线视频| 免费av在线一区二区| 老司机午夜精品视频在线观看| 亚洲最大成人综合网| 欧美美女一区二区在线观看| www.欧美日本韩国| 不卡一区二区三区四区五区| 亚洲久久成人| 天天躁日日躁aaaa视频| 欧美日韩一区不卡| www在线免费观看视频| 国产日韩精品久久| 翔田千里一区二区| 后入内射无码人妻一区| 日韩免费高清视频| 激情黄产视频在线免费观看| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 日韩av播放器| 国产精品久久久久久久岛一牛影视 | 在线观看免费观看在线| 欧美成人精品不卡视频在线观看| 北条麻妃在线一区二区免费播放| 成年人免费在线播放| 国产精品丝袜一区| 欧美一区二区在线观看视频| 欧美一区二区视频97| 偷拍欧美精品| 中文成人无字幕乱码精品区| 欧美亚洲动漫另类| 99视频免费在线观看| 免费看成人午夜电影| 精品一区二区三区欧美| 在线观看免费国产视频| 精品国产一区二区三区久久久| 国内精品偷拍| 国产九九在线观看| 亚瑟在线精品视频| 91精品国产综合久久久久久豆腐| 成人h在线播放| 日韩国产精品91| 美女毛片在线观看| 一区二区欧美亚洲| 国产精品成人自拍| 午夜久久福利视频| 欧美日韩在线看| 四虎亚洲精品| 先锋在线资源一区二区三区| 成人教育av在线|