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

SPEM2XPDL模型轉(zhuǎn)換研究

2007-01-01 00:00:00萬志剛周津慧
計算機應用研究 2007年4期

摘要:將軟件過程技術與工作流技術相結(jié)合,嚴格定義了SPEM2XPDL模型轉(zhuǎn)換規(guī)則,設計并實現(xiàn)了一個SPEM2XPDL模型轉(zhuǎn)換引擎。此引擎將SPEM描述的軟件過程轉(zhuǎn)換為符合工作流定義(XPDL)的工作流過程,從而可基于工作流管理系統(tǒng)對軟件過程提供執(zhí)行支持。SPEM模型經(jīng)引擎轉(zhuǎn)換后在工作流管理系統(tǒng)Shark上的成功執(zhí)行表明了引擎的可用性。

關鍵詞:軟件過程工程元模型; 可擴展標記語言過程定義語言; 軟件過程; 工作流; 模型轉(zhuǎn)換

中圖分類號:TP31152文獻標志碼:A

文章編號:10013695(2007)04004205

0引言

SPEM(Software Process Engineering Metamodel)[1]是OMG(Object Management Group)在2002年提出的軟件過程建模標準。它定義了軟件過程建模中所需要的元素集合,適合于描述任何軟件過程。近年來,SPEM取得了廣泛應用,出現(xiàn)了很多基于SPEM的軟件過程模型,如IBM的RUP、DMR的Macroscope以及Unisys的QuadCycle等[1]。然而,SPEM側(cè)重于過程建模中的過程描述方面,在過程執(zhí)行支持方面做得不夠[2]

為了支持軟件過程的執(zhí)行,人們做了大量工作。20世紀90年代后,研究人員發(fā)現(xiàn)盡管軟件過程和工作流各有特點,但它們遵循相同的過程范型[3,4]。人們在將軟件過程模型轉(zhuǎn)換到工作流模型并通過WfMS(Workflow Management System)執(zhí)行方面進行了研究,且取得了一些成果。Ghan D.K.C.等人[5]將ISPW6軟件過程模型轉(zhuǎn)換為用Valmont語言定義的Liaison模型,并在支持該模型的自定義WfMS上執(zhí)行。Barnes A.等人[6]將軟件設計階段的過程模型轉(zhuǎn)換為用WPDL(Workflow Process Definition Language)描述的工作流模型,并在實現(xiàn)工作流參考模型的WfMS上執(zhí)行。由于這些研究通常采用的軟件過程元模型不同,元模型到工作流的轉(zhuǎn)換規(guī)則也不相同,使得它們的研究成果得不到重用,軟件過程模型之間也不好交互。

將SPEM模型轉(zhuǎn)換到XPDL[7](XML Process Definition Language)模型,并利用成熟的WfMS,如IBM WebSphere MQ Workflow或開源社區(qū)的Shark[8]等,來解決對SPEM模型的過程支持問題。其優(yōu)點表現(xiàn)在:

(1)SPEM作為廣泛應用的軟件過程建模標準,本身可以保證SPEM模型的可重用性以及可交互性,減少了因重復開發(fā)軟件過程元建模所帶來的巨大時間和成本支出。

(2)XPDL作為WfMC(Workflow Management Coalition)制定的工作流過程定義標準,不僅可以帶來工作流所具有的開放性、靈活性、強大的過程支持能力,而且還保證了轉(zhuǎn)換后模型的可重用性以及可交互性。

(3)SPEM與具體的軟件開發(fā)方法無關,可以對任何具體的軟件開發(fā)方法,如XP、RUP等提供過程執(zhí)行支持。

實現(xiàn)SPEM模型到XPDL模型的轉(zhuǎn)換,要解決兩大問題,即模型之間的轉(zhuǎn)換規(guī)則以及轉(zhuǎn)換的具體實現(xiàn)問題。

1SPEM和XPDL元模型簡介

1.1SPEM

SPEM的核心概念是:軟件過程是ProcessRole之間的協(xié)作,而ProcessRole對WorkProduct執(zhí)行Activity操作。

在SPEM元模型中,SPEM_Extensions包為描述軟件過程模型添加了相應的元素及語義。Process Structure子包包含構(gòu)成過程的主要元素以及元素之間的關系,是SPEM元模型中的主要內(nèi)容,如圖1所示。

圖9中WorkProduct表示過程執(zhí)行中所涉及的任何制品;WorkProductKind表示W(wǎng)orkProduct的類別;WorkDefinition表示過程任務定義,WorkDefinition與ProcessPerformer關聯(lián),表示該WorkDefinition的執(zhí)行角色。WorkDefinition可包含子WorkDefinition,形成WorkDefinition的層次關系。Activity表示由ProcessRole所執(zhí)行的活動,作為WorkDefinition的子類,Activity同樣也可包含子Activity,從而構(gòu)成Activity之間的層次關系;此外,Activity還可以包含原子元素Step。

1.2XPDL

XPDL元模型描述了工作流過程定義中要用到的實體以及實體屬性。其結(jié)構(gòu)如圖2所示。

圖2中Workflow Process Definition實體為過程中的其他實體提供上下文信息。Workflow Process Activity由一個或多個活動組成。活動可以是BlockActivity,它與Activity Set相關聯(lián);也可以是SubProcesss Definition,它與其他Workflow Process Definition相關聯(lián);還可以是Atomic Activity,只負責在輸入轉(zhuǎn)移和輸出轉(zhuǎn)移中進行路由。Transition Information描述活動間的轉(zhuǎn)移信息。Workflow Participant Specification描述在過程定義中各個活動的執(zhí)行者所需要的資源。Workflow Application Specification描述工作流執(zhí)行時需要調(diào)用的應用程序或者接口。Workflow Relevant Data描述工作流執(zhí)行時,每個過程實例都需要用到的或創(chuàng)建的數(shù)據(jù)。

2SPEM2XPDL模型轉(zhuǎn)換規(guī)則

實現(xiàn)模型轉(zhuǎn)換,首先要確定模型之間的轉(zhuǎn)換規(guī)則,即要確定SPEM模型元素到XPDL模型元素的轉(zhuǎn)換規(guī)則以及SPEM模型元素關系到XPDL模型元素關系的轉(zhuǎn)換規(guī)則。因此,SPEM2XPDL模型轉(zhuǎn)換規(guī)則包括兩類,即元素的轉(zhuǎn)換規(guī)則和關系的轉(zhuǎn)換規(guī)則。

2.1元素轉(zhuǎn)換規(guī)則

當模型元素被轉(zhuǎn)換時,元素的屬性也要同時被轉(zhuǎn)換。主要元素轉(zhuǎn)換規(guī)則如下(SPEM->XPDL):

(1)Package, Discipline, Phase, Lifecycle->Package

利用XPDL Package元素的擴展屬性來標志不同SPEM元素。例如<ExtendedAttribute Name=\"type\" Value=\"Phase\"/>表示SPEM Package元素。

(2)Process->WorkflowProcess

將SPEM Process元素轉(zhuǎn)換為XPDL中的WorkflowProcess元素。

(3)Iteration, Activity, Step->Activity

Iteration轉(zhuǎn)換為XPDL中實現(xiàn)類型為“Subflow”的Activity;包含Step的Activity轉(zhuǎn)換為XPDL中活動類型為“BlockActivity”的Activity,包含子Activity的Activity轉(zhuǎn)換為實現(xiàn)類型為“Subflow”的Activity;Step轉(zhuǎn)換為普通Activity。

(4)WorkProduct,WorkProductKind->ExtendedAttribute

WorkProduct和WorkProductKind均轉(zhuǎn)換為XPDL活動的擴展屬性。擴展屬性名分別為“WorkProduct”和“WorkProductKind”。

(5)ProcessPerformer->Participant

轉(zhuǎn)換為過程執(zhí)行者,并設置執(zhí)行者的類型屬性為“Role”。

(6)ProcessRole->ExtendedAttribute

轉(zhuǎn)換為過程活動的擴展屬性。擴展屬性名為“Assistant”。

為支持工作流過程的執(zhí)行,在XPDL的Activity元素中存在一些過程執(zhí)行屬性,而它們在SPEM模型中沒有對應表示。對于這種屬性,本文為其設定了默認值。比如XPDL Activity中的Start Mode屬性默認設置為“Manual”;Transition Restrictions屬性默認設置為“AND Join”和“AND Split”。

2.2關系轉(zhuǎn)換規(guī)則

在SPEM中,活動之間的關聯(lián)關系有多種,而XPDL中活動的關聯(lián)關系只有一種,即活動的轉(zhuǎn)換關系。因此,需要解決SPEM的多種關聯(lián)關系與XPDL的單一關聯(lián)關系的映射問題。為此,將SPEM活動關系分類,針對每個分類,建立它到XPDL活動關系的轉(zhuǎn)換規(guī)則。

(1)層次關系(LR)

層次關系有兩種,即Package和其包含元素的所屬關系以及Activity和Step之間的包含關系。在XPDL中,層次關系表現(xiàn)為Package以及ActivitySet與Activity之間的關系。

(2)轉(zhuǎn)換關系(TR)

轉(zhuǎn)換關系有兩種:活動之間的Precedes關系和活動—產(chǎn)品關系。活動—產(chǎn)品關系要求活動a1的輸出產(chǎn)品w是活動a2的輸入產(chǎn)品。在XPDL中,轉(zhuǎn)換關系對應于活動之間的Transition關系。

(3)角色—活動關系(RAR)

角色—活動關系有兩種:WorkDefinition和ProcessPerformer之間的Perform關系;Activity和 ProcessRole之間的Assistant關系。在XPDL中,前者表現(xiàn)為活動的執(zhí)行者,后者對應于活動的擴展屬性。

(4)其他關系(OTR)

除了上述關系之外,其他關系均用OTR進行描述。其中如WorkProduct之間的Trace、Impact等關系,由于缺少對應語義,將不能轉(zhuǎn)換到XPDL中。

3SPEM2XPDL模型轉(zhuǎn)換引擎

3.1系統(tǒng)架構(gòu)

基于SPEM和XPDL元模型結(jié)構(gòu)以及模型轉(zhuǎn)換規(guī)則,本文設計并實現(xiàn)了一個SPEM2XPDL模型轉(zhuǎn)換引擎。其系統(tǒng)架構(gòu)如圖3所示。

SPEM模型和XPDL模型一般存儲為XML文件格式。而模型在引擎內(nèi)部會被表示為DOC形式(XML文件在內(nèi)存中的組織形式,可通過DOM、SAX等文檔解析技術對它進行操作)以及Java對象形式。

SPEM2XPDL模型轉(zhuǎn)換引擎按功能主要分為:

(1)預處理器。由SPEM輸入預處理器和XPDL輸出預處理器組成。SPEM輸入預處理器負責將SPEM模型(XML格式)轉(zhuǎn)換為SPEM DOC;XPDL輸出預處理器負責將XPDL DOC轉(zhuǎn)換為XPDL模型(XML)。

(2)SPEM對象生成器。負責將SPEM DOC轉(zhuǎn)換為SPEM Java對象。

(3)XPDL DOC生成器。負責將XPDL Java對象轉(zhuǎn)換為XPDL DOC。

(4)轉(zhuǎn)換規(guī)則庫。定義SPEM Java對象到XPDL Java對象的轉(zhuǎn)換規(guī)則。

(5)對象轉(zhuǎn)換器。依據(jù)轉(zhuǎn)換庫中定義的轉(zhuǎn)換規(guī)則,負責執(zhí)行對象轉(zhuǎn)換。

3.2系統(tǒng)各部分實現(xiàn)

(1)預處理器

SPEM2XPDL預處理器分為兩個部分,即SPEM模型輸入預處理器和XPDL模型輸出預處理器。

SPEM模型一般是在UML CASE工具中建立的,但具體實現(xiàn)時各工具通常在模型中添加了與工具相關的模型信息。例如與模型顯示相關的坐標信息等。因此各工具產(chǎn)生的SPEM模型文件并不一樣。SPEM模型輸入預處理的目的是將SPEM模型文件中與工具相關的內(nèi)容清除,以得到真正有效的SPEM模型文件。其工作流程如圖4所示。

SPEM XML文件經(jīng)過XML凈化后得到簡潔有效的XML文件。此文件如果通過XML格式驗證,則進行XML解析后得到SPEM DOC;否則,系統(tǒng)提示“SPEM文件格式不正確”出錯信息。XML凈化指通過配置文件來配置UML CASE工具對應的XSL文件,然后對SPEM XML文件進行格式轉(zhuǎn)換;XML格式驗證指檢查文件是否符合SPEM DTD或Schema定義;XML解析指解析XML文件為內(nèi)存中DOC對象,以dom4j編程實現(xiàn)。

類似地,XPDL輸出預處理器工作流程如圖5所示。

XML填充指根據(jù)內(nèi)存DOC對象構(gòu)建XML文件,以dom4j編程實現(xiàn)。

(2)SPEM對象生成器

SPEM對象生成器將SPEM DOC轉(zhuǎn)換為SPEM模型在引擎中的對象表示,即SPEM Java對象。本文對SPEM模型進行了面向?qū)ο蠼#漕惤Y(jié)構(gòu)如圖6所示。SPEM Java對象就是這些類的運行實例。

接口AssociationEnd表示關聯(lián)關系的關聯(lián)端,其特定子類分別定義特定的關聯(lián)端類型。例如Actor表示過程執(zhí)行者,是對ProcessPerformer、ProcessRole元素的建模;WorkProduct代表活動的工作產(chǎn)品,是對WorkProduct、WorkProductKind元素的建模;AbstractActivity類的具體子類Activity以及Step則分別表示過程活動以及過程步驟,類Activity以及Step則分別表示過程活動以及過程步驟,是對Iteration、Activity元素以及Step元素的建模。抽象類Association表示關聯(lián)關系,其特定子類分別定義特定的關聯(lián)關系。例如PerformAssociation、AssistAssociation描述了Actor與WorkProduct之間的RAR關系;PrecedeAssociation、StepAssociation、InputAssociation以及OutputAssociation關系則分別描述了Activity與Activity、Step與Step、WorkProduct與Activity之間的TR關系;LR關系則通過Package與Activity之間的包含關系,Activity與Activity之間的包含關系,Activity與Step之間的包含關系來表示;最后,由于OTR關系不能轉(zhuǎn)換到XPDL模型中,因此沒有對OTR關系進行建模。類Package用于描述SPEM模型中Package、Discipline、Phase、Lifecycle、Process元素,它包含屬于這些元素的元素列表以及關系列表對象。

在SPEM對象生成器的具體實現(xiàn)中,由SPEMParser類提供從SPEM DOC到SPEM Java對象的解析方法。例如:

List getSteps()//解析出Step對象列表

List getPackages()//解析出Package對象列表

List getStepAssociation()//解析出StepAssociation關系對象列表

(3)XPDL DOC生成器

XPDL DOC生成器將XPDL模型在引擎中的對象表示,即XPDL Java對象轉(zhuǎn)換為XPDL DOC。本文對XPDL模型所作的面向?qū)ο蠼#漕惤Y(jié)構(gòu)如圖7所示。XPDL Java對象就是這些類的運行實例。

抽象類AbstractActivity用于描述XPDL模型中的Activity元素。其特定子類分別定義特定的活動類型:BlockActivity子類是對BlockActivity元素的建模,它與ActivitySet類相關聯(lián);SubFlowActivity子類是對實現(xiàn)類型為“Subflow”的Activity元素的建模,它與WorkflowProcess類相關聯(lián);NormalActivity子類是對普通Activity元素的建模。與XPDL元模型結(jié)構(gòu)一樣,AbstractActivity類與Participant類相關聯(lián),表示活動與參與者之間的關聯(lián)關系;AbstractActivity類與Transition類相關聯(lián),表示活動與活動之間的轉(zhuǎn)換關系。另外,ExtendedAttribute類用于描述模型中的擴展屬性,它可以與其他各個類相關聯(lián),表示相應模型元素的擴展屬性。ActivitySet類用于描述ActivitySet元素,該類包含屬于ActivitySet元素的活動列表以及活動之間的轉(zhuǎn)換關系列表。WorkflowProcess類用于描述WorkflowProcess元素,該類包含工作流中的活動(如果活動類型是BlockActivity,那么WorkflowProcess類中還包含有與該BlockActivity所對應的ActivitySet對象)以及活動的Transition關系列表。Package類用于描述Package元素,該類包含屬于此Package元素所在層次的Participant列表以及WorkflowProcess列表。

在XPDL DOC生成器的具體實現(xiàn)中,XPDLCreator類提供由XPDL Java對象到XPDL DOC的生成方法。例如:

void createPackageParticipants(Element root,List participantList)

//創(chuàng)建Participants元素

void createWorkflowProcesses(Element root,List workflowProcessList,List participantList)//創(chuàng)建WorkflowProcesse元素

void createActivitySets(Element workflowProcess, List activitySetList)//創(chuàng)建ActivitySets元素

void createActivities(Element workflowProcess,List activityList)

//創(chuàng)建Activities元素

(4)轉(zhuǎn)換規(guī)則庫

轉(zhuǎn)換規(guī)則庫由SPEM2XPDL模型轉(zhuǎn)換規(guī)則組成。在具體實現(xiàn)中,本文根據(jù)模型轉(zhuǎn)換的目標XPDL對象來構(gòu)建轉(zhuǎn)換規(guī)則類。主要包含如下轉(zhuǎn)換類:

①ParticipantRule

定義Participant類的轉(zhuǎn)換規(guī)則,主要方法如下:

Participant convert(Actor aActor)//轉(zhuǎn)換Actor為 Participant

②ActivityRule

定義Activity類的轉(zhuǎn)換規(guī)則,主要方法如下:

//轉(zhuǎn)換spemActivity為 AbstractActivity子類對象

BlockActivity convert2Block(Activity spemActivity, List performAssociationList, List assistAssociationList)

SubFlowActivity convert2Sub(Activity spemActivity, List performAssociationList, List assistAssociationList)

NormalActivity convert2Normal(Activity spemActivity, List performAssociationList, List assistAssociationList)

③ActivitySetRule

定義ActivitySet類的轉(zhuǎn)換規(guī)則,主要方法如下:

//轉(zhuǎn)換Step為NormalActivity

NormalActivity convert2Normal(Activity father,Step step,List performAssociationList)

//轉(zhuǎn)換spemActivity包含的Step為ActivitySet對象

ActivitySet convert(Activity spemActivity, List performerAssociationList, List stepAssociationList)

④WorkflowProcessRule

定義WorkflowProcess類的轉(zhuǎn)換規(guī)則,主要方法如下:

List convertProcesses(Activity composite, Package spemPackage//遞歸生成WorkflowProcess對象列表)

⑤PackageRule

定義Package類的轉(zhuǎn)換規(guī)則,主要方法如下:

//轉(zhuǎn)換spemPackage為Package對象

Package convert(com.wzg.spemPackage spemPackage)

(5)對象轉(zhuǎn)換器

對象轉(zhuǎn)換器執(zhí)行對象轉(zhuǎn)換。在實現(xiàn)中,Spem2Xpdl類提供了轉(zhuǎn)換方法。主轉(zhuǎn)換算法如下:

主算法

輸入:SPEM Package對象

輸出:XPDL Package對象

①創(chuàng)建XPDL Package對象。

②將SPEM Package的Actor對象轉(zhuǎn)換為XPDL Participant對象。

③調(diào)用WorkflowProcess生成算法,得到XPDL WorkflowProcess對象列表。

④根據(jù)②、③設置①中的XPDL Package對象。

⑤返回XPDL Package對象。

WorkflowProcess生成算法

輸入:SPEM Package對象

輸出:XPDL WorkflowProcess對象列表

①如果SPEM Package對象的活動列表為空,那么返回NULL。

②否則,創(chuàng)建XPDL WorkflowProcess對象列表wpList。

③創(chuàng)建XPDL WorkflowProcess對象,對于SPEM Package中的每個活動spemActivity:

如果spemActivity的Children屬性不為空,取出spemAcitivity的Children列表,遞歸調(diào)用③;將spemActivity所對應的WorkflowProcess對象添加到wpList;轉(zhuǎn)換spemActivity為SubFlowActivity,并將SubFlowActivity對象添加到WorkflowProcess對象的ActivityList屬性中。

如果該spemActivity的stepList屬性不為空,生成該spemActivity所對應的ActivitySet對象,同時將spemActivity轉(zhuǎn)換為BlockActivity對象;將ActivitySet對象添加到WorkflowProcess對象的ActivitySetList中,同時將BlockActivity對象添加到XPDL WorkflowProcess對象的ActivityList屬性中。

否則,將spemActivity轉(zhuǎn)換為NormalActivity。將NormalActivity對象添加到WorkflowProcess對象的ActivityList屬性中。

④轉(zhuǎn)換SPEM關系對象為Transition,并添加到WorkflowProcess對象的TransitionList屬性中。

⑤將XPDL Workflow對象添加到XPDL WorkflowProcess對象列表中。

⑥返回XPDL WorkflowProcess列表。

4實例研究

為了驗證轉(zhuǎn)換引擎的可用性,以中國科學院軟件所互聯(lián)網(wǎng)軟件實驗室開發(fā)的SoftPM[9]評審過程為例,在Enterprise Architecture中建立了評審過程的SPEM模型,如圖8所示。

在模型中,定義了四種過程角色。這些過程角色通過Perform或者Assist關系與過程活動相連;活動之間通過中間產(chǎn)品或者Precedes關系相關聯(lián)。在本模型中,Prereview活動由包含四個子活動的活動圖來表示,而Independent Review活動又由包含三個活動步驟的狀態(tài)圖來表示。

經(jīng)過SPEM2XPDL模型轉(zhuǎn)換引擎轉(zhuǎn)換出來的XPDL模型在Shark中的表示如圖9所示。

圖1中,SPEM模型中PreReview活動被轉(zhuǎn)換為XPDL中類型為SubFlowActivity的活動。PreReview活動包含的子活動被轉(zhuǎn)換到XPDL的WorkflowProcess中;Independent Review活動被轉(zhuǎn)換為XPDL中類型為BlockActivity的活動,Independent Review包含的活動步驟被轉(zhuǎn)換為XPDL中與BlockActivity相關聯(lián)的ActivitySet;SPEM模型中活動的各種關系都被正確轉(zhuǎn)換到XPDL模型中。該XPDL模型可以在Shark中進行過程執(zhí)行,此應用充分驗證了SPEM2XPDL模型轉(zhuǎn)換引擎的可用性。

5結(jié)束語

本文建立了SPEM2XPDL模型轉(zhuǎn)換規(guī)則,設計實現(xiàn)了SPEM2XPDL模型轉(zhuǎn)換引擎,并通過實例驗證了引擎的可用性。該引擎與SoftPM[9]的過程資產(chǎn)工具結(jié)合,將從過程定義、過程執(zhí)行、過程度量方面對企業(yè)實施過程管理提供全方位支持。

本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。

主站蜘蛛池模板: 亚洲av色吊丝无码| 久久久久亚洲AV成人网站软件| 免费看久久精品99| 国产三级韩国三级理| 精品国产电影久久九九| 成人av手机在线观看| 久草国产在线观看| 在线视频一区二区三区不卡| 国产精品jizz在线观看软件| 视频国产精品丝袜第一页| 婷婷成人综合| 毛片手机在线看| 国产久草视频| 婷婷六月综合网| 国产啪在线91| 伊人91在线| 午夜人性色福利无码视频在线观看| 中文字幕2区| 亚洲一区二区三区国产精华液| 91成人在线免费观看| 国产精品成人久久| 狠狠色婷婷丁香综合久久韩国| 国产成人福利在线| 欧美一级高清视频在线播放| 污视频日本| 亚洲AⅤ永久无码精品毛片| 久久综合成人| 亚洲一区二区约美女探花| 91久久青青草原精品国产| 日韩国产黄色网站| 久久黄色视频影| 她的性爱视频| 国产在线观看第二页| av在线手机播放| 国产黑丝一区| 找国产毛片看| 国产精品主播| 99中文字幕亚洲一区二区| 九色91在线视频| 国产欧美日韩va另类在线播放| 乱码国产乱码精品精在线播放| 成人福利视频网| 久久婷婷五月综合97色| 久久综合结合久久狠狠狠97色| 久久综合亚洲鲁鲁九月天| 中国丰满人妻无码束缚啪啪| 精品久久久久久中文字幕女| 午夜国产精品视频黄| 欧美午夜一区| 丁香六月综合网| 四虎亚洲国产成人久久精品| 日韩资源站| 久草视频精品| 亚洲人成人无码www| 日本不卡在线视频| 青青热久免费精品视频6| 五月天天天色| 精品91视频| 久久亚洲美女精品国产精品| 亚洲毛片网站| 呦视频在线一区二区三区| 情侣午夜国产在线一区无码| 国产系列在线| 色香蕉影院| 激情综合网激情综合| 国产69精品久久久久孕妇大杂乱| 免费国产小视频在线观看| 日本国产在线| 日韩精品成人网页视频在线| a天堂视频| 国产一区二区人大臿蕉香蕉| 欧美日韩国产在线观看一区二区三区 | 亚洲免费黄色网| 99热这里只有精品久久免费| 日韩欧美中文| 久久www视频| 国产成人久久777777| 日韩欧美亚洲国产成人综合| 女人一级毛片| 亚洲制服丝袜第一页| 欧美a√在线| 国产成人AV男人的天堂|