精品欧美一区二区三区在线观看 _久久久久国色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高清| 亚洲乱码在线观看| 亚洲经典视频在线观看| 中文字幕日韩欧美| 欧美深性狂猛ⅹxxx深喉| 欧美日一区二区三区| 亚洲午夜激情av| 亚洲女人毛片| 性感美女福利视频| 国产麻豆精品95视频| 91av在线国产| 欧美成人综合色| 精品国产一区二区三区久久久樱花| 欧美一区二区三区系列电影| 久久久久久久久久福利| 黑人极品ⅴideos精品欧美棵| 国产欧美一区二区精品仙草咪| 国产精品久久国产三级国电话系列| 中文字幕 亚洲视频| 亚洲美女色禁图| 欧美裸体男粗大视频在线观看| 日本aaa视频| **爰片久久毛片| 欧美精品国产精品| 91淫黄看大片| 婷婷电影在线观看| 亚洲一区二区三区不卡国产欧美| 中文字幕一区二区三区四区五区六区 | 亚洲天堂a在线| 欧洲精品码一区二区三区免费看| 欧美视频久久久| 国产成人在线视频播放| 国产欧美亚洲精品| 免费黄色一级大片| 日日夜夜精品视频免费| 97涩涩爰在线观看亚洲| 久久精品一区二区三| 亚洲人metart人体| 久久九九国产精品怡红院| 亚洲女同二女同志奶水| 清纯唯美亚洲综合一区| 一本色道久久88精品综合| 久久av无码精品人妻系列试探| 欧美午夜18电影| 日韩成人激情视频| 久久久久9999| 亚洲大片精品免费| 亚洲欧美国产精品| 国产全是老熟女太爽了| 欧美美乳视频| 中文字幕国产精品| 四虎地址8848| 一本一本久久a久久综合精品| 色多多国产成人永久免费网站| 超碰人人干人人| 色爱综合网欧美| 久久精品视频播放| 91视频综合网| 亚洲第一毛片| 欧美在线视频免费观看| 亚洲欧美一二三区| 日日骚欧美日韩| 国产欧美日韩精品专区| 一级片在线观看视频| 精品无人码麻豆乱码1区2区 | 欧美高清视频免费观看| 久久99久久98精品免观看软件| 黄色工厂这里只有精品| 午夜精品久久17c| 亚洲不卡在线视频| 蜜桃精品视频在线| 91久久精品日日躁夜夜躁国产| 国产免费久久久| 成人听书哪个软件好| 久久久久久久久久久久久9999| 美国成人毛片| 综合久久给合久久狠狠狠97色 | 久久精品道一区二区三区| 青青草成人在线| 一级视频在线播放| 福利一区福利二区| 欧美成人综合一区| 天堂中文а√在线| 亚洲一区二区欧美| 久久黄色免费看| 久久精品九色| 日韩精品免费综合视频在线播放| 亚洲图片第一页| 欧美日韩视频一区二区三区| 2019日本中文字幕| 中文在线免费看视频| 成人夜色视频网站在线观看| 欧美一区二区高清在线观看| 91国内在线| 色综合久久综合中文综合网| 黄色三级视频在线播放| 亚洲色图美女| 欧美大学生性色视频| 国产成人无码av| 国产成人无遮挡在线视频| 欧美久久在线| 国产经典三级在线| 欧美日韩精品系列| 人妻无码一区二区三区| 国产精品成人一区二区不卡| 2020久久国产精品| 国产精品视频第一页| 久久综合色综合88| www.99riav| 成人四虎影院| 日韩毛片在线观看| 美女福利视频在线观看| 日本美女一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 免费a在线看| 日本大香伊一区二区三区| 一边摸一边做爽的视频17国产| 色综合天天爱| 国产精品爱啪在线线免费观看| 成人午夜视频一区二区播放| 中文字幕亚洲一区二区av在线| av黄色在线网站| 加勒比色综合久久久久久久久| www国产精品com| 国产精品sm调教免费专区| 99久久婷婷国产综合精品 | 久久综合导航| 精品日韩电影| brazzers在线观看| 日韩欧美综合一区| 成人在线观看高清| 久久国产免费看| 手机看片福利永久国产日韩| 成年女人在线看片| 精品国产3级a| 久久免费精彩视频| 国产精品18久久久久| 欧美 亚洲 视频| 天堂av一区| 欧美精品亚州精品| www.国产.com| 亚洲狠狠爱一区二区三区| 制服下的诱惑暮生| 欧美 日韩 国产 一区| 亚洲xxxx18| 污片在线免费观看| 精品免费视频.| 精品人妻在线播放| 粉嫩aⅴ一区二区三区四区| 91麻豆天美传媒在线| 视频精品一区| 欧美激情一区二区久久久| 亚洲AV午夜精品| 亚洲一区二区偷拍精品| 美女伦理水蜜桃4| 亚洲美女视频在线免费观看| 久久综合婷婷综合| 日韩天堂在线| 日韩中文在线观看| 国产日韩欧美视频在线观看| 亚洲精品乱码久久久久久日本蜜臀| 26uuu国产| 在线国产欧美| 日韩av高清| 成人51免费| 欧美极品美女视频网站在线观看免费| 亚洲第一色视频| 好吊成人免视频| 九九热免费在线| 国产在线视视频有精品| 国产专区在线视频| 欧美爱爱网站| 国产精品久久久久久久av电影 | 亚洲AV无码成人片在线观看| 天天综合天天综合色| wwwwxxxx国产| 精品亚洲成a人| av女优在线播放| 国产一区二区在线| 999视频在线观看| 蜜桃麻豆影像在线观看| 在线观看欧美视频| 亚洲国产精品欧美久久| 色婷婷综合久久久中文字幕| 九九热视频在线免费观看| 岛国精品在线观看| 日本熟妇人妻中出| 国产精品二区影院| 日韩久久精品一区二区三区| 韩国三级大全久久网站| 欧美综合在线观看| 四虎影院观看视频在线观看 | 麻豆网站视频在线观看| 欧美精品一区二区三区视频| 波多野结衣电车| 亚洲影视资源网| 色撸撸在线视频| www.欧美精品一二区| 亚洲欧美日韩一级| 国产精品久久久久久久久久妞妞| 精品中文字幕av| 手机在线免费观看av| 精品亚洲aⅴ在线观看| 91丨porny丨在线中文 | 国产毛片在线视频| 色综合久久88色综合天天6| 成熟的女同志hd| 欧美国产日韩精品免费观看| 黑人玩弄人妻一区二区三区| 捆绑变态av一区二区三区| 日韩av片在线看| 国产精品久久| 熟女熟妇伦久久影院毛片一区二区| 亚洲bt欧美bt精品777| 亚洲a级在线观看| 91在线成人| 欧美影院在线播放| 激情av在线| 欧美精品日韩三级| 国产精品刘玥久久一区| 一区二区av在线| 三级国产在线观看| 亚洲成人激情在线观看| 国产女人18毛片水18精| 欧美三级在线看| 男人的天堂av网站| 日韩欧美国产成人| 日韩免费一级片| 亚洲国产视频一区| 超碰手机在线观看| 亚洲少妇屁股交4| 中文字幕求饶的少妇| 亚洲国产经典视频| 娇妻被老王脔到高潮失禁视频| 久久先锋资源网| 给我看免费高清在线观看| 97se亚洲国产综合在线| 在线免费观看污视频| av亚洲精华国产精华| 国产性生活毛片| 99视频国产精品| 国产精品无码在线| www国产亚洲精品久久麻豆| 国产一级二级视频| 91视视频在线观看入口直接观看www| 午夜福利三级理论电影| 高清在线观看日韩| 一区二区三区四区影院| 成人综合婷婷国产精品久久| 香蕉久久久久久av成人| www.一区二区| 精品无码在线视频| 久久久www成人免费无遮挡大片| 成人免费av片| 日本一区二区三区在线观看| 久久久99999| 亚洲精品中文在线| 国产精品111| 精品久久久久久久久久| 秋霞精品一区二区三区| 欧美写真视频网站| 97成人在线观看| 日韩精品中文字幕在线一区| 蜜臀久久99精品久久久| 国产丝袜精品第一页| av在线播放免费| 久久精品91久久香蕉加勒比| 色呦呦呦在线观看| 欧洲亚洲免费视频| 欧美视频免费看| 国产高清一区视频| 私拍精品福利视频在线一区| 午夜久久资源| 红桃视频国产精品| 人妻熟女一二三区夜夜爱| 麻豆91在线播放免费| xxxxwww一片| 久久先锋影音av鲁色资源网| 91n在线视频| 五月婷婷激情综合| 中文有码在线播放| 精品剧情v国产在线观看在线| 青青青草原在线| 久久久极品av| 91久久国产综合久久91猫猫| 91久久国产精品| 亚洲国产欧美日韩在线观看第一区| 亚洲图片小说在线| 亚洲精品乱码| 天堂av.com| 国产女同互慰高潮91漫画| 国产97免费视频| 欧美最猛黑人xxxxx猛交| 国产高清免费在线观看| 亚洲色图色老头| 污污视频在线| 国产精品最新在线观看| 欧美成人基地| 欧美日韩午夜爽爽| 日本欧美大码aⅴ在线播放| 无码成人精品区在线观看| 中文字幕在线观看一区二区| 欧美精品亚洲精品日韩精品| 91精品国产综合久久久久久久 | 男人日女人下面视频| 黄色资源网久久资源365| 9.1成人看片免费版| 亚洲精品乱码久久久久久| 伊人亚洲综合网| 精品香蕉在线观看视频一| caoporm免费视频在线| 国产成人精品久久| 日韩丝袜视频| 欧日韩免费视频| 国产美女一区二区| 日韩亚洲欧美中文字幕| 欧洲国产伦久久久久久久| 婷婷在线免费观看| 欧美国产日韩一区二区| 亚洲男人在线| 亚洲成色最大综合在线| 久久精品麻豆| 久久亚洲AV成人无码国产野外| 亚洲影视资源网| 亚洲国产999| 欧美成人精品一区| 亚洲精品tv| 亚洲在线不卡| 欧美aa在线视频| 91麻豆制片厂| 91传媒视频在线播放| 日韩电影网址| 欧美最顶级的aⅴ艳星| 日韩中文av| 狠狠97人人婷婷五月| 99久久精品国产一区| 日本在线视频免费观看| 亚洲电影免费观看高清完整版在线观看 | 精品福利一区| 五十路熟女丰满大屁股| www.爱久久.com| 奇米影视第四色777| 亚洲精品91美女久久久久久久| а√天堂中文在线资源8| 国内精品视频免费| 国产欧美一区二区色老头 | 国产精品三级电影| 亚洲一卡二卡在线| 色yeye香蕉凹凸一区二区av| 亚洲精品自拍| 青青草视频在线视频| 成人夜色视频网站在线观看| 日本一二三区视频| 亚洲精品网址在线观看| 亚洲wwww| 在线国产伦理一区| 国产精品一区二区久久精品爱涩| 久草成人在线视频| 亚洲国产一区二区三区在线观看| 国模私拍一区二区国模曼安| 欧美日韩大片一区二区三区| 久久婷婷影院| 国产中文字幕久久| 日韩欧美一级在线播放| 99爱在线视频| 欧美日韩高清免费| 狠狠久久亚洲欧美| 国产一级特黄视频| 亚洲三级av在线| 久久精品九色| 国产精品视频一区二区三区四区五区| 国产偷国产偷精品高清尤物 | 欧美黑吊大战白妞| 亚洲精品动漫100p| 国产精品久久久久77777丨| 久久天天东北熟女毛茸茸| 99久久亚洲一区二区三区青草| 中文字幕+乱码+中文| 欧美激情一级精品国产| 国产真实有声精品录音| 天天久久综合网| 欧美色图在线视频| 欧美日韩在线看片| 国产日韩欧美一区二区| 久久中文在线| 久久精品视频6| 中文字幕国内精品| 国产精品网在线观看| 亚洲天堂av线| 亚洲.国产.中文慕字在线| 99riav在线| 精品无人区一区二区三区竹菊| 免费高清在线一区|