999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于有限狀態(tài)機(jī)的工作流引擎的設(shè)計(jì)

2018-08-15 08:02:32劉毅敏
關(guān)鍵詞:引擎可視化模型

鄒 晶 劉毅敏

(武漢科技大學(xué)信息科學(xué)與工程學(xué)院 湖北 武漢 430081)

0 引 言

工作流引擎(WorkFlow Engine)是計(jì)算機(jī)集成應(yīng)用系統(tǒng)的一個(gè)重要組成部分,它在企業(yè)信息化辦公領(lǐng)域已經(jīng)被實(shí)踐證明了能大大提高企業(yè)的業(yè)務(wù)管理水平,被廣泛應(yīng)用在業(yè)務(wù)流程較為復(fù)雜的辦公流程(Office Automation)、電子商務(wù)、企業(yè)資源規(guī)劃等領(lǐng)域。基于工作流引擎的設(shè)計(jì)平臺(tái)是在企業(yè)信息化辦公系統(tǒng)開(kāi)發(fā)之上抽象出來(lái)的“信息化平臺(tái)快速開(kāi)發(fā)中間件”,基于模型或消息驅(qū)動(dòng),提供可視化界面工具定制工作流數(shù)據(jù)模型以及流程流轉(zhuǎn)控制組件,實(shí)現(xiàn)中間件生成基礎(chǔ)軟件模塊、支持可擴(kuò)展的快速開(kāi)發(fā)[1]。大多辦公自動(dòng)化系統(tǒng)的內(nèi)核就是工作流引擎,引擎負(fù)責(zé)驅(qū)動(dòng)業(yè)務(wù)流程運(yùn)轉(zhuǎn)、提供解釋器來(lái)解釋各個(gè)工作流節(jié)點(diǎn)的意義[2],實(shí)例并初始化工作流程,執(zhí)行和操作正在運(yùn)行的流程。它的功能大致都包含有定制模型工具、流程調(diào)度器、外部數(shù)據(jù)訪問(wèn)接口等。由于不同業(yè)務(wù)不同工作流程的差異性和復(fù)雜性,一個(gè)可擴(kuò)展且松耦合的工作流引擎是十分必要的,本文以有限狀態(tài)機(jī)建立流程模型以達(dá)到適應(yīng)復(fù)雜業(yè)務(wù)的要求。

1 相關(guān)工作

國(guó)內(nèi)外大量相關(guān)人員對(duì)工作流引擎系統(tǒng)技術(shù)進(jìn)行了研究和實(shí)現(xiàn),并取得了較好的成果。至今很多公司和活躍的開(kāi)源社區(qū)也推出了一系列工作流引擎,文獻(xiàn)[3]提出了基于JBPM工作流引擎的實(shí)現(xiàn),它設(shè)計(jì)一種TopBPM工作流引擎并應(yīng)用在金融行業(yè),降低了企業(yè)成本,縮短開(kāi)發(fā)時(shí)間。文獻(xiàn)[4]提出了一種基于petri網(wǎng)理論的工作流引擎,并提出了靈活可重用的網(wǎng)絡(luò)信息系統(tǒng)的快速開(kāi)發(fā)應(yīng)用程序的模塊化的系統(tǒng)模型(RADWIS)。類似的還有基于Activity的工作流引擎等。

上述工作流實(shí)現(xiàn)的缺點(diǎn)是對(duì)使用者的要求過(guò)高,學(xué)習(xí)成本較大,考慮到實(shí)際企業(yè)中操作人員的計(jì)算機(jī)水平,本文提出一種新型工作流引擎的實(shí)現(xiàn)機(jī)制,即基于有限狀態(tài)機(jī)和消息驅(qū)動(dòng)機(jī)制,采用Winform技術(shù)設(shè)計(jì)可視化界面,操作人員只需要進(jìn)行相關(guān)跳轉(zhuǎn)條件的設(shè)置即可定制工作流模型,然后采用AOP思想增強(qiáng)模型以適應(yīng)多變的業(yè)務(wù)流程,實(shí)現(xiàn)松耦合和高擴(kuò)展性。

2 工作流與有限狀態(tài)機(jī)

2.1 工作流

工作流是對(duì)生產(chǎn)過(guò)程中某些固定步驟的活動(dòng)而抽象出來(lái)的事物。它通過(guò)將日常業(yè)務(wù)流程劃分成特定固定數(shù)量步驟、由特定角色的人員,按照定義好的規(guī)則來(lái)流轉(zhuǎn)這些流程,從而提高辦公效率[5]。工作流相關(guān)技術(shù)的誕生迅速得到了廣泛的研究和應(yīng)用。

由于業(yè)務(wù)流程在各行業(yè)的區(qū)別很大,工作流基本概念很難達(dá)成共識(shí),所以工作流標(biāo)準(zhǔn)尚未統(tǒng)一,正處于制定階段[6],目前還沒(méi)有一個(gè)標(biāo)準(zhǔn)被大范圍的采用,比較有代表性的規(guī)范有:XPDL、BPML、BPEL、OMG、WSCI等[7]。在這其中,WFMC提出的工作流管理參考模型有著廣泛的研究和拓展應(yīng)用,如圖1所示。

圖1 工作流管理參考模型

2.2 有限狀態(tài)機(jī)

有限狀態(tài)機(jī)(FSM:Finite State Machine)是表示有限多個(gè)狀態(tài)以及在這些狀態(tài)之間遷移和動(dòng)作的數(shù)學(xué)模型。FSM可以被作為對(duì)象行為建模的工具,其作用主要是描述對(duì)象在它的生命周期內(nèi)所經(jīng)歷的狀態(tài)序列,以及如何響應(yīng)來(lái)自外界的各種事件。在計(jì)算機(jī)科學(xué)中也有廣泛的應(yīng)用,例如:計(jì)算機(jī)網(wǎng)絡(luò)中的TCP協(xié)議,在建立可靠傳輸?shù)臅r(shí)候,就使用了有限狀態(tài)機(jī),有LISTEN、ESTABLISHED、WAIT、CLOSED等狀態(tài)。

可以通過(guò)一個(gè)五元組表示FSM數(shù)學(xué)模型:M=(Q,q0,Σ,δ,F(xiàn)),其中Q為狀態(tài)的非空有限集合。q∈Q,q為M的一個(gè)狀態(tài)。q0∈Q,是M的開(kāi)始狀態(tài)(初始狀態(tài)或者啟動(dòng)狀態(tài))。Σ代表輸入字母表。輸入字符串都是Σ上的字符串。δ為狀態(tài)轉(zhuǎn)移函數(shù)(轉(zhuǎn)換函數(shù)或移動(dòng)函數(shù)),δ:Q×ΣQ,對(duì)任意(q,a)∈Q×Σ,δ(q,a)=p表示:M在狀態(tài)q讀入字符a,將狀態(tài)變成p,并將讀頭指向輸入字符串的下一個(gè)字符。F是M的終止?fàn)顟B(tài)集合,若q∈F,則q稱M的終止?fàn)顟B(tài)。

為了描述一個(gè)有限狀態(tài)機(jī)的工作狀況,可采用狀態(tài)轉(zhuǎn)換圖[8]。狀態(tài)轉(zhuǎn)換圖是一個(gè)有向圖,如圖2所示。圖中每個(gè)節(jié)點(diǎn)表示一種狀態(tài),一條邊(或弧)表示一個(gè)狀態(tài)遷移關(guān)系。初始狀態(tài)節(jié)點(diǎn)q0用沒(méi)有起點(diǎn)的箭頭指向它來(lái)表示。若q0狀態(tài)的輸入為a,則進(jìn)入狀態(tài)q1,其他狀態(tài)轉(zhuǎn)移同理。終止?fàn)罟?jié)點(diǎn)q3是機(jī)器完成了它程序之后的狀態(tài),通常表示成雙重圓圈。

圖2 FSM狀態(tài)轉(zhuǎn)換圖

2.3 工作流與有限狀態(tài)機(jī)的映射

工作流程是由具體業(yè)務(wù)多環(huán)節(jié)共同組成,每一個(gè)環(huán)節(jié)又都由多個(gè)不同步驟構(gòu)成,過(guò)去對(duì)工作流建模的思想是基于序列化思想來(lái)進(jìn)行的。這種建模方式具體關(guān)注的是業(yè)務(wù)執(zhí)行過(guò)程和順序,無(wú)法滿足一些復(fù)雜多變的業(yè)務(wù),如有分流、聚合、并行、跳轉(zhuǎn)等特點(diǎn)的工作流程[9]。基于上述問(wèn)題,本文提出基于有限狀態(tài)機(jī)的思想建模,將建模重心從業(yè)務(wù)的過(guò)程轉(zhuǎn)移到待處理的業(yè)務(wù)流程實(shí)體上,無(wú)論流程多復(fù)雜,只需為工作流程定義有限個(gè)狀態(tài)[10],初始狀態(tài)統(tǒng)一定為Start,同時(shí)定義業(yè)務(wù)實(shí)體在某個(gè)狀態(tài)上可能接收到的輸入,再限定狀態(tài)之間跳轉(zhuǎn)的條件,每次輸入中包含了跳轉(zhuǎn)條件就發(fā)生狀態(tài)遷移,進(jìn)入新的狀態(tài),直到到達(dá)終止?fàn)顟B(tài)End。圖3是某石化企業(yè)的一個(gè)工作流程:每一個(gè)矩形代表一個(gè)狀態(tài),箭頭代表跳轉(zhuǎn)方向和條件。當(dāng)條件1滿足時(shí),由ZzSubmit狀態(tài)跳轉(zhuǎn)到JwxAdvice狀態(tài);條件2和條件3進(jìn)行了工作流的分流,滿足條件2進(jìn)入CbConfirm狀態(tài),滿足條件3進(jìn)行ConfirmDone狀態(tài) ,同時(shí)滿足則可兩個(gè)狀態(tài)并行;滿足條件4后進(jìn)行聚合。

圖3 工作流程示例

從上述具體實(shí)例普及到一般情況就是:無(wú)論流程多復(fù)雜都可以分為有限個(gè)步驟,把一個(gè)業(yè)務(wù)流程的每一個(gè)步驟當(dāng)作有限狀態(tài)機(jī)的某一個(gè)狀態(tài)。一個(gè)狀態(tài)在某一條件下遷移到另一個(gè)狀態(tài)完成的動(dòng)作就是流程的流轉(zhuǎn);當(dāng)一個(gè)狀態(tài)有多個(gè)輸入的時(shí)候,流程肯定存在聚合,從不同狀態(tài)能進(jìn)入同一個(gè)狀態(tài);當(dāng)一個(gè)狀態(tài)有多個(gè)輸出的時(shí)候,流程肯定存在分流或者并行,從當(dāng)前狀態(tài)在某一條件下遷移至不同狀態(tài)。

借助上述的映射思想,為了使工作流模型更加飽滿并且適應(yīng)性更強(qiáng),利用AOP(Aspect Oriented Programming)面向切面的編程思想(如圖4所示),在狀態(tài)遷移條件滿足后發(fā)生狀態(tài)跳轉(zhuǎn)首先進(jìn)入一個(gè)前置動(dòng)作Beforeaction,執(zhí)行完前置動(dòng)作再進(jìn)入本狀態(tài)。狀態(tài)信息包含相關(guān)輸入?yún)?shù)設(shè)置,定時(shí)功能設(shè)置,權(quán)限認(rèn)證設(shè)置和基本屬性等,狀態(tài)的執(zhí)行動(dòng)作為Currentaction,且在跳出本狀態(tài)后進(jìn)入后置動(dòng)作Afteraction。通過(guò)對(duì)模型的進(jìn)一步完善,使得工作流模型更加具有可擴(kuò)展性和對(duì)復(fù)雜多變流程的適應(yīng)能力。

圖4 AOP思想映射

3 具體設(shè)計(jì)與實(shí)現(xiàn)

3.1 模塊設(shè)計(jì)

依據(jù)上述的工作流與有限狀態(tài)機(jī)的映射思路,本文將工作流模型劃分為事件、變量、流、權(quán)限等子模塊和流程管理引擎。這些模塊通過(guò).NET平臺(tái)的Winform技術(shù),分別設(shè)計(jì)成可視化的操作控件,可由操作人員(無(wú)需專業(yè)知識(shí))定制工作流模型,下面進(jìn)行各模塊介紹:

事件Event(流程節(jié)點(diǎn))類。其屬性包含了由有限狀態(tài)機(jī)對(duì)工作流程映射之后的所有流程節(jié)點(diǎn)基本信息。節(jié)點(diǎn)還有對(duì)流程調(diào)度前后的業(yè)務(wù)動(dòng)作執(zhí)行方法。一個(gè)事件代表一個(gè)狀態(tài)機(jī)的狀態(tài),一個(gè)完整流程是一個(gè)狀態(tài)機(jī)。

變量Param(變量集合)類。其定義著每個(gè)工作流程的變量集合以及每個(gè)流程節(jié)點(diǎn)相關(guān)的變量。業(yè)務(wù)數(shù)據(jù)都保存在變量表中,通過(guò)解析方法可以讀取并持久化到數(shù)據(jù)庫(kù)中。變量表存儲(chǔ)著狀態(tài)機(jī)各狀態(tài)相關(guān)的輸入和輸出數(shù)據(jù)。

流Flow(流程流轉(zhuǎn))類。這個(gè)類定義著流程流轉(zhuǎn)的規(guī)則,當(dāng)變量表接收到業(yè)務(wù)數(shù)據(jù)輸入時(shí),工作流引擎會(huì)根據(jù)Flow中定義的路由規(guī)則去實(shí)現(xiàn)狀態(tài)轉(zhuǎn)移。每個(gè)流中包含了狀態(tài)機(jī)狀態(tài)遷移的條件。

權(quán)限Authority(權(quán)限認(rèn)證)類。這個(gè)類通過(guò)RABC(基于角色的訪問(wèn)控制Role-Based Access Control)模型提供了一套權(quán)限認(rèn)證的方法,用于在獲取用戶待處理流程時(shí)篩選與用戶相關(guān)流程。

流程管理引擎CWorkFlow(流程管理類)。這個(gè)類包含各個(gè)子模塊的增刪查改方法,如添加流程節(jié)點(diǎn)或變量、修改路由規(guī)則等,還包含了流程XML文檔的解析和反解析方法。用戶在可視化界面的相關(guān)操作通過(guò)此類相應(yīng)進(jìn)行對(duì)有限狀態(tài)機(jī)工作流模型的修改。

通過(guò)OOP面向?qū)ο蟮乃枷朐O(shè)計(jì)的模型主要類及其關(guān)鍵屬性和方法如表1所示。

表1模型中類的主要信息

3.2 模型描述

基于上述的基于有限狀態(tài)機(jī)和AOP建模思想,以及對(duì)工作流模型各模塊的設(shè)計(jì),在可視化界面中定制的工作流模型本文采用可擴(kuò)展的標(biāo)記語(yǔ)言XML對(duì)工作流到有限狀態(tài)機(jī)映射結(jié)果進(jìn)行描述,這種方式方便、直觀且易擴(kuò)展[11]。可直接存入數(shù)據(jù)庫(kù)中,然后使用流程管理類中的相關(guān)API進(jìn)行解析等操作。XML映射文檔中共定義了work_flow、item、params等不同節(jié)點(diǎn),其中關(guān)鍵節(jié)點(diǎn)的含義如表2所示。

表2 XML描述文檔主要節(jié)點(diǎn)

下文為本模型依據(jù)表2所示的節(jié)點(diǎn)描述的工作流樣例的XML文檔片段:

車間名稱″>

……

desc=″車間名稱″>

……

……

3.3 狀態(tài)轉(zhuǎn)移

本文采用產(chǎn)生式規(guī)則的方法來(lái)對(duì)XML模型中流程流轉(zhuǎn)狀態(tài)進(jìn)行推理。一種典型的產(chǎn)生式規(guī)則表示方式的模型如下:

RULE <節(jié)點(diǎn)名>

IF <條件1> then <結(jié)論1>

IF <條件2> then <結(jié)論2>

……

IF <條件n> then <結(jié)論n>

END RULE

其中的條件即是XML模型中的路由規(guī)則,相關(guān)信息由可視化界面定制保存在Flow類中,由路由規(guī)則能確定有限狀態(tài)機(jī)的下一個(gè)狀態(tài)。條件可以由<、>、=等算術(shù)運(yùn)算符或者AND、OR、NOT等邏輯運(yùn)算符式子組成。

狀態(tài)遷移模塊的工作過(guò)程可由算法1表示:

算法1狀態(tài)遷移

輸入:節(jié)點(diǎn)變量集合: Node_items

輸出: 下一個(gè)流程節(jié)點(diǎn):NEXT_Node

1. Node_items input check;

2. UPDATE XML root node “params”;

3. ANALYSIS “Rules” From XML nodes;

4. foreach item in Rules

5. if item is True then

6. DO Beforeaction;

7. GET NEXT_Node And DO Currentaction;

8. DO Afteraction;

9. endif

11. end for

12. UPDATE DATABASE;

13. UPDATE XML NEXT_Node;

14. Return NEXT_Node;

流程的調(diào)度功能主要是由推理機(jī)來(lái)實(shí)現(xiàn),當(dāng)狀態(tài)機(jī)接收輸入后,推理機(jī)根據(jù)XML模型中的路由規(guī)則來(lái)推理出狀態(tài)機(jī)的下一個(gè)狀態(tài)。狀態(tài)的業(yè)務(wù)邏輯使用URL方式保存,即Currentaction、Beforeaction、Afteraction,它可以是頁(yè)面地址或者接口,如果改變只需修改模型中的這些值,實(shí)現(xiàn)工作流程模型和業(yè)務(wù)的松耦合。同時(shí)AOP的思想保證了高擴(kuò)展性從而適應(yīng)多變的工作流程。

如圖5所示XML文檔中存儲(chǔ)了工作流的映射信息,其中包含了當(dāng)前狀態(tài)機(jī)數(shù)據(jù)遷移的條件,它是一個(gè)邏輯表達(dá)式,由狀態(tài)機(jī)中的變量,邏輯符號(hào)和對(duì)應(yīng)的值組成,類似SubmitDone=True。如算法1所示過(guò)程:當(dāng)前節(jié)點(diǎn)的相關(guān)變量有更新的時(shí)候,先做輸入檢查,然后更新?tīng)顟B(tài)機(jī)中變量表中相關(guān)變量的值,然后解析邏輯表達(dá)式,根據(jù)產(chǎn)生式規(guī)則推理是否滿足其中的某些跳轉(zhuǎn)條件,滿足則遷移至下一狀態(tài),不滿足則保持當(dāng)前狀態(tài)。狀態(tài)遷移前后執(zhí)行基于AOP思想的Beforeaction和Afteraction業(yè)務(wù)事件,最后更新?tīng)顟B(tài)機(jī)的XML描述到數(shù)據(jù)庫(kù)。

圖5 狀態(tài)轉(zhuǎn)移

4 應(yīng)用實(shí)例

本文設(shè)計(jì)的工作流引擎工作在某石化企業(yè)已經(jīng)得到應(yīng)用。圖6展示的是本課題為本文所述的工作流引擎設(shè)計(jì)開(kāi)發(fā)的一個(gè)可視化模型定制工具整體效果圖。

圖6 模型定制工具界面

圖7展示的為定制工具頂上一行的菜單欄,包括新建、打開(kāi),保存工作流模型文件等操作按鈕和工作流模型中添加事件、流、變量和屬性設(shè)置等操作控件,以及保存模型至數(shù)據(jù)庫(kù)的相關(guān)操作。

圖7 定制工具菜單欄

由前文所述的工作流到有限狀態(tài)機(jī)的映射和OOP模塊設(shè)計(jì)可以知道,把工作流的每一個(gè)步驟當(dāng)成有限狀態(tài)機(jī)的某一個(gè)狀態(tài),也就是一個(gè)Event流程節(jié)點(diǎn)。工作流的流轉(zhuǎn)、分流、聚合、并行是通過(guò)狀態(tài)機(jī)的遷移來(lái)完成的,也就是流程流轉(zhuǎn)Flow,工作流程的業(yè)務(wù)數(shù)據(jù)都存入Param變量中。所以為了降低使用者的操作難度,在繪制模型的時(shí)候,使用者只需通過(guò)了解業(yè)務(wù)流程,把流程分解成若干步,并通過(guò)界面進(jìn)行每個(gè)步驟的參數(shù)、屬性和步驟跳轉(zhuǎn)條件的設(shè)置。

下面展示了通過(guò)可視化界面進(jìn)行模型設(shè)計(jì)的具體步驟,如圖8-圖10所示。首先新建工作流,然后通過(guò)點(diǎn)擊新增事件、流、變量等操作按鈕繪制工作流,在輸入界面設(shè)置事件、流、變量等參數(shù)屬性,對(duì)應(yīng)狀態(tài)機(jī)的各個(gè)狀態(tài)數(shù)據(jù)、相關(guān)輸入輸出參數(shù)和狀態(tài)遷移條件,無(wú)需專業(yè)知識(shí)即可保存模型,且可自動(dòng)生成XML文檔,完成工作流的建模映射,也可序列化到數(shù)據(jù)庫(kù)。這樣降低了對(duì)工作人員專業(yè)知識(shí)的要求,工作流引擎作為辦公自動(dòng)化的中間件,高擴(kuò)展的設(shè)計(jì)使得業(yè)務(wù)變動(dòng)帶來(lái)的工作量大量減少。

圖8 新建工作流模型

圖9 繪制工作流模型

圖10 參數(shù)設(shè)置

5 結(jié) 語(yǔ)

本文從應(yīng)用出發(fā),以適應(yīng)多變的工作流程和復(fù)雜的業(yè)務(wù)邏輯和降低用戶和開(kāi)發(fā)人員工作流和使用難度為宗旨,設(shè)計(jì)并實(shí)現(xiàn)了如上的一個(gè)基于有限狀態(tài)機(jī)建立工作流模型的工作流引擎。把工作流程的每一步驟當(dāng)成一個(gè)狀態(tài),一個(gè)流程當(dāng)作一個(gè)狀態(tài)機(jī),復(fù)雜業(yè)務(wù)也可以通過(guò)狀態(tài)機(jī)分流、聚合、并行、跳轉(zhuǎn)等操作來(lái)描述。模型節(jié)點(diǎn)中包含了流程基本信息、路由規(guī)則、變量集合等模塊,并基于面向切面的編程思想提高流程節(jié)點(diǎn)的擴(kuò)展性,增加BeforeAction、AfterAction等業(yè)務(wù)URL地址,工作流引擎完成了統(tǒng)一的流程調(diào)度和數(shù)據(jù)調(diào)度。如果從用戶的角度來(lái)看,只需在C/S端的可視化定制工作進(jìn)行業(yè)務(wù)定制,并在Web端界面進(jìn)行工作數(shù)據(jù)輸入,極大地降低了使用難度。如果從程序設(shè)計(jì)人員的角度來(lái)看,當(dāng)業(yè)務(wù)邏輯發(fā)生改變時(shí),工作量也會(huì)大幅減小,業(yè)務(wù)重新定制后大部分工作只是參數(shù)設(shè)置改動(dòng)。本工作流引擎已在某石化企業(yè)獲得了較好的應(yīng)用效果,具有廣闊的應(yīng)用前景。

猜你喜歡
引擎可視化模型
一半模型
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運(yùn)行動(dòng)態(tài)分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
重要模型『一線三等角』
基于CGAL和OpenGL的海底地形三維可視化
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
“融評(píng)”:黨媒評(píng)論的可視化創(chuàng)新
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
3D打印中的模型分割與打包
無(wú)形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 亚洲男人的天堂网| 在线观看免费AV网| 亚洲人成网站在线观看播放不卡| 91极品美女高潮叫床在线观看| 亚洲精品动漫| 国产亚洲一区二区三区在线| 国产精品原创不卡在线| 青青青国产免费线在| 日韩黄色在线| 香蕉精品在线| 国内熟女少妇一线天| 久久香蕉国产线看观看精品蕉| 日本午夜精品一本在线观看| 影音先锋丝袜制服| 美女潮喷出白浆在线观看视频| 日韩无码视频专区| 亚洲愉拍一区二区精品| 欧美a√在线| 国产一二视频| 国产91精选在线观看| 综1合AV在线播放| 原味小视频在线www国产| 72种姿势欧美久久久大黄蕉| 免费毛片在线| 亚洲美女视频一区| 91小视频在线观看| 狠狠v日韩v欧美v| 天天综合网站| 看国产毛片| 亚洲无码日韩一区| 亚洲精品黄| 色综合久久久久8天国| 欧美成人精品一区二区| 日本国产精品一区久久久| 中文字幕色在线| 亚洲免费成人网| 午夜精品区| 免费观看成人久久网免费观看| 无码一区18禁| 青青热久免费精品视频6| 亚洲性影院| 伊人久久大线影院首页| 国产成人一区二区| 日韩午夜福利在线观看| 中文字幕乱妇无码AV在线| 国产精品嫩草影院av| 999精品在线视频| 亚洲视频一区在线| 青青草原国产一区二区| 亚洲另类国产欧美一区二区| 超清无码一区二区三区| 精品人妻无码区在线视频| 亚洲成人黄色在线| 91视频区| 国产精品免费电影| 国产v精品成人免费视频71pao | 亚洲91精品视频| 亚洲一区二区无码视频| 六月婷婷激情综合| 国产69精品久久久久孕妇大杂乱 | 亚洲第一页在线观看| 色婷婷狠狠干| 精品五夜婷香蕉国产线看观看| 国产成人一区二区| 岛国精品一区免费视频在线观看| 国产91色在线| 亚洲AV色香蕉一区二区| 亚洲黄色激情网站| 在线综合亚洲欧美网站| 欧亚日韩Av| 久久国产精品麻豆系列| 99久久性生片| 福利视频久久| 亚洲天堂久久| 特级aaaaaaaaa毛片免费视频| www.亚洲天堂| 亚洲免费毛片| 精品久久久久久久久久久| 亚洲AV成人一区国产精品| 性视频久久| 国产成人久久综合777777麻豆 | 欧美专区日韩专区|