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

我的微型工作流引擎設(shè)計

開發(fā)
對于我們自己來說,這些缺點都是我們需要繼續(xù)努力的地方,可能還需要大量的時間來完成。目前來說我們還不打算開源,等它慢慢穩(wěn)定成熟后我們會 考慮是不是開源出來。如果大家有好的建議或有哪方面的疑惑我很樂意給大家解答,或者你也在設(shè)計開發(fā)自己的工作流,我們可以相互交流下。

一、前言

 

    提到工作流很多人就會想到OA,的確OA就是典型的工作流的應(yīng)用,但是工作流并不僅僅局限于OA,工作流應(yīng)該算是基礎(chǔ)框架軟件,主要用于流程的重組和優(yōu) 化,它有廣闊的應(yīng)用領(lǐng)域。在java下有很多優(yōu)秀的開源工作流可以選擇比如activit5、jpbm4等,在.net下卻幾乎找不到令人滿意的工作流引 擎可用。當然不是說.net下沒有開源的只是有些國產(chǎn)開源的但看了代碼后就一點興趣都沒有了,且不說代碼質(zhì)量如何,還引入了一大堆的東西,想在項目中應(yīng)用 也是非常困難。鑒于此我還是決定自己開發(fā)一款.NET微型工作流引擎。

二、基本說明

    為什么叫微型工作流引擎?就是超輕量級,以方便在項目中輕便的使用,比如只有一個類庫dll,大小也就幾百k到1M左右,不過我們要先回過頭來看看工作流系統(tǒng),它實在是太大了,它應(yīng)該包括:

    1、工作流引擎     2、工作流設(shè)計器     3、工作流管理系統(tǒng)     4、表單設(shè)計器

       目前來說的我只實現(xiàn)了核心引擎,流程定義也只能先在xml中編輯然后讀取到引擎中或者直接定義到數(shù)據(jù)庫中,但整個流程是能夠正常流轉(zhuǎn)。至于流程設(shè)計器、表 單設(shè)計器、工作流管理系統(tǒng)這個我有精力了再慢慢開發(fā)。這里我完成的只是很小的一塊,但是是工作流的核心,可以很方便的嵌入到業(yè)務(wù)系統(tǒng)中應(yīng)用。

    引擎主要提供了對于工作流定義的解析以及流程流轉(zhuǎn)的支持。工作流定義文件描述了業(yè)務(wù)的交互邏輯,工作流引擎通過解析此+工作流定義文件按照業(yè)務(wù)的交互邏輯 進行業(yè)務(wù)的流轉(zhuǎn),工作流引擎通常通過參考某種模型來進行設(shè)計,通過調(diào)度算法來進行流程的流轉(zhuǎn)(流程的啟動、終止、掛起、恢復(fù)等),通過各種環(huán)節(jié)調(diào)度算法來 實現(xiàn)對于環(huán)節(jié)的流轉(zhuǎn)(環(huán)節(jié)的合并、分叉、選擇、條件性的選擇等)。

三、初步印象

    1、從概念開始解釋估計大家都會看不下去了。我們先拿一個簡單實例來看看,新建一個項目,引用我的工作流引擎類庫(Chitu.Bpm.dll,取名為赤兔)。

在項目啟動時配置流程引擎(Global.asax.cs中),如下:    

  1. //初始化流程引擎 
  2. BpmConfiguration 
  3.     .Instance() 
  4.     .Config(@"C:\Configration\BpmConfig.xml"
  5.     .Start(); 

在項目中使用時,比如新建流程定義:

  1. //取得工作流上下文 
  2. var bpm = new BpmContext() 
  3.     .UseTransaction(true
  4.     .SetActor("蕭秦"); 
  5.  
  6. //新增流程定義 
  7. bpm.NewProcessDefinition("請假流程"
  8.     .SetXmlFile(@"C:\Definition\demo1.xml"
  9.     .SetCategory("分類1"
  10.     .SetEffectDate(DateTime.Now) 
  11.     .SetExpireDate(DateTime.Now.AddDays(180)) 
  12.     .SetMemo("memo1"
  13.     .Create()  //創(chuàng)建流程定義,只生成bpm_definition_process表 
  14.     .Parse()   //解析xml 
  15.     .Deploy(); //發(fā)布流程 

啟動流程:

  1. //啟動流程 
  2. var process = bpm.NewProcessIntance("請假流程ID""蕭秦(業(yè)務(wù)ID)");   //創(chuàng)建流程實例 
  3. process.SetVariable("流程變量1""值1");                     //設(shè)置流程變量 
  4. process.Start(); 

人工任務(wù)節(jié)點轉(zhuǎn)交下一步:

  1. //任務(wù)完成 
  2. var task = bpm.LoadTaskInstance("任務(wù)ID"); 
  3. task.SetVariable("任務(wù)變量2""xx"); 
  4. task.Signal(); //觸發(fā)令牌流轉(zhuǎn) 

2、接下來我們先看看流程定義的XML,以下是我捏造的一個流程,以便把各種節(jié)點都放進去了。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2.  
  3. <process name="樣板房裝修流程"
  4.    
  5.   <start name="裝修申請"
  6.     <transition to="裝修方案設(shè)計" > 
  7.       <action class="Namespace.MyActionHandler"></action> 
  8.     </transition> 
  9.   </start> 
  10.  
  11.   <task name="裝修方案設(shè)計"
  12.     <transition to="裝修方案審核"
  13.       <action script="log.Debug('裝修方案審核 action test');"></action> 
  14.     </transition> 
  15.   </task> 
  16.  
  17.   <decision name="裝修方案審核"
  18.     <transitions> 
  19.       <transition to="裝修籌備"     condition-expression="variable.pass == true"></transition> 
  20.       <transition to="裝修方案設(shè)計" condition-expression="variable.pass != true"></transition> 
  21.     </transitions> 
  22.  
  23.     <events> 
  24.       <action event="enter" class="enterHandlerClass"></action> 
  25.       <action event="leave" class="leaveHandlerClass"></action> 
  26.     </events> 
  27.  
  28.     <assignments> 
  29.       <assignment owner="{process.starter}"></assignment> 
  30.     </assignments> 
  31.  
  32.     <variables> 
  33.       <variable type="boolean" name="IsPass" access="read,required"></variable> 
  34.     </variables> 
  35.   </decision> 
  36.   
  37.   <fork name="裝修籌備"
  38.     <transition to="裝修合同簽定"></transition> 
  39.     <transition to="等待裝修工人到位"></transition> 
  40.     <transition to="裝修材料預(yù)算"></transition> 
  41.   </fork> 
  42.  
  43.   <sign name="裝修合同簽定"  necessary="false" async="true"
  44.     <transition to="裝修施工"></transition> 
  45.   </sign> 
  46.  
  47.   <wait name="等待裝修工人到位"
  48.     <transition to="裝修施工"></transition> 
  49.   </wait> 
  50.  
  51.   <task name="裝修材料預(yù)算"
  52.     <transition to="材料采購子流程"></transition> 
  53.   </task> 
  54.  
  55.   <subflow name="材料采購子流程"
  56.     <transition to="裝修施工"></transition> 
  57.   </subflow> 
  58.  
  59.   <join name="裝修施工"
  60.     <transition to="施工驗收/付款"></transition> 
  61.   </join> 
  62.  
  63.   <auto name="施工驗收/付款"
  64.     <transition to="裝修完成"></transition> 
  65.   </auto> 
  66.  
  67.   <end name="裝修完成">   
  68.   </end> 
  69.  
  70.   <events> 
  71.     <action event="process-start" class="TestStartHandler"></action> 
  72.     <action event="process-end" class="TestEndHandler"></action> 
  73.   </events> 
  74.  
  75.   <variables> 
  76.     <variable type="string" name="start_id" access="readonly,required"></variable> 
  77.     <variable type="string" name="start_person"></variable> 
  78.   </variables> 
  79. </process> 

定義的根節(jié)點為流程(process),流程下為各個任務(wù)節(jié)點(node),任務(wù)節(jié)點分為:

start       開始節(jié)點 auto       自動節(jié)點 task       人工節(jié)點 decisioin 決策節(jié)點 fork        發(fā)散節(jié)點 join        聚合節(jié)點 sublfow  子流程節(jié)點 sign       會簽節(jié)點 wait       等待節(jié)點 end        結(jié)束節(jié)點

任務(wù)節(jié)點下可以包括路由(transition)動作(action)及人員分配(assignment)變量定義(variable)

其中action包括幾種類型:1、class 2、script 3、sql 4、webservice 5、expression 在script或expression中可以直接訪問process.xxx屬性或task.xxx屬性或variable.xxx簡化了動態(tài)c#語句的使用。 當然XML定義中還有很多其它的屬性定義我這里也沒有都列出來,以后用到了再仔細說。

3、關(guān)于數(shù)據(jù)庫設(shè)計,這里僅僅是流程流轉(zhuǎn)核心所需要的表,表之間都沒有拉關(guān)系

image

(點擊圖片查看大圖)

#p#

四、部分功能剖析

 a、我把它劃分為主要的幾大模塊: 引擎配置、流程定義、實例流轉(zhuǎn)、日志處理、計劃任務(wù)

引擎配置:配置引擎實例的數(shù)據(jù)庫連接、日志配置、參數(shù)設(shè)定等。         流程定義:利用xml來描述流程,主要定義任務(wù)節(jié)點,路由、動作事件、變量、人員分配等         實例流轉(zhuǎn):根據(jù)定義運行流程實例         日志處理:輸出日志         任務(wù)計劃:會啟動一個服務(wù),用于處理比如延時啟動,任務(wù)過期等

b、流轉(zhuǎn)中的關(guān)鍵性類設(shè)計包括:

1、流程對象(Process)         2、工作任務(wù)(Task)         3、路由(Trasition)         4、令牌(Token)         5、事件總線與動作處理 (EventBus、ActionHandler)         6、人員分配及委托機制(Assignment、Depute)         7、流程回退處理(RollbackService)         8、消息服務(wù)(NotifyService)

 c、通常引擎控制流程調(diào)度流轉(zhuǎn)核心的調(diào)度算法主要有FSM以及PetriNet兩種,基于調(diào)度算法來完成流程的流轉(zhuǎn):

1、FSM(有限狀態(tài)機)         FSM 的定義為包含一組狀態(tài)集(states)、一個起始狀態(tài)(start state)、一組輸入符號集(alphabet)、一個映射輸入符號和當前狀態(tài)到下一狀態(tài)的轉(zhuǎn)換函數(shù)(transition function)的計算模型。當輸入符號串,模型隨即進入起始狀態(tài)。它要改變到新的狀態(tài),依賴于轉(zhuǎn)換函數(shù)。在有限狀態(tài)機中,會有有許多變量,例如,狀態(tài) 機有很多與動作(actions)轉(zhuǎn)換(Mealy機)或狀態(tài)(摩爾機)關(guān)聯(lián)的動作,多重起始狀態(tài),基于沒有輸入符號的轉(zhuǎn)換,或者指定符號和狀態(tài)(非定有 限狀態(tài)機)的多個轉(zhuǎn)換,指派給接收狀態(tài)(識別者)的一個或多個狀態(tài),等等。遵循FSM流程引擎通過狀態(tài)的切換來完成流程的流轉(zhuǎn)。         2、PetriNet         信息流的一個抽象的、形式的模型。指出一系統(tǒng)的靜態(tài)和動態(tài)性質(zhì)。PetriNet通常表示成圖。遵循PetriNet流程引擎通過令牌來決定流程的流轉(zhuǎn)。         我采用的是第二種PetriNet算法。用Token來表示當前實例運行的位置,也利用token在流程各個點之間的轉(zhuǎn)移來表示流程的推進,如下圖所示:

  image001 

令牌流轉(zhuǎn)邏輯,我把以下類方法都做一個簡化省略了路由選擇及節(jié)點處理細節(jié),好讓大家明白令牌的流轉(zhuǎn):

  1. //令牌Token類中Signal 
  2. public void Signal()  
  3.     fromTask.Leave(executeContext); 
  4.  
  5. //任務(wù)Task類中的Leave 
  6. public void Leave(ExecutionContext executionContext) 
  7.     transition.Take(executionContext); 
  8.  
  9. //路由Transition類中的Take 
  10. public void Take(ExecutionContext executionContext) 
  11.     toTask.Enter(executionContext); 
  12.  
  13. //任務(wù)Task類中的Enter 
  14. public void Enter(ExecutionContext executionContext) 
  15.     Run(executionContext); 

至此令牌成功的從一個節(jié)點轉(zhuǎn)移到下一個節(jié)點了,令牌的流轉(zhuǎn)是工作流的關(guān)鍵,當然不同的節(jié)點處理是有所不同的,其中最復(fù)雜的當數(shù)發(fā)散節(jié)點及聚合節(jié)點了。這里就介紹到這里,不再給大家詳細介紹了。

d、目前我引擎中實現(xiàn)的主要包括以下功能:

1、解釋過程定義     2、控制過程實例—創(chuàng)建、激活、掛起、終止等     3、控制流程調(diào)度流轉(zhuǎn)     4、自定義動作及事件發(fā)布     5、流程變量及工作變量處理     6、任務(wù)計劃,比如延時啟動,任務(wù)過期等     7、委托服務(wù),委托代辦     8、回退服務(wù),回退到任意節(jié)點或召回     9、消息服務(wù),比如認領(lǐng)通知、待辦提醒、催辦消息…     10、流程任務(wù)監(jiān)控服務(wù)     11、日志處理及歷史記錄     12、任務(wù)分配與認領(lǐng)           13、參與者組織模型接口

五、總結(jié)

目前我的這款工作流引擎還在繼續(xù)完善當中,我總結(jié)下它的優(yōu)缺點:

優(yōu)點: 1、它是一款超輕量極或者說是微型的工作流引擎,而且綠色無污染,它只有一個dll,大小僅1M左右。 2、它目前支持SQL Server、MySql、Oracle、SQLite、PostgreSql等多種數(shù)據(jù)庫 3、體型上來說它雖然是微型,但功能上并不算微型,它的設(shè)計結(jié)合了現(xiàn)代的OA及傳統(tǒng)工作流、基本上可以實現(xiàn)我們大多數(shù)的功能需要。 4、它其實是面向開發(fā)者設(shè)計的,從上面初始印象中的實例代碼中大家可以看到,它的接口是很集中、精簡、友好的,讓開發(fā)者容易理解而且使用起來更方便簡單。所以它更適合嵌入到項目中開發(fā)。 缺點: 1、它現(xiàn)在沒有流程設(shè)計器、管理系統(tǒng)、表單設(shè)計器等,充其量只能算是一個類庫,并不是直接拿來就可以使用。 2、目前剛剛完成第一個內(nèi)部版本,而且目前只在我們內(nèi)部項目中使用,所以它不夠成熟,雖然我們會持續(xù)的改進和完善。 3、缺乏成功應(yīng)用的案例。 對于我們自己來說,這些缺點都是我們需要繼續(xù)努力的地方,可能還需要大量的時間來完成。目前來說我們還不打算開源,等它慢慢穩(wěn)定成熟后我們會 考慮是不是開源出來。如果大家有好的建議或有哪方面的疑惑我很樂意給大家解答,或者你也在設(shè)計開發(fā)自己的工作流,我們可以相互交流下。

 

 

 

責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2023-01-04 08:02:16

工作流架構(gòu)設(shè)計

2021-10-14 11:34:05

技術(shù)工作流引擎

2023-07-05 09:48:44

Activiti部署

2011-12-14 09:58:58

JavajBPM

2023-08-02 18:48:23

Flowable工作流引擎

2009-06-11 14:43:34

jbpm工作流引擎jBPM搭建

2009-09-01 18:26:23

C#工作流引擎

2024-10-17 08:39:32

2012-07-23 10:36:46

工作流

2025-10-17 08:22:32

2021-03-12 06:44:09

Argo Workfl開源項目

2021-12-17 08:39:39

SpringbootActiviti網(wǎng)關(guān)路由

2009-06-11 14:33:11

jbpm工作流引擎什么是jbpm

2014-07-31 17:03:12

2023-06-12 08:01:57

Camunda工作流引擎

2025-09-04 01:33:00

Flowable工作流引擎

2022-10-26 08:00:43

Activiti工作流BPM

2012-05-18 16:55:34

JavaBonita

2017-04-05 10:06:59

工作流界面抽象組件

2021-03-05 07:47:07

工作流引擎節(jié)點
點贊
收藏

51CTO技術(shù)棧公眾號

蜜乳av综合| 污污网站在线观看| 日韩av中文在线观看| 在线播放日韩av| 亚洲精品永久视频| 1区2区3区在线视频| 99久久婷婷国产综合精品电影| 91国产高清在线| 谁有免费的黄色网址| 亚洲欧美在线综合| 香港成人在线视频| 日韩欧美亚洲精品| 国产视频在线一区| 久久久xxx| 欧美成人免费一级人片100| 岛国精品资源网站| 日韩久久99| 精品电影在线观看| av电影一区二区三区| 性xxxx搡xxxxx搡欧美| 久久精品国产99国产| 97精品久久久中文字幕免费| 91ts人妖另类精品系列| 欧美亚洲大陆| 欧美剧情电影在线观看完整版免费励志电影| 成人在线视频一区二区三区| 国产视频第一区| 成人美女视频在线看| 国产精品人成电影| 久久久久久久久影院| 中文字幕乱码亚洲无线精品一区| 亚洲免费av片| 国产精品果冻传媒| www.91精品| 欧美亚洲国产一卡| 成人综合视频在线| av老司机在线观看| 亚洲免费观看高清在线观看| 日韩国产一区久久| 性xxxxbbbb| 成人不卡免费av| 99久久自偷自偷国产精品不卡| 91丨九色丨海角社区| 亚洲毛片视频| 久久99热精品| 国产一二三四区| 日韩片欧美片| 在线观看国产精品91| 色噜噜在线观看| 果冻天美麻豆一区二区国产| 日韩一区二区在线观看| 女人高潮一级片| 国产精品99| 欧美亚洲国产一区二区三区va| 黄色动漫在线免费看| 9999精品成人免费毛片在线看 | 欧美日韩国产精品专区| 中文字幕在线亚洲精品| 性开放的欧美大片| 国产精品久久一卡二卡| 亚洲国产精品综合| 中文字幕在线免费| 国产精品网站在线观看| 视频一区二区在线观看| h视频在线播放| 国产欧美一区视频| 亚洲电影一二三区| 最新97超碰在线| 亚洲美女视频一区| 国产午夜精品视频一区二区三区| 尤物在线网址| 亚洲18色成人| 国产极品美女高潮无套久久久| 亚洲最新无码中文字幕久久| 一本一本大道香蕉久在线精品| 激情婷婷综合网| 992tv国产精品成人影院| 欧美影院一区二区三区| 亚洲精品第三页| 欧美精品影院| 亚洲激情视频在线播放| 在线免费观看成年人视频| 精品国产精品| 久久伊人精品视频| 四虎成人精品永久免费av| 性色av一区二区怡红| 国产精品久久激情| 国产美女自慰在线观看| 成人av影院在线| 欧美影视一区二区| 欧美人xxx| 亚洲一区二区三区精品在线| 免费在线a视频| 久久精品xxxxx| 日韩欧美一级片| 一卡二卡三卡四卡| 91蜜臀精品国产自偷在线| 色综合色综合网色综合| 懂色av蜜臀av粉嫩av分享吧最新章节| 毛片基地黄久久久久久天堂| 岛国一区二区三区高清视频| 精品福利视频导航大全| 亚洲青青青在线视频| 国产精品专区在线| 日韩五码电影| 日韩精品免费看| 波多野结衣喷潮| 中文亚洲字幕| 亚洲xxxx3d| 韩国三级av在线免费观看| 亚洲激情av在线| 韩国日本美国免费毛片| 电影一区二区在线观看| 一夜七次郎国产精品亚洲| 欧美一级高潮片| 看国产成人h片视频| 久草精品电影| 日本高清在线观看视频| 欧美专区日韩专区| youjizz.com日本| 99久久婷婷这里只有精品| 欧美一级淫片aaaaaaa视频| 一级黄色片免费| 久久这里只精品最新地址| 在线观看av的网址| 亚洲天堂1区| 日韩精品免费在线视频| 亚洲熟女www一区二区三区| 免费观看日韩电影| 另类视频在线观看+1080p| 污视频网站免费在线观看| 欧美午夜不卡视频| xxxx日本免费| 亚洲一区久久| 国产有色视频色综合| 午夜伦理大片视频在线观看| 欧美日韩不卡一区| 国产精品20p| 国产精品亚洲欧美| 激情小说综合区| 成人三级小说| 欧美成人一区二区三区片免费 | 91精品啪在线观看国产| 这里只有精品在线| 91香蕉嫩草影院入口| 日本中文字幕电影在线免费观看| 色香色香欲天天天影视综合网| 亚洲一区二区乱码| 99亚洲一区二区| 国产精品日韩二区| 不卡的av影片| 亚洲激情在线观看视频免费| 青娱乐国产盛宴| 国产精品系列在线观看| 久久久久福利视频| 国产一区二区三区| 欧美国产日韩中文字幕在线| 99久久免费国产精精品| 伊人开心综合网| 亚洲av午夜精品一区二区三区| 在线看片不卡| 97se视频在线观看| sqte在线播放| 日韩精品999| 伊人久久久久久久久久久久| 国产农村妇女精品| 亚洲高清免费在线观看| 亚洲国产不卡| 91九色露脸| 操人在线观看| 亚洲人成人99网站| 亚洲在线视频播放| 最近中文字幕一区二区三区| 少妇丰满尤物大尺度写真| 极品中文字幕一区| 蜜桃av噜噜一区二区三| 成人在线免费电影网站| 久久福利视频网| 欧美一级性视频| 日韩欧美极品在线观看| 午夜国产福利视频| 国产激情视频一区二区三区欧美| 国产九色porny| 国产在视频线精品视频www666| 国产精品美女在线| 欧洲性视频在线播放| 日韩精品亚洲视频| 在线免费观看一级片| 亚洲在线中文字幕| 久久久久久国产精品无码| 久久精品国产免费| 成人免费在线网| 精品国产中文字幕第一页| 91久久中文字幕| 桃色av一区二区| 最近中文字幕日韩精品| 亚洲AV午夜精品| 在线视频一区二区免费| 丝袜 亚洲 另类 欧美 重口| 久久综合国产精品| 手机在线播放av| 久久综合五月| 欧美日韩dvd| 第一sis亚洲原创| 国产精品乱子乱xxxx| 成人1区2区| 国内偷自视频区视频综合| jzzjzzjzz亚洲成熟少妇| 欧美成人精品福利| 中文字幕在线观看1| 午夜精品一区二区三区免费视频| 久久久久久久久福利| 成人美女在线视频| www.com污| 日本成人在线电影网| 拔插拔插海外华人免费| 久久精品一区二区不卡| 欧美日韩高清免费| 粉嫩久久久久久久极品| 91精品视频在线| 日韩一区二区三区免费| 午夜精品一区二区三区视频免费看 | 毛片aaaaa| 国产精品无遮挡| 欧美色图亚洲激情| 成人精品视频一区| 日本少妇激三级做爰在线| 首页国产欧美日韩丝袜| 老太脱裤让老头玩ⅹxxxx| 欧美精品一级| 国产欧美综合一区| 欧美激情国产在线| 视频一区三区| 神马电影久久| 美国av一区二区三区| 精品深夜福利视频| 成人av免费电影| 日韩影片在线观看| 成人免费高清完整版在线观看| 小明成人免费视频一区| 国产成人亚洲精品| 亚洲欧美小说色综合小说一区| 久久人91精品久久久久久不卡| а天堂中文在线官网| www.亚洲成人| 久久精品视频免费看| 日韩在线观看免费| 麻豆tv免费在线观看| www.亚洲天堂| 免费高清在线观看| 久久九九国产精品怡红院| 麻豆91在线| 另类色图亚洲色图| 永久免费网站在线| 欧美极品美女电影一区| 丁香花在线电影小说观看| 欧美激情视频在线免费观看 欧美视频免费一 | 国语对白做受69按摩| 91国偷自产一区二区三区观看| 国产又大又黄又粗| 91福利在线观看| 中文字幕视频一区二区| 欧美日韩中文精品| 国产乱码精品一区二区三区精东| 欧美精品视频www在线观看 | 国产在线观看免费视频今夜| 亚洲成人资源网| 久久国产视频精品| 欧美最猛黑人xxxxx猛交| 在线观看免费视频一区| 777欧美精品| 黄色三级网站在线观看| 国产视频亚洲精品| 国产高清视频免费最新在线| 日韩视频第一页| 在线黄色网页| 69影院欧美专区视频| 成人看片网站| 亚洲精品日韩激情在线电影| 97久久综合区小说区图片区| 久久久久se| 91一区二区| 91精品国产91久久久久麻豆 主演| 国产情侣一区| 日本免费色视频| 国产成人精品亚洲午夜麻豆| 精品久久久久久中文字幕人妻最新| 国产女主播一区| 久久黄色小视频| 色综合夜色一区| 国产免费黄色片| 亚洲精品日韩欧美| 免费网站免费进入在线| 久久久久久中文| а√天堂资源国产精品| 99在线观看视频网站| 九热爱视频精品视频| 91免费视频黄| 久久久久国产精品一区二区| 一级日本黄色片| 久久久久久久久久久黄色| 永久久久久久久| 一本色道久久加勒比精品| 99久久精品免费看国产交换| 精品亚洲精品福利线在观看| 二区在线播放| 国产精品∨欧美精品v日韩精品| 日韩视频一二区| 日韩在线三区| 一区二区日本视频| 国产黄色一区二区三区| 国产片一区二区| 日韩欧美亚洲视频| 日韩欧美二区三区| 国产日韩精品在线看| 久久久久久久国产| 日本免费一区二区视频| 午夜精品一区二区三区四区| 99在线观看免费视频精品观看| 香蕉视频色在线观看| 欧美韩国日本不卡| 日本黄色一级视频| 亚洲精品乱码久久久久久金桔影视| h视频在线免费观看| 国产精品热视频| 精品一区不卡| 国产精品va无码一区二区| 成人免费不卡视频| 久久久久久久蜜桃| 日韩一区二区免费电影| 伊人在线视频| 国产精品免费久久久久影院| 欧美**字幕| 99999精品视频| jlzzjlzz亚洲日本少妇| 国产在线视频你懂的| 日韩一二三四区| 在线看福利影| 91麻豆精品秘密入口| 午夜性色一区二区三区免费视频| 国内国产精品天干天干| 中日韩免费视频中文字幕| 日韩精品在线一区二区三区| 亚洲男人天堂手机在线| 伊人色综合一区二区三区影院视频| 国产精品一区二区三区免费观看| 欧美日韩调教| 人妻互换一二三区激情视频| 一区二区三区在线看| 精品人妻一区二区三区三区四区 | 国产一区二区三区观看| 亚洲国产精品一区二区久久hs| 欧美日韩小视频| 日本免费在线观看| 成人精品一区二区三区| 亚洲一级淫片| 韩国黄色一级片| 婷婷国产v国产偷v亚洲高清| 三级在线播放| 国产精品久久久久久久久久ktv| 日韩影院二区| 国内精品国产三级国产aⅴ久| 亚洲成人av福利| 日色在线视频| 国产欧美一区二区三区四区| 91精品国产视频| 美女久久久久久久久| 欧美日韩国产中字| wwwww在线观看免费视频| 91精品久久久久久久久久| 欧美精品观看| 欧美无人区码suv| 欧美日韩国产色站一区二区三区| 超碰在线无需免费| 久久久久一区二区| 美女一区二区三区在线观看| 黑人巨大精品一区二区在线| 亚洲精品久久久久中文字幕欢迎你 | 深夜福利在线看| 天天免费综合色| 国产中文在线| 91gao视频| 亚洲综合社区| 久久99久久99精品免费看小说| 精品欧美乱码久久久久久1区2区| 成人免费影院| 粉嫩av一区二区三区天美传媒| 99国产精品国产精品毛片| 中文字幕一区二区三区免费看| 成人444kkkk在线观看| 偷拍亚洲精品| 久久久久久无码精品人妻一区二区| 第一福利永久视频精品| 国产区在线看| 日本高清久久一区二区三区| 国产一区二区不卡| av资源免费观看| 国产视频精品久久久| 奇米777日韩| 日韩中文字幕在线不卡|