久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Drools 7.4.1.Final参考手册(六) 用户手册

發布時間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Drools 7.4.1.Final参考手册(六) 用户手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用戶手冊

基礎

無狀態的知識Session

Drools規則引擎擁有大量的用例和功能,我們要如何開始?你無須擔心,這些復雜性是分層的,你可以用簡單的用例來逐步入門。

無狀態Session,無須使用推理,就形成了最簡單的用例。一個無狀態session可以經過一個函數,然后返回一些結果。無狀態session的用例都具有但不限于如下功能:

  • 校驗

    • 此人是否有資格申請抵押貸款

  • 計算

    • 計算抵押溢價

  • 路由和過濾

    • 將傳入的郵件(如電子郵件)過濾到文件夾中

    • 將傳入的消息發送到目的地

讓我們從一個簡單的例子開始,使用一個駕駛執照申請。

public class Applicant {private String name; private int age; private boolean valid; // getter and setter methods here }

根據上面的數據模型,我們為它添加一個規則:18歲以下的申請人會被拒絕。

package com.company.licenserule "Is of valid age" when$a : Applicant( age < 18 ) then$a.setValid( false ); end

為了使規則引擎能夠識別數據,從而能夠針對一些規則進行處理,我們需要?插入?數據,就像一個數據庫一樣。當Applicant實例被插入到引擎時,首先會校驗約束條件,在這個用例中只有兩個約束條件。之所以說是兩個規則,其一是Applicant的類型校驗,其二是age < 18的規則校驗。一個對象類型加上它的另個或多個字段約束稱為模式。當插入的實例同時滿足這兩個約束時,那么認為實例能夠匹配這一規則。

$a是一個綁定變量,它允許我們引用匹配約束的對象實例。這一實例的屬性在then后面會被更新,('$')符號是可選的,但它能夠幫助用來從不同的字段名中區分不同的變量名。僅僅處理被插入的數據中能夠匹配模式的數據的這種做法,我們稱為模式匹配。

在Drools文件中推入規則是十分必要的,它只是一個普通的文本文件,只是后綴名是 .drl,它是 "Drools Rule Language" 的簡稱。那么讓我們來調用一下文件 licenseApplication.drl ,然后在Kie Project中保存。 Kie Project具有一個正常的Maven項目結構,還一個附加的定義了KieBases 和?KieSession?的 kmodule.xml文件。這個文件必須放在Maven項目的resources / META-INF文件夾中,而包含前一個規則的所有其他Drools構件(如licenseApplication.drl)必須存儲在資源文件夾或其下的任何其他子文件夾中。

由于所有配置方面都提供了有意義的默認值,所以最簡單的kmodule.xml文件只需包含一個空的kmodule標簽,如下所示:

<?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://www.drools.org/xsd/kmodule"/>

在這一點上,可以創建一個KieContainer來從類路徑中讀取要生成的文件。

KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer();

上面的代碼片段編譯了在classpath中找到的所有DRL文件,并把這個編譯的結果,一個KieModule,放到KieContainer中。 如果沒有錯誤,我們將準備從“KieContainer”創建會話并針對一些數據執行:

StatelessKieSession kSession = kContainer.newStatelessKieSession(); Applicant applicant = new Applicant( "Mr John Smith", 16 ); assertTrue( applicant.isValid() ); ksession.execute( applicant ); assertFalse( applicant.isValid() );

上面的代碼根據規則執行數據。 由于申請人年齡在18歲以下,申請被標記為無效。

到目前為止,我們只使用了一個實例,但如果我們想要使用多個實例呢? 我們可以針對任何實現Iterable的對象執行,比如集合。 讓我們添加另一個名為“Application”的類,它具有應用程序的日期,我們也將布爾有效字段移動到“Application”類。

public class Applicant {private String name; private int age; // getter and setter methods here } public class Application { private Date dateApplied; private boolean valid; // getter and setter methods here }

我們還會添加另一條規則來驗證申請是在一段時間內完成的。

package com.company.licenserule "Is of valid age" whenApplicant( age < 18 ) $a : Application() then $a.setValid( false ); end rule "Application was made this year" when $a : Application( dateApplied > "01-jan-2009" ) then $a.setValid( false ); end

不幸的是,Java數組并沒有實現?Iterable?接口,所以我們必須使用JDK轉換器方法?Arrays.asList(…?)。 下面顯示的代碼針對可迭代的列表執行,在列表中插入所有集合元素,然后再觸發任何匹配的規則。

StatelessKieSession kSession = kContainer.newStatelessKieSession(); Applicant applicant = new Applicant( "Mr John Smith", 16 ); Application application = new Application(); assertTrue( application.isValid() ); ksession.execute( Arrays.asList( new Object[] { application, applicant } ) ); assertFalse( application.isValid() );

execute(Object object)?和?execute(Iterable objects )?是接口BatchExecutor方法?execute(Command command)?的兩個實現方法。

像KIE API的所有其他工廠一樣,可以從?KieServices?獲得的?KieCommands?命令工廠用于創建命令,以下相當于?execute(Iterable it):

``ksession.execute( kieServices.getCommands().newInsertElements( Arrays.asList( new Object[] { application, applicant } ) );``

批處理執行程序和命令工廠在使用多個命令和輸出標識符來獲取結果時特別有用。

KieCommands kieCommands = kieServices.getCommands(); List<Command> cmds = new ArrayList<Command>(); cmds.add( kieCommands.newInsert( new Person( "Mr John Smith" ), "mrSmith", true, null ) ); cmds.add( kieCommands.newInsert( new Person( "Mr John Doe" ), "mrDoe", true, null ) ); BatchExecutionResults results = ksession.execute( kieCommands.newBatchExecution( cmds ) ); assertEquals( new Person( "Mr John Smith" ), results.getValue( "mrSmith" ) );

CommandFactory?支持許多其他可以在?StartProcess?,?Query?和?SetGlobal?的?BatchExecutor?中使用的命令。

有狀態的知識Session

有狀態會話很長時間,并允許隨著時間的推移進行迭代更改。有狀態會話的一些常見用例包括但不限于:

  • 監測

    • 半自動買入的股市監測和分析

  • 診斷

    • 故障查找,醫療診斷

  • 物流

    • 包裹跟蹤和交付供應

  • 合規性

    • 驗證市場交易的合法性

與無狀態會話相比,之后必須調用dispose()方法,以確保沒有內存泄漏,因為KieBase在創建時包含對有狀態知識會話的引用。由于有狀態知識會話是最常用的會話類型,因此它在KIE API中被命名為KieSession。KieSession還支持BatchExecutor接口,就像StatelessKieSession一樣,唯一的區別是FireAllRules命令不會在有狀態會話結束時自動調用。

我們以舉一個火警的例子來說明監控用例。我們只用四個類,代表一間房子里的房間,每間房子里有一個灑水器。如果一個房間發生火災,我們用一個“Fire”實例來表示。

public class Room {private String name // getter and setter methods here } public class Sprinkler { private Room room; private boolean on; // getter and setter methods here } public class Fire { private Room room; // getter and setter methods here } public class Alarm { }

在前面關于無狀態會話的章節中,介紹了插入和匹配數據的概念。 這個例子假設每個對象類型只有一個實例被插入,因此只能使用字面約束。 然而,房子有很多房間,所以規則必須表達物體之間的關系,比如噴灑器在某個房間里。 這最好通過使用綁定變量作為模式中的約束來完成。 這個“加入”過程產生了所謂的交叉產品,這在下一節將會介紹。

發生火災時,會為該房間創建Fire類的實例,并將其插入會話中。 該規則在Fire對象的room字段上使用綁定來約束與當前關閉的房間的噴灑器的匹配。 當這個規則觸發并且結果被執行時,噴淋器被打開。

rule "When there is a fire turn on the sprinkler" whenFire($room : room)$sprinkler : Sprinkler( room == $room, on == false ) then modify( $sprinkler ) { setOn( true ) }; System.out.println( "Turn on the sprinkler for room " + $room.getName() ); end

而無狀態會話使用標準的Java語法來修改一個字段,而在上面的規則中,我們使用modify語句,它作為一種“with”語句。它可能包含一系列逗號分隔的Java表達式,即對由modify語句的控制表達式選擇的對象的設置者的調用。這會修改數據,并使引擎知道這些更改,以便再次推理它們。這個過程被稱為推理,對有狀態會話的工作是必不可少的。無狀態會話通常不使用推理,因此引擎不需要知道數據的更改。也可以通過使用sequential mode顯式關閉推理。

到目前為止,我們有規則告訴我們什么時候匹配數據存在,但是什么時候存在not呢? 我們如何確定火已被撲滅,即不存在一個Fire對象了嗎? 以前,約束條件是根據命題邏輯的句子,其中引擎限制個別情況。 Drools的也有一階邏輯的支持,可以讓你看的數據集。 當不存在某個關鍵字時,關鍵字“not”下的模式匹配。 一旦房間里的火已經消失,下面給出的規則就會使噴灑器關閉。

rule "When the fire is gone turn off the sprinkler" when$room : Room( )$sprinkler : Sprinkler( room == $room, on == true )not Fire( room == $room ) then modify( $sprinkler ) { setOn( false ) }; System.out.println( "Turn off the sprinkler for room " + $room.getName() ); end

每個房間有一個灑水噴頭,這個建筑物只有一個警報。 發生火災時會產生一個“Alarm”對象,但無論發生多少火災,整個建筑物只需要一個“Alarm”。 以前沒有引入“not”來匹配事實; 現在我們使用它的補充“exists”來匹配某個類別的一個或多個實例。

rule "Raise the alarm when we have one or more fires" whenexists Fire() theninsert( new Alarm() ); System.out.println( "Raise the alarm" ); end

同樣,當沒有火災時,我們要刪除警報,所以not關鍵字可以再次使用。

rule "Cancel the alarm when all the fires have gone" whennot Fire()$alarm : Alarm() then delete( $alarm ); System.out.println( "Cancel the alarm" ); end

最后,當應用程序首次啟動時,以及在警報被移除并且所有灑水噴頭已關閉之后,都會打印一般健康狀態消息。

rule "Status output when things are ok" whennot Alarm()not Sprinkler( on == true ) then System.out.println( "Everything is ok" ); end

正如我們在無狀態會話中所做的那樣,上面的規則應該放在一個DRL文件中,并保存到Maven項目或其任何子文件夾的資源文件夾中。 和以前一樣,我們可以從KieContainer中獲得一個KieSession。 唯一不同的是,這一次我們創建了一個有狀態會話,而在此之前,我們創建的是一個無狀態會話。

KieServices kieServices = KieServices.Factory.get(); KieContainer kContainer = kieServices.getKieClasspathContainer(); KieSession ksession = kContainer.newKieSession();

隨著會話創建,現在可以反復使用它隨著時間的推移。 創建并插入四個Room對象,以及每個房間的一個sprinkler對象。 在這一點上,引擎已經完成了所有的匹配,但是還沒有任何規則被解雇。 調用ksession.fireAllRules()允許匹配的規則觸發,但沒有火災,只會產生健康信息。

String[] names = new String[]{"kitchen", "bedroom", "office", "livingroom"}; Map<String,Room> name2room = new HashMap<String,Room>(); for( String name: names ){ Room room = new Room( name ); name2room.put( name, room ); ksession.insert( room ); Sprinkler sprinkler = new Sprinkler( room ); ksession.insert( sprinkler ); } ksession.fireAllRules(); ``> Everything is ok``

我們現在創建兩個大火并插入它們; 這次為返回的FactHandle保留一個引用。 事實句柄是插入實例的內部引擎引用,允許實例在稍后的時間點收回或修改。 現在發動機發生火災,一旦調用了fireAllRules(),報警就會被觸發,相應的噴淋頭就會打開。

Fire kitchenFire = new Fire( name2room.get( "kitchen" ) ); Fire officeFire = new Fire( name2room.get( "office" ) );FactHandle kitchenFireHandle = ksession.insert( kitchenFire ); FactHandle officeFireHandle = ksession.insert( officeFire );ksession.fireAllRules(); > Raise the alarm > Turn on the sprinkler for room kitchen > Turn on the sprinkler for room office

過了一段時間后,火勢將會消失,Fire實例將被收回。 這導致灑水器關閉,警報被取消,最終再次打印健康信息。

ksession.delete( kitchenFireHandle ); ksession.delete( officeFireHandle );ksession.fireAllRules(); > Cancel the alarm > Turn off the sprinkler for room office > Turn off the sprinkler for room kitchen > Everything is ok

這并不難,我希望你能開始看到聲明式規則系統的價值和威力。

方法與規則

人們經常混淆方法和規則,而新規則用戶經常會問:“我怎樣稱呼規則?” 在上一節之后,你現在的感覺就像一個規則專家,答案是顯而易見的,但我們仍然總結的差異。

public void helloWorld(Person person) { if ( person.getName().equals( "Chuck" ) ) { System.out.println( "Hello Chuck" ); } }
  • 方法直接調用。

  • 特定的實例通過。

  • 一次調用會導致一次執行。

rule "Hello World" whenPerson( name == "Chuck" ) then System.out.println( "Hello Chuck" ); end
  • 規則通過匹配任何數據執行,只要它插入引擎。

  • 規則永遠不能直接調用。

  • 特定的實例不能傳遞給規則。

  • 根據比賽情況,規則可能會觸發一次或幾次,或根本不觸發。

交叉產品

早些時候提到了“交叉產品”這個詞,這是加入的結果。 想象一下,來自火災報警示例的數據與沒有字段限制的下列規則結合使用:

rule "Show Sprinklers" when$room : Room()$sprinkler : Sprinkler() thenSystem.out.println( "room:" + $room.getName() +" sprinkler:" + $sprinkler.getRoom().getName() ); end

用SQL語言來說,就像在Room,?Sprinkler中執行select *一樣,Room表中的每一行都將與Sprinkler表中的每一行連接在一起,產生以下輸出:

room:office sprinkler:office room:office sprinkler:kitchen room:office sprinkler:livingroom room:office sprinkler:bedroom room:kitchen sprinkler:office room:kitchen sprinkler:kitchen room:kitchen sprinkler:livingroom room:kitchen sprinkler:bedroom room:livingroom sprinkler:office room:livingroom sprinkler:kitchen room:livingroom sprinkler:livingroom room:livingroom sprinkler:bedroom room:bedroom sprinkler:office room:bedroom sprinkler:kitchen room:bedroom sprinkler:livingroom room:bedroom sprinkler:bedroom

這些交叉產品顯然可能變得龐大,并且可能包含虛假數據。 交叉產品的大小通常是新規則制定者性能問題的來源。 由此可以看出,限制交叉產品總是可取的,這是通過可變約束來完成的。

rule when$room : Room()$sprinkler : Sprinkler( room == $room ) thenSystem.out.println( "room:" + $room.getName() +" sprinkler:" + $sprinkler.getRoom().getName() ); end

這使得只有四行數據,每個房間都有正確的噴淋頭。 在SQL(實際上是HQL)中,相應的查詢將是select * from Room, Sprinkler where Room == Sprinkler.room。

room:office sprinkler:office room:kitchen sprinkler:kitchen room:livingroom sprinkler:livingroom room:bedroom sprinkler:bedroom

執行控制

議程

議程是一個Rete功能。 它維護一組能夠執行的規則,其工作是按照確定的順序安排執行。

在RuleRuntime操作期間,規則可能完全匹配并有資格執行; 單個規則運行時操作可能會導致多個符合條件的規則。 當規則完全匹配時,創建規則匹配,引用規則和匹配的事實,并放置到議程中。 議程使用沖突解決策略控制這些匹配的執行順序。

引擎反復循環兩個階段:

1.規則運行時操作。 這是大部分工作發生的地方,無論是在結果(RHS本身)還是主要的Java應用程序過程中。 一旦結果完成或主Java應用程序進程調用fireAllRules(),引擎就切換到議程評估階段。

2.議程評估。 這試圖選擇一個規則來觸發。 如果沒有找到規則,則退出,否則會觸發找到的規則,將階段切換回規則運行時操作。

Figure 1. Two Phase Execution

這個過程重復,直到議程清晰,在這種情況下控制返回到調用應用程序。 當規則運行時操作正在發生時,沒有規則被觸發。

規則匹配和沖突集

現金流量示例

到目前為止,數據和匹配過程是簡單而小巧的。 為了將事情混合起來,我們將探索一個新的例子來處理日期期間的現金流量計算。 發動機的狀態將在關鍵階段示例性地示出,以幫助更好地理解發動機罩下的實際情況。 將使用三個類,如下所示。 這將有助于我們增加對模式匹配的理解并進一步加入。 然后我們將用這個來說明執行控制的不同技術。

public class CashFlow {private Date date; private double amount; private int type; long accountNo; // getter and setter methods here } public class Account { private long accountNo; private double balance; // getter and setter methods here } public AccountPeriod { private Date start; private Date end; // getter and setter methods here }

現在,您已經知道如何創建KieBases以及如何實例化事實來填充KieSession,所以將使用表來顯示插入的數據的狀態,因為它使事情變得更加清楚。 下表顯示為“Account”插入單個事實。 還插入了一系列借方和貸方作為該賬戶的“CashFlow”對象,延伸了兩個季度。

Figure 2. CashFlows and Account

兩個規則可以用來確定該季度的借方和貸方,并更新賬戶余額。 以下兩條規則限制了給定時間段內某個賬戶的現金流量。 請注意使用簡短語法的“&&”,以避免兩次重復字段名稱。

select * from Account acc, Cashflow cf, AccountPeriod ap where acc.accountNo == cf.accountNo and cf.type == CREDIT and cf.date >= ap.start and cf.date <= ap.end trigger : acc.balance += cf.amount select * from Account acc, Cashflow cf, AccountPeriod ap where acc.accountNo == cf.accountNo and cf.type == DEBIT and cf.date >= ap.start and cf.date <= ap.end trigger : acc.balance -= cf.amount

如果AccountPeriod設置為第一季度,我們將限制增加貸方余額的規則在兩行數據上觸發,減少借方余額以對一行數據進行操作。

Figure 3. 會計周期,現金流量和賬戶

上面的兩個現金流量表代表兩個規則的匹配數據。 數據在插入階段被匹配,正如你在上一章中發現的那樣,它不會直接觸發,而只是在fireAllRules()被調用之后。 同時,規則及其匹配的數據被放置在議程上,并被稱為“行為匹配”或“規則實例”。 議程是一個規則匹配表,只要fireAllRules()被調用,它就能夠觸發并執行其后果。 議程上的規則匹配被稱為沖突集,其執行是由沖突解決策略決定的。 請注意,到目前為止的執行順序被認為是任意的。

Figure 4. 現金流和賬戶

所有上述激活的規則被執行后,賬戶的余額為-25。

Figure 5. 現金流和賬戶

如果賬戶期限更新到第二季度,我們只有一行匹配的數據,因此在議程上只有一個規則匹配。

規則執行的結果導致了25的余額。

Figure 6. 現金流和賬戶 Figure 7. 現金流和賬戶
解決沖突

如果你不希望規則執行的順序是任意的呢? 如果議程上有一個或多個規則匹配,則說明它們之間存在沖突,并使用沖突解決策略來確定執行順序。 Drools戰略非常簡單,基于一個顯著的價值,它為一個規則賦予了優先權。 每個規則的默認值為0,值越高,優先級越高。

作為一般規則,不要指望以任何特定順序開火的規則,并且制定規則而不必擔心“flow”。 然而,當需要流程時,除了顯著性之外還有許多可能性:議程組,規則流程組,激活組和控制/信號量事實。

Drools 6.0 規則根據源文件中的salience之后的數字來確定優先級。

Salience

為了說明salience,我們添加一個規則來打印帳戶余額,我們希望在對所有帳戶應用所有借記和貸項之后執行此規則。 我們通過給這個規則分配一個負的salience來達到這個目的,以便在默認salience 0的所有規則之后觸發。

rule "Print balance for AccountPeriod"salience -50whenap : AccountPeriod()acc : Account()thenSystem.out.println( acc.accountNo + " : " + acc.balance ); end

下表描述了由此產生的議程。 這三個借記和貸記規則顯示為任意順序,而打印規則排在最后,以后執行。

Figure 8. 現金流和賬戶
議程組agenda group

議程組允許您將規則放入組中,并將這些組放入堆棧。 該堆棧有push/pop 的能力。 調用“setFocus”將組放入堆棧:

ksession.getAgenda().getAgendaGroup( "Group A" ).setFocus();

議程總是評估堆棧的頂部。 當所有的規則已經為一個組激發,它從堆棧彈出,并評估下一個組。

rule "increase balance for credits"agenda-group "calculation" whenap : AccountPeriod()acc : Account( $accountNo : accountNo )CashFlow( type == CREDIT,accountNo == $accountNo,date >= ap.start && <= ap.end,$amount : amount ) thenacc.balance += $amount; end rule "Print balance for AccountPeriod"agenda-group "report" whenap : AccountPeriod()acc : Account() thenSystem.out.println( acc.accountNo +" : " + acc.balance ); end

首先把重點放在“report”組,然后把重點放在“calculation”上,我們確保首先評估組。

Agenda agenda = ksession.getAgenda(); agenda.getAgendaGroup( "report" ).setFocus(); agenda.getAgendaGroup( "calculation" ).setFocus(); ksession.fireAllRules();
規則流程

Drools還具有ruleflow-group屬性,允許工作流程圖聲明性地指定何時允許激發規則。 下面的截圖是從Eclipse使用Drools插件。 它有兩個規則流組節點,確保計算規則在報告規則之前執行。

在規則中使用ruleflow-group屬性如下所示。

rule "increase balance for credits"ruleflow-group "calculation" whenap : AccountPeriod()acc : Account( $accountNo : accountNo )CashFlow( type == CREDIT,accountNo == $accountNo,date >= ap.start && <= ap.end,$amount : amount ) thenacc.balance += $amount; end rule "Print balance for AccountPeriod"ruleflow-group "report" whenap : AccountPeriod()acc : Account() thenSystem.out.println( acc.accountNo +" : " + acc.balance ); end

推理

巴士通行證例子

現在推論有一個不好的名字,因為它與業務用例無關,而且太復雜而無用。 的確,人為的和復雜的例子都是在推論中出現的,但是這也不應該損害簡單有用的存在。 但更重要的是,正確使用推理可以提供更敏捷,更不容易出錯的業務規則,這些規則更容易維護。

那么推理是什么? 當我們通過使用以前的知識獲得某些東西的知識時,就會推斷出什么 例如,給定一個具有年齡字段和規定年齡政策控制的規則的人的事實,我們可以推斷出一個人是成年人還是孩子,并據此采取行動。

rule "Infer Adult" when$p : Person( age >= 18 ) theninsert( new IsAdult( $p ) ) end

由于前面的規則,每個18歲以上的人都會為他們插入一個IsAdult的實例。 這個事實是特殊的,因為它被稱為關系。 我們可以在任何規則中使用這個推斷關系:

$p : Person() IsAdult( person == $p )

所以現在我們知道推論是什么,并且有一個基本的例子,這是如何促進良好的規則設計和維護?

讓孩子成年后負責發放身份證的政府部門,以下簡稱ID部門。 他們可能有一個決策表,其中包括這樣的邏輯,它說當一個在倫敦的成年人是18歲或以上,發卡:

但身份證件部門并沒有制定成人的政策。這是在中央政府一級完成的。如果中央政府將這個年齡改為21歲,這將啟動變革管理過程。有人必須聯系身份證件部門,確保他們的系統得到更新,以便法律上線。

這種變更管理流程和部門之間的溝通對于敏捷環境來說并不理想,而且變更成本高昂且容易出錯。此外,信用卡部門正在管理更多的信息,而不是需要通過其“規模管理”的“單一”方法意識到這一點。我的意思是,它并不關心明確的年齡>= 18信息決定某人是否是成年人,而只關心他們是否是成年人。

相比之下,讓我們采取一種方法,將創作責任分開(脫離),使中央政府和身份證部門都保持自己的規則。

確定誰是成年人是中央政府的工作。 如果他們改變法律,他們只是用新的規則來更新他們的中央倉庫,

如前所述,IsAdult事實是從政策規則中推斷出來的。 它封裝了看似隨意的一段邏輯時間?= 18,并為其含義提供了語義抽象。 現在,如果有人使用上述規則,他們不再需要知道明確的信息,決定某人是否是成年人。 他們可以使用推斷的事實:

雖然這個例子是非常微小的,但它說明了一些重要的觀點。我們從知識工程的單一和漏洞入手開始。我們創建了一個包含所有可能的信息的決策表,泄露了ID部門不關心也不想管理的來自中央政府的信息。

我們首先將知識過程分離開來,這樣每個部門只負責知道什么。然后,我們使用推斷的事實IsAdult封裝了這個變動的知識。術語IsAdult的使用還給以前的任意邏輯時間?= 18提供了語義抽象。

所以在進行知識工程時,一般的經驗法則是:

  • 壞的

  • 單一Monolithic

  • 泄露Leaky

  • 好的

    • 解除對知識的責任

    • 封裝知識

    • 為這些封裝提供語義抽象

用邏輯對象維護真相

概述

定期插入后,你必須明確地收回事實。有了邏輯斷言,斷言的事實將會自動撤回,因為斷言它的條件不再是真實的。實際上,它更加聰明,因為只有當沒有任何單一條件支持邏輯斷言時才會收回。

聲明一個正規的插入,就像“陳述事實”所暗示的直覺意義一樣。使用一個HashMap和一個計數器,我們追蹤一個特定的平等是多少次;這意味著我們計算有多少不同的實例是相等的。

當我們在RHS執行期間邏輯插入一個對象的時候,我們被說成是正當的,并且被認為是通過觸發規則來證明的。對于每個邏輯插入,只能有一個相等的對象,并且每個隨后的相等的邏輯插入增加該邏輯斷言的對齊計數器。創建規則的LHS取消了正當理由,計數器也相應減少。一旦我們沒有更多的理由,邏輯對象自動收回。

如果我們嘗試邏輯插入一個對象時,有一個相等的聲明對象,這將失敗,并返回null。如果我們聲明一個對象具有一個現有的平等的對象,我們重寫事實;這個覆蓋如何工作取決于配置設置WM_BEHAVIOR_PRESERVE。當屬性設置為discard時,我們使用現有的句柄,并用新的對象替換現有的實例,這是默認行為;否則我們重寫它,同時我們創建一個新的FactHandle。

這可能會在第一次閱讀時感到困惑,所以希望下面的流程圖有所幫助。當它說它返回一個新的FactHandle時,這也表示對象是通過網絡傳播的。

Figure 9. 聲明插入 Figure 10. 邏輯插入
有推理和TMS的公共汽車通行證例子

前面的例子是發行身份證超過18歲,在這個例子中,我們現在發行巴士通行證,無論是兒童或成人通行證。

rule "Issue Child Bus Pass" when$p : Person( age < 16 ) theninsert(new ChildBusPass( $p ) ); end rule "Issue Adult Bus Pass" when $p : Person( age >= 16 ) then insert(new AdultBusPass( $p ) ); end

像以前一樣,上面的例子被認為是單一的,漏洞和提供差的關注分離。

像以前一樣,我們可以提供一個更強大的應用程序,使用推理來區分問題。注意這次我們不只是插入推斷的對象,我們使用“insertLogical”:

rule "Infer Child" when$p : Person( age < 16 ) theninsertLogical( new IsChild( $p ) ) end rule "Infer Adult" when $p : Person( age >= 16 ) then insertLogical( new IsAdult( $p ) ) end

“insertLogical”是Drools真相維護系統(TMS)的一部分。當一個事實被邏輯插入時,這個事實取決于“when”從句的真實性。這意味著,當規則成為錯誤時,事實會自動收回。由于這兩個規則是相互排斥的,所以這個效果特別好。所以在上面的規則中,如果這個人在16歲以下,它會插入一個IsChild的事實,一旦這個人是16歲或以上,IsChild的事實就會自動收回,并且插入了IsAdult的事實。

回到代碼發出巴士通行證,這兩個規則可以在邏輯上插入ChildBusPass和AdultBusPass事實,因為TMS +支持鏈接一系列級聯的邏輯插入。

rule "Issue Child Bus Pass" when$p : Person( )IsChild( person == $p ) theninsertLogical(new ChildBusPass( $p ) ); endrule "Issue Adult Bus Pass" when $p : Person( age >= 16 ) IsAdult( person =$p ) then insertLogical(new AdultBusPass( $p ) ); end

現在當一個人從15歲變成16歲時,不僅IsChild事實自動縮回,他的ChildBusPass事實也是如此。對于獎勵積分,我們可以將這個與'not'條件元素結合起來處理通知,在這種情況下,請求返回通行證。所以當TMS自動收回ChildBusPass對象時,這個規則觸發并發送一個請求給這個人:

rule "Return ChildBusPass Request "when$p : Person( )not( ChildBusPass( person == $p ) ) thenrequestChildBusPass( $p ); end
重要說明:Java對象的等價

注意到真理維護(和邏輯斷言)完全可以工作,這是很重要的,你的Fact對象(可能是JavaBeans)必須正確地覆蓋equals和hashCode方法(來自java.lang.Object)。由于事實維護系統需要知道兩個不同物理對象的值是否相等,因此按照Java標準,必須正確覆蓋both等于和hashCode。

兩個對象是相等的,當且僅當它們的equals方法相互返回true,并且它們的hashCode方法返回相同的值。有關更多詳細信息,請參閱Java API(但請記住,MUST必須覆蓋equals和hashCode)。

TMS行為不受標識vs等價的時間配置的影響,TMS始終是等價的。

從工作記憶中刪除陳述或邏輯斷言

默認情況下,當從工作記憶中刪除一個事實時,Drools嘗試從既定事實集合中刪除它,并且在邏輯斷言的情況下也從真值維護系統TMS中刪除它。但是,使用delete方法的重載,也可以只從2.中刪除它。例如,調用:

``ksession.delete( factHandle, FactHandle.State.LOGICAL );``

這個事實只有在邏輯斷言的情況下才會被刪除,但是如果它是一個陳述的事實則不會被刪除。在這種情況下,如果事實已經說明了它的刪除失敗了,并且被忽略了。

電子表格中的決策表

決策表是一種“精確而緊湊”(參考自Wikipedia)表示條件邏輯的方式,非常適合商業級規則。

Drools支持電子表格格式的管理規則。支持的格式是Excel(XLS)和CSV,這意味著可以使用各種電子表格程序(例如Microsoft Excel,OpenOffice.org Calc等)。預計基于網絡的決策表編輯器將被包括在不久的將來版本中。

決策表是一個舊的概念(用軟件來說),但是多年來已經證明是有用的。簡而言之,在Drools中,決策表是一種生成從輸入到電子表格中的數據驅動的規則的方法。數據采集和處理的電子表格的所有常用功能都可以利用。

何時使用決策表

如果存在可以表示為規則模板和數據的規則,則將決策表視為一個行為過程:決策表的每一行都提供與模板結合生成規則的數據。

許多企業已經使用電子表格來管理數據,計算等。如果您樂于繼續這種方式,您也可以通過這種方式來管理您的業務規則。這也假設您很樂于在xls或csv文件中管理規則包。決策表不建議用于不遵循一組模板的規則,也不建議使用少量規則(或者對Excel或OpenOffice.org等軟件不喜歡)。它們是理想的,可以控制規則的參數可以編輯,而不需要直接暴露規則。

決策表還提供了一定程度的基礎對象模型的隔離。

概述

下面是一些真實世界決策表的例子(稍作修改以保護無辜者)。

Figure 11. 使用Excel來編輯決策表 Figure 12. 一個規則行中多種行為 Figure 13. 使用OpenOffice.org

在上面的例子中,決策表的技術方面已經崩潰了(使用標準的電子表格功能)。

規則從第17行開始,每一行產生一個規則。條件在列C,D,E等中,動作在屏幕外。單元格中的值非常簡單,它們的含義由行16中的標題指示。列B只是一個描述。通常使用顏色來明確表格的不同區域的含義。

?

請注意,雖然決策表看起來像自上而下,但情況并非如此。理想情況下,規則的編寫不考慮行的順序,僅僅因為這使得維護更容易,因為行不需要一直移動。

由于每一行都是一個規則,所以適用相同的原則。由于規則引擎處理事實,任何匹配的規則都可能觸發。 (有些人對此感到困惑,在規則觸發時模擬一個非常簡單的決策表就可以清除議程,只有第一個匹配才會執行一個動作。)另請注意,在一個電子表格中可以有多個表。這樣,可以將規則分組在共享通用模板的位置,然而在一天結束時,它們全部組合成一個規則包。決策表本質上是一種自動生成DRL規則的工具。

Figure 14. 使用多個表進行分組的規則

決策表如何工作

要記住的關鍵是,決策表中的每一行都是一個規則,該行中的每一列都是該規則的條件或動作。

Figure 15. 行和列

電子表格查找RuleTable關鍵字以指示規則表(起始行和列)的開始。 其他關鍵字也用于定義其他包級別屬性(稍后介紹)。 將關鍵字保留在一列是很重要的。 按照慣例,第二列(“B”)用于這個,但它可以是任何列(約定左邊留有空白的備注)。 在下面的圖中,C實際上是它開始的列。 左邊的所有內容都被忽略。

如果我們擴大隱藏的部分,它開始變得更有意義它是如何工作的; 請注意C列中的關鍵字。

Figure 16. 展開規則模板

現在可以看到使其工作的隱藏的魔法。 RuleSet關鍵字指示將在rule package中使用的名稱,該名稱將包含所有規則。 此名稱是可選的,使用默認值,但必須在單元格右邊有RuleSet關鍵字。

列C中可見的其他關鍵字是“導入”和“順序”,稍后將對其進行介紹。 RuleTable關鍵字是很重要的,因為它表示將遵循一些規則,基于一些規則模板。 RuleTable關鍵字后面有一個名稱,用于為生成的規則的名稱添加前綴。 附加表單名稱和行號以保證唯一的規則名稱。

?

與表格名稱結合使用的表格名稱在同一KieBase中的所有電子表格文件中必須是唯一的。 如果不是這樣,一些規則可能會有相同的名稱,只有其中一個會被應用。 要顯示這樣被忽略的規則,https://docs.jboss.org/drools/release/7.4.1.Final/drools-docs/html_single/index.html#_changingthedefaultbuildresultresultseverity [引發此類規則名稱沖突的嚴重性]。

RuleTable的列表示規則開始的列; 左側的列將被忽略。

?

通常,關鍵字組成名稱 - 值對。

參考第14行(RuleTable之后的那一行),關鍵字CONDITION和ACTION表示下面各列中的數據適用于規則的LHS部分或RHS部分。 規則上還有其他屬性,也可以選擇這種方式設置。

第15行包含ObjectTypes的聲明。 該行中的內容是可選的,但是如果該選項未被使用,則該行必須留空; 然而這個選項通常被認為是相當有用的。 使用此行時,下面單元格(第16行)中的值將成為該對象類型的約束。 在上面的例子中,它生成了“Person(age ==”42“)”和“Cheese(type ==”stilton“)”,其中42和“stilton”來自第18行。 ,“==”是隱含的; 如果只給出一個字段名稱,翻譯者就會假定它是生成完全匹配的。

?

一個ObjectType聲明可以跨越列(通過合并的單元格),這意味著合并范圍以下的所有列將被合并到一個模式中,一次匹配一個事實的一個模式中,而非包含 相同的ObjectType,但導致不同的模式,可能匹配不同或相同的事實。

第16行包含規則模板本身。 他們可以使用“$ param”占位符來表示下面單元格的數據應該插入的位置。 (對于多次插入,請使用“$ 1”,“$ 2”等,表示下面單元格中逗號分隔列表中的參數。 它可能包含該欄目的文字說明。

行18和行19顯示的數據將與行15中的模板組合(插值),以生成規則。 如果一個單元格不包含數據,則其模板將被忽略。 (這意味著某些條件或操作不適用于該規則行。)讀取規則行直到出現空行。 一張表中可以存在多個RuleTables。 第20行包含另一個關鍵字和一個值。 像這樣的關鍵字的行位置并不重要(大多數人把它們放在頂部),但是它們的列應該與RuleTable或RuleSet關鍵字出現的位置相同。 在我們的情況下,列C被選擇為重要的,但是可以使用任何其他列。

在上面的例子中,規則會像下面一樣呈現(因為它使用“ObjectType”行):

//row 18 rule "Cheese_fans_18" whenPerson(age=="42") Cheese(type=="stilton") then list.add("Old man stilton"); end
?

“age ==”42“”和“type ==”stilton“”的約束被解釋為單個約束,被添加到上面單元格的相應ObjectType中。 如果上面的單元格是跨越的,那么在一個“列”上可能有多個約束。

?

非常大的決策表可能有非常大的內存要求。

電子表格語法

電子表格結構

有兩種類型的矩形區域定義用于生成DRL文件的數據。 一個由標記為“RuleSet”的單元標記,定義除規則以外的所有DRL項目。 另一個可能會重復發生,并且位于以“RuleTable”開頭的單元格的右下方。 這些領域代表了實際的決策表,每個領域產生了一套類似結構的規則。

一個規則集區域可以包含單元對,一個在RuleSet下面,包含一個關鍵字,指定在同一行中的另一個關鍵字中包含的值。

規則表區域的列定義了從中派生的規則左側的模式和約束,規則后果的動作以及單個規則屬性的值。因此,規則表區域應該包含一個或多個列,條件和操作,以及規則屬性的列的任意選擇,每個列最多一列。前面四行跟著標記有“RuleTable”單元格的行被標記為標題區域,主要用于定義構建規則的代碼。它是這四個標題行下面的任何額外的行,產生另一個規則,其數據提供規則表標題中定義的代碼的變化。

所有關鍵字不區分大小寫。

只有第一張工作表被檢查決策表。

規則集條目

規則集區域中的條目可以定義DRL構造(規則除外),并指定規則屬性。 盡管可以重復使用結構的條目,但是每個規則屬性最多只能給出一次,并且它適用于所有規則,除非它被“規則表”區域內定義的相同屬性取代。

條目必須以垂直堆疊的單元對序列給出。 第一個包含關鍵字和右邊的值,如下表所示。 只要由“RuleSet”標記的列被維護為包含關鍵字的那一列,這個單元格對的序列就可以被空行或甚至規則表中斷。

Table 1. 規則集區域中的條目

關鍵字

用法

RuleSet

生成的DRL文件的包名稱??蛇x,默認是lele_table。

必須是第一個入口。

Sequential

"true" or "false". 如果是“true”,則使用顯著性來確保規則從上到下起火。

可選,最多一次。如果省略,則不執行射擊命令。

SequentialMaxPriority

整數數值

可選,最多一次。在順序模式下,此選項用于設置突出顯示的起始值。如果省略,則默認值為65535。

SequentialMinPriority

整數數值

可選,最多一次。在順序模式下,此選項用于檢查是否違反了最小顯著性值。如果省略,則默認值為0。

EscapeQuotes

"true" or "false". 如果是“true”,那么引號就會被轉義,從而在DRL中出現。

可選,最多一次。如果省略,引號將被轉義。

NumericDisabled

"true" or "false". 如果是“true”,則字符串表示形式用于DRL,而不是來自Numeric單元格的double值可選,最多一次。如果省略,則使用double值。

Import

要導入的Java類的逗號分隔列表。

可選,可以重復使用。

變量

DRL全局變量的聲明,即一個后跟一個變量名的類型。多個全局定義必須用逗號分隔。

可選,可以重復使用。

Variables

DRL全局變量的聲明,即一個后跟一個變量名的類型。多個全局定義必須用逗號分隔。

可選,可以重復使用。

Functions

一個或多個函數定義,根據DRL語法。

可選,可以重復使用。

Queries

一個或多個查詢定義,根據DRL語法。

可選,可以重復使用。

Declare

在某些語言環境中,MS Office,LibreOffice和OpenOffice會對不同的雙引號進行編碼,這會導致編譯錯誤,通常很難看出差異,例如:“A”會失敗, 但"A"會起作用。

?

要定義適用于生成的DRL文件中所有規則的規則屬性,可以使用下表中的任何條目。 但是請注意,必須使用正確的關鍵字。 而且,每個屬性只能使用一次。

Table 2. 規則集區域中的規則屬性條目

Keyword

Initial

Value

PRIORITY

P

一個定義規則“顯著性”值的整數。由“順序”標志覆蓋。

DURATION

D

定義規則的“持續時間”值的長整數值。

TIMER

T

定時器定義。請參閱“定時器和日歷”。

ENABLED

B

一個布爾值。 “真”使規則成為可能; “false”會禁用規則。

CALENDARS

E

日歷定義。請參閱“定時器和日歷”。

NO-LOOP

U

一個布爾值。 “真”禁止由于其結果所做的更改而循環的規則。

LOCK-ON-ACTIVE

L

一個布爾值。 “true”禁止在同一個規則流或議程組中設置此標志的所有規則的額外激活。

AUTO-FOCUS

F

一個布爾值。對于議程組中的規則而言,“真實”會導致規則的激活,從而自動將焦點集中到組中。

ACTIVATION-GROUP

X

識別激活(或XOR)組的字符串。激活組中只有一個規則將被觸發,即第一個激活組將取消同一組內其他規則的任何激活。

AGENDA-GROUP

G

一個標識一個議程組的字符串,必須通過賦予其“焦點”來激活,這是控制規則組之間流動的一種方式。

RULEFLOW-GROUP

R

標識規則流組的字符串。

規則表

所有規則表都以一個包含“RuleTable”的單元格開始,可選地在同一個單元格中跟隨一個字符串。該字符串用作從該規則表派生的所有規則的名稱的起始部分,附加行號以區分。 (這個自動命名可以通過使用NAME列來覆蓋。)定義此Rule Table規則的所有其他單元格位于該單元格的下方和右側。

下一行定義了列的類型,每列產生一部分條件或結果,或者提供一些規則屬性,規則名稱或注釋。下表顯示了哪些列標題可用;根據顯示前一節中給出的規則屬性條目的表格,可以使用額外的列。請注意,每個屬性列最多只能使用一次。對于列標題,請使用關鍵字或任何其他以這些表格的“初始”列中給出的字母開頭的單詞。

Table 3. 規則表中的列標題

Keyword

Initial

Value

Usage

NAME

N

提供從該行生成的規則的名稱。 默認值是根據RuleTable標簽和行號之后的文本構造的。

最多只有一列

DESCRIPTION

I

一個文本,在生成的規則中產生一個注釋。

最多只有一列

CONDITION

C

代碼片段和插值,用于在條件中的模式中構建約束。

每個規則表至少有一個

ACTION

A

代碼片斷和插值用于構建規則后果的操作。

每個規則表至少有一個

METADATA

@

代碼片斷和插值用于構建規則的元數據條目。

可選,任意數量的列

給定一個標題為CONDITION的列,連續行中的單元格產生一個條件元素。

  • CONDITION下面的第一個單元格中的文本發展成規則條件的模式,下一行中的代碼段成為約束條件。如果單元格與一個或多個鄰居合并,則形成具有多個約束的單個模式:將所有約束合并到一個帶括號的列表中,并附加到該單元格中的文本。單元格可能會留空,這意味著下一行中的代碼片段必須單獨生成有效的條件元素。 要包含沒有約束的模式,可以將模式寫在另一個模式的文本前面。 模式可以寫有或沒有一個空的括號。 “from”子句可以附加到模式。 如果模式以“eval”結尾,代碼片段應該產生布爾表達式,以包含在“eval”之后的一對括號中。

  • CONDITION下面的第二個單元格中的文本分兩步處理。

  • 這個單元格中的代碼片段是通過插入列中更靠下的單元格中的值來修改的。如果要使用“==”創建一個由下面的單元格的值組成的約束條件,則僅字段選擇器就足夠了。任何其他比較運算符都必須被指定為代碼片段中的最后一項,并且下面單元格的值被附加。對于所有其他約束形式,您必須標記位置以包含符號“$ param”的單元格的內容。通過在下面的單元格中使用符號“$ 1”,“$ 2”等和逗號分隔值列表,可以實現多重插入。 根據模式forall(delimiter){snippet}的文本的文本通過對每個單元格中的逗號分隔值列表的每個值重復snippet來展開在下面插入值代替符號$并且通過給定的delimiter加入這些擴展。請注意,該構造可能被其他文本包圍。

  • 如果前一行中的單元格不是空的,則將完成的代碼片段添加到該單元格的條件元素中。一對括號是自動提供的,如果將多個約束添加到合并單元格中的模式,則會自動提供分隔逗號。 如果上面的單元格是空的,插入的結果將按原樣使用。

  • CONDITION下方的第三個單元格中的文本僅用于文檔。它應該用來向讀者指出專欄的目的。

  • 從第四行開始,非空白條目提供如上所述的插值數據??瞻讍卧駥е率÷栽撘巹t的條件元素或約束條件。 給出一個以行動為首的專欄,連續行中的單元格產生一個行動陳述。

  • ACTION下面的第一個單元格中的文本是可選的。如果存在,則將其解釋為對象引用。

  • ACTION下面第二個單元格中的文本分兩步處理。

  • 這個單元格中的代碼片段是通過插入列中更靠下的單元格中的值來修改的。對于單數插入,用符號“$ param”標記包含單元格內容的位置。通過在下面的單元格中使用符號“$ 1”,“$ 2”等和逗號分隔值列表,可以實現多重插入。 沒有內插的方法調用可以通過沒有任何標記符號的文本來實現。在這種情況下,請使用下面一行中的任何非空白條目來包含該語句。 這個構造也可以在這里找到。 2.如果第一個單元格不是空的,其文本,后面是一個句點,第二個單元格中的文本和終止分號被串聯在一起,產生一個方法調用,作為結果的一個動作語句添加。 如果上面的單元格是空的,插入的結果將按原樣使用。

  • ACTION下面的第三個單元格中的文本僅用于文檔。它應該用來向讀者指出專欄的目的。

  • 從第四行開始,非空白條目提供如上所述的插值數據??瞻讍卧駥е率÷源艘巹t的操作語句。

?在大多數情況下,使用“$ 1”而不是“$ param”工作,但如果替換文本包含逗號,則會失敗:然后,只插入第一個逗號前面的部分。 明智地使用這個“縮寫”。

給定一個以METADATA開頭的列,連續行中的單元格將為生成的規則生成元數據注釋。

  • METADATA下面第一個單元格中的文本被忽略。

  • 如上所述,METADATA下面的第二個單元格中的文本使用來自規則行單元格的值進行插值。元數據標記字符“@”是自動添加的,因此它不應該包含在這個單元格的文本中。

  • METADATA下面的第三個單元格中的文本僅用于文檔。它應該用來向讀者指出專欄的目的。

  • 從第四行開始,非空白條目提供如上所述的插值數據。空白單元格導致省略此規則的元數據注釋。

例子

以下示例說明了各種插值。 例85.插值單元格數據 如果模板是“Foo(bar == $ param)”,單元格是“42”,那么結果是“Foo(bar == 42)”。

如果模板是“Foo(bar <$ 1,baz == $ 2)”,而單元格包含“42,43”,則結果將是“Foo(bar <42,baz == 43) 。

模板forall(&&){bar!= $}與一個包含42,43的單元格產生bar!= 42 && bar!= 43。

下一個例子演示了定義模式類型的單元和下面的代碼片段的共同作用。

<br class="Apple-interchange-newline">296/5000該電子表格部分顯示了Person類型聲明如何跨越2列,因此這兩個約束將以Person(age == …?,type == …?)的形式出現。 由于只有字段名稱存在于片段中,因此意味著平等測試。

在下面的例子中使用了標志符號$ param。

這個列的結果是模式Person(age ==“42”))。 您可能已經注意到標記和運算符“==”是多余的。

下一個例子說明了一個尾隨的插入標記可以省略。

在這里,從單元格中附加值是隱含的,導致Person(年齡<42))。

您可以提供綁定變量的定義,如下例所示。

這里的結果是c:Cheese(type ==“stilton”)。 請注意,報價是自動提供的。 實際上,任何東西都可以放在對象類型的行中。 除了綁定變量的定義之外,它也可以是一個附加的模式,可以直接插入。

下面顯示了插入單個值的操作語句的簡單構造。

ACTION標題下面的單元格留空。 使用這種風格,任何事情都可以放在結果中,而不僅僅是一個方法調用。 (同樣的技術也適用于CONDITION列。)

下面是一個綜合的例子,展示了各種列標題的使用。 在列標題之下沒有任何值是錯誤的(如在NO-LOOP列中):在這里,屬性不會被應用在任何規則中。

Figure 17. 關鍵字用于導入,標題等的示例用法

最后,這里是一個導入,變量和函數的例子。

Figure 18. 功能關鍵字的使用示例等

同一單元格中的多個軟件包名稱必須用逗號分隔。此外,類型和變量名稱對必須用逗號分隔。但是,函數必須按照出現在DRL文件中的方式編寫。這應該與“RuleSet”關鍵字出現在同一列;它可以在所有規則行之上,之間或之下。

?It may be more convenient to use Import, Variables, Functions and Queries repeatedly rather than packing several definitions into a single cell.

創建和集成基于電子表格的決策表

使用基于電子表格的決策表的API位于drools-decisiontables模塊中。實際上只有一個類可以看:SpreadsheetCompiler。這個類將采取各種格式的電子表格,并在DRL中生成規則(然后可以以正常的方式使用)。 SpreadsheetCompiler可以用來生成部分規則文件(如果需要的話),然后在事實之后將其組裝成一個完整的規則包(如果需要,可以將規則的技術和非技術方面分開)。

要開始,可以使用示例電子表格作為基礎。或者,如果正在使用插件(Rule Workbench IDE),則向導可以從模板生成電子表格(編輯它需要使用xls兼容的電子表格編輯器)。

Figure 19. IDE中的向導

管理決策表中的業務規則

工作流程和協作

電子表格是完善的商業工具(使用了25年以上)。決策表適合密切IT和領域專家之間的合作,同時使業務分析人員明確業務規則,這是一個理想的分離關注點。

通常,編寫規則的整個過程(提出一個新的決策表)將是這樣的:

  • 業務分析師采用模板決策表(從存儲庫或從IT)

  • 決策表業務語言描述被輸入到表格中

  • 決策表規則(行)被輸入(大致)

  • 決策表交給技術資源,他將業務語言(描述)映射到腳本(當然,這可能涉及軟件開發,如果是新的應用程序或數據模型)

  • 技術人員交回業務分析師的修改。

  • 業務分析師可以根據需要繼續編輯規則行(移動列周圍也很好等)。

  • 同時,技術人員可以為規則開發測試用例(與業務分析人員聯系),因為一旦系統運行,這些測試用例可用于驗證規則和規則更改。

  • 使用電子表格功能

    Excel等應用程序的功能可用于幫助將數據輸入電子表格,例如驗證字段。存儲在其他工作表中的列表可用于為單元格提供有效的值列表,如下圖所示。

    一些應用程序提供了有限的能力來保存更改的歷史記錄,但是建議使用另一種版本控制方法。當規則隨時間發生變化時,舊版本將被歸檔(許多開源解決方案,例如Subversion或Git)。

    規則模板

    與決策表(但不一定需要電子表格)相關的是“規則模板”(在drools-templates模塊中)。這些使用任何表格數據源作為規則數據的來源 - 填充模板以生成許多規則。這既可以用于更靈活的電子表格,也可以用于現有數據庫中的規則(以開發模板為代價來生成規則)。

    使用規則模板,數據與規則是分開的,并且規則的哪一部分是數據驅動的沒有限制。所以盡管你可以在決策表中做所有事情,但你也可以做以下的事情:

    • 將數據存儲在數據庫(或其他格式)

    • 有條件地根據數據中的值生成規則

    • 為規則的任何部分使用數據(例如條件運算符,類名稱,屬性名稱)

    • 通過相同的數據運行不同的模板。例如,顯示了一個更經典的決策表,但沒有規則元數據的任何隱藏行(所以電子表格只包含生成規則的原始數據)。

    Figure 20. 模板數據

    請參閱上述電子表格示例下載中的ExampleCheese.xls。

    如果這是一個常規決策表,那么在行1之前以及包含規則元數據的行1和行2之間將存在隱藏行。使用規則模板,數據與規則完全分開。這有兩個方便的后果 - 您可以將多個規則模板應用于相同的數據,并且您的數據根本不依賴于您的規則。那么模板是什么樣的?

    1 template header 2 age 3 type 4 log 5 6 package org.drools.examples.templates; 7 8 global java.util.List list; 9 10 template "cheesefans" 11 12 rule "Cheese fans_@{row.rowNumber}" 13 when 14 Person(age == @{age}) 15 Cheese(type == "@{type}") 16 then 17 list.add("@{log}"); 18 end 19 20 end template

    上述程序清單的注釋:

    • 第1行:所有規則模板以template header開始。

    • 第2-4行:在標題之后是按照它們在數據中出現的順序排列的列表。在這種情況下,我們稱第一列時間,第二種類型和第三個日志。

    • 第5行:空行表示列定義的結束。

    • 第6-9行:標準規則標題文本。這是DRL的標準規則,將出現在生成的DRL的頂部。將package語句和任何導入以及全局和函數定義放入本節。

    • 第10行:關鍵字模板表示規則模板的開始。模板文件中可以有多個模板,但每個模板都應該有唯一的名稱。

    • 第11-18行:規則模板 - 詳見下文。

    • 第20行:關鍵字結束模板表示模板的結尾。

    規則模板依靠MVEL使用語法@ {token_name}進行替換。目前有一個內置的表達式:@ {row.rowNumber},它為每一行數據提供唯一的編號,并使您能夠生成唯一的規則名稱。對于每一行數據,都會生成一個規則,用數據中的值代替模板中的令牌。

    規則模板必須包含在擴展名為.drt的文件中,并且在定義kmodule.xml文件中的kbase時與相應的決策表相關聯,如下例所示

    <?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://drools.org/xsd/kmodule"><kbase name="TemplatesKB" packages="org.drools.examples.templates"> <ruleTemplate dtable="org/drools/examples/templates/ExampleCheese.xls" template="org/drools/examples/templates/Cheese.drt" row="2" col="2"/> <ksession name="TemplatesKS"/> </kbase> </kmodule>

    通過上面的示例數據,將生成以下規則文件:

    package org.drools.examples.templates;global java.util.List list;rule "Cheese fans_1" whenPerson(age == 42) Cheese(type == "stilton") then list.add("Old man stilton"); end rule "Cheese fans_2" when Person(age == 21) Cheese(type == "cheddar") then list.add("Young man cheddar"); end

    此時,名為“TemplatesKS”的KieSession包含從模板生成的規則,可以簡單地從KieContainer創建,并用作其他KieSession。

    KieSession ksession = kc.newKieSession( "TemplatesKS" );// now create some test data ksession.insert( new Cheese( "stilton", 42 ) ); ksession.insert( new Person( "michael", "stilton", 42 ) ); final List<String> list = new ArrayList<String>(); ksession.setGlobal( "list", list ); ksession.fireAllRules();

    記錄日志

    照亮作為規則引擎的黑盒子的一種方法是玩日志級別。

    一切都記錄到SLF4J,這是一個簡單的日志記錄門面,可以將任何日志委托給Logback,Apache Commons Logging,Log4j或java.util.logging。將日志適配器的依賴關系添加到您選擇的日志框架中。如果你還沒有使用任何日志框架,你可以通過添加這個Maven依賴項來使用Logback:

    <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.x</version></dependency>
    ?如果您正在開發超輕型環境,請使用slf4j-nop或slf4j-simple。

    在包org.drools上配置日志記錄級別。例如:

    在Logback中,將其配置到您的logback.xml文件中:

    <configuration><logger name="org.drools" level="debug"/>...<configuration>

    在Log4J中,將其配置到您的log4j.xml文件中:

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><category name="org.drools"><priority value="debug" /></category>...</log4j:configuration>

    轉載于:https://www.cnblogs.com/prpl/p/7875328.html

    總結

    以上是生活随笔為你收集整理的Drools 7.4.1.Final参考手册(六) 用户手册的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    麻豆蜜桃av蜜臀av色欲av | 天天躁日日躁狠狠躁免费麻豆 | 国产明星裸体无码xxxx视频 | 无遮挡啪啪摇乳动态图 | 蜜桃av抽搐高潮一区二区 | 国产欧美精品一区二区三区 | 日本高清一区免费中文视频 | 无码任你躁久久久久久久 | 老头边吃奶边弄进去呻吟 | 免费无码肉片在线观看 | 久久五月精品中文字幕 | 亚洲一区二区三区偷拍女厕 | 波多野结衣高清一区二区三区 | 国产精品久久久久久久9999 | 中文字幕日产无线码一区 | 婷婷色婷婷开心五月四房播播 | 日日麻批免费40分钟无码 | 激情人妻另类人妻伦 | 国产成人精品必看 | 2020久久超碰国产精品最新 | 久久精品一区二区三区四区 | 曰韩无码二三区中文字幕 | 免费乱码人妻系列无码专区 | 中文无码成人免费视频在线观看 | 午夜时刻免费入口 | 国产欧美熟妇另类久久久 | 国产精品亚洲lv粉色 | 伊人久久大香线焦av综合影院 | 成人欧美一区二区三区黑人 | 波多野结衣av在线观看 | 久久 国产 尿 小便 嘘嘘 | 亚洲成av人影院在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲欧洲无卡二区视頻 | 国产精品va在线观看无码 | 福利一区二区三区视频在线观看 | 国产亚洲美女精品久久久2020 | 亚洲一区二区三区四区 | 亚洲国产av精品一区二区蜜芽 | 任你躁在线精品免费 | 久久久中文字幕日本无吗 | 中文字幕色婷婷在线视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 精品国产青草久久久久福利 | 国产精品无码一区二区三区不卡 | 又湿又紧又大又爽a视频国产 | 欧美老妇交乱视频在线观看 | 99国产精品白浆在线观看免费 | 精品一区二区不卡无码av | 樱花草在线播放免费中文 | 欧美 日韩 人妻 高清 中文 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品无码mv在线观看 | 免费无码肉片在线观看 | 国内精品人妻无码久久久影院蜜桃 | 网友自拍区视频精品 | 最近免费中文字幕中文高清百度 | 色五月五月丁香亚洲综合网 | 久久综合给合久久狠狠狠97色 | 国产综合色产在线精品 | 亚洲精品一区国产 | 日韩成人一区二区三区在线观看 | 双乳奶水饱满少妇呻吟 | 欧美zoozzooz性欧美 | 亚洲熟妇色xxxxx欧美老妇 | 粉嫩少妇内射浓精videos | 国产无遮挡又黄又爽免费视频 | 特黄特色大片免费播放器图片 | 最近免费中文字幕中文高清百度 | 国产亚洲精品久久久久久大师 | 精品无码成人片一区二区98 | 在线看片无码永久免费视频 | 国产精品a成v人在线播放 | 草草网站影院白丝内射 | 中文字幕乱妇无码av在线 | 秋霞成人午夜鲁丝一区二区三区 | 久久久精品国产sm最大网站 | 久久午夜无码鲁丝片 | 中文字幕乱妇无码av在线 | 婷婷丁香六月激情综合啪 | 国内精品一区二区三区不卡 | 日本护士毛茸茸高潮 | 野狼第一精品社区 | 18禁止看的免费污网站 | 国产精品美女久久久网av | 国产精品.xx视频.xxtv | 香蕉久久久久久av成人 | 性色欲网站人妻丰满中文久久不卡 | 在线看片无码永久免费视频 | 欧美老妇交乱视频在线观看 | 精品久久久中文字幕人妻 | 99久久婷婷国产综合精品青草免费 | 久久久成人毛片无码 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 九九久久精品国产免费看小说 | 日本又色又爽又黄的a片18禁 | 2020最新国产自产精品 | 久久亚洲日韩精品一区二区三区 | 亚洲中文字幕乱码av波多ji | 国产av人人夜夜澡人人爽麻豆 | 亚欧洲精品在线视频免费观看 | 激情人妻另类人妻伦 | 成人免费视频视频在线观看 免费 | 久久99精品久久久久婷婷 | 牛和人交xxxx欧美 | 色欲综合久久中文字幕网 | 最新版天堂资源中文官网 | 亚洲精品中文字幕久久久久 | 人人妻人人澡人人爽人人精品浪潮 | 国产精品99爱免费视频 | 久久精品女人的天堂av | 国产成人久久精品流白浆 | 国产精品99爱免费视频 | 美女极度色诱视频国产 | av人摸人人人澡人人超碰下载 | 伊人久久婷婷五月综合97色 | 亚洲成av人综合在线观看 | 国产免费久久精品国产传媒 | 免费观看又污又黄的网站 | 风流少妇按摩来高潮 | 亚洲人交乣女bbw | 亚洲无人区一区二区三区 | 亚洲а∨天堂久久精品2021 | 色一情一乱一伦一视频免费看 | 67194成是人免费无码 | 国产午夜亚洲精品不卡下载 | 成人亚洲精品久久久久软件 | 亚洲国产成人av在线观看 | 日韩精品无码一区二区中文字幕 | 久久久久人妻一区精品色欧美 | 久久熟妇人妻午夜寂寞影院 | 亚洲精品久久久久久久久久久 | 一个人看的www免费视频在线观看 | 人妻无码αv中文字幕久久琪琪布 | 欧美丰满老熟妇xxxxx性 | 九一九色国产 | 又大又紧又粉嫩18p少妇 | 无套内谢的新婚少妇国语播放 | 色诱久久久久综合网ywww | 丰满妇女强制高潮18xxxx | 亚洲欧美日韩国产精品一区二区 | 毛片内射-百度 | 国产av无码专区亚洲awww | 亚洲国产精品久久久久久 | 亚洲精品国偷拍自产在线麻豆 | 久久精品中文闷骚内射 | 中文字幕精品av一区二区五区 | 欧美国产日产一区二区 | 最近免费中文字幕中文高清百度 | 中文字幕av日韩精品一区二区 | 欧美肥老太牲交大战 | 无码免费一区二区三区 | 成 人 免费观看网站 | 欧美老熟妇乱xxxxx | 人人爽人人爽人人片av亚洲 | 内射后入在线观看一区 | 国产真实乱对白精彩久久 | 四虎永久在线精品免费网址 | 我要看www免费看插插视频 | 亚洲娇小与黑人巨大交 | 免费乱码人妻系列无码专区 | 亚洲人亚洲人成电影网站色 | 国色天香社区在线视频 | 欧美大屁股xxxxhd黑色 | 日本免费一区二区三区最新 | a片免费视频在线观看 | 乱码午夜-极国产极内射 | 亚洲成色www久久网站 | 亚洲一区二区三区播放 | 少妇人妻av毛片在线看 | 亚洲人交乣女bbw | 精品乱子伦一区二区三区 | 国产无遮挡又黄又爽又色 | 日本高清一区免费中文视频 | 国产av一区二区三区最新精品 | 国产精品久久福利网站 | 丰满肥臀大屁股熟妇激情视频 | 两性色午夜视频免费播放 | 日韩av无码中文无码电影 | 国产精品久久久久7777 | 亚洲春色在线视频 | 精品成人av一区二区三区 | 日韩在线不卡免费视频一区 | 精品国产av色一区二区深夜久久 | 国产人妻人伦精品 | 激情内射亚州一区二区三区爱妻 | 亚洲精品中文字幕乱码 | 欧美一区二区三区视频在线观看 | 亚洲va中文字幕无码久久不卡 | 亚洲精品久久久久中文第一幕 | 欧美喷潮久久久xxxxx | 少妇邻居内射在线 | 亚洲日韩中文字幕在线播放 | 日韩视频 中文字幕 视频一区 | 久久国产精品精品国产色婷婷 | 偷窥日本少妇撒尿chinese | 亚洲欧美日韩综合久久久 | av小次郎收藏 | 宝宝好涨水快流出来免费视频 | 麻豆果冻传媒2021精品传媒一区下载 | 国产精品香蕉在线观看 | 亚欧洲精品在线视频免费观看 | 久久精品一区二区三区四区 | 香蕉久久久久久av成人 | 久久亚洲a片com人成 | 超碰97人人做人人爱少妇 | 男女下面进入的视频免费午夜 | 男人和女人高潮免费网站 | 欧美日韩在线亚洲综合国产人 | 久久久精品欧美一区二区免费 | 国产精品福利视频导航 | 影音先锋中文字幕无码 | 成人影院yy111111在线观看 | 一本久久a久久精品vr综合 | 激情内射日本一区二区三区 | 成人无码视频免费播放 | 丰满少妇熟乱xxxxx视频 | 午夜性刺激在线视频免费 | 亚洲欧洲中文日韩av乱码 | 久久久久久av无码免费看大片 | 亚洲欧洲中文日韩av乱码 | 搡女人真爽免费视频大全 | 无码人妻少妇伦在线电影 | 国产深夜福利视频在线 | 精品偷拍一区二区三区在线看 | 亚洲精品成人av在线 | 欧洲精品码一区二区三区免费看 | 国产农村妇女高潮大叫 | 日韩av无码一区二区三区 | 国产乱人伦av在线无码 | 无码av中文字幕免费放 | 国产成人综合美国十次 | 人人妻人人藻人人爽欧美一区 | 国语自产偷拍精品视频偷 | 久久亚洲a片com人成 | 在线天堂新版最新版在线8 | 欧美丰满老熟妇xxxxx性 | 久久精品成人欧美大片 | 成人免费视频视频在线观看 免费 | 久久精品国产亚洲精品 | 国产又爽又黄又刺激的视频 | 男女作爱免费网站 | 日日天日日夜日日摸 | 玩弄中年熟妇正在播放 | 国产成人无码一二三区视频 | 无码国产乱人伦偷精品视频 | 久久五月精品中文字幕 | 亚洲中文字幕久久无码 | 中文字幕乱码人妻二区三区 | 国产成人综合在线女婷五月99播放 | 天天做天天爱天天爽综合网 | 国产真实乱对白精彩久久 | 国产高潮视频在线观看 | 欧美阿v高清资源不卡在线播放 | 亚洲精品欧美二区三区中文字幕 | 四虎永久在线精品免费网址 | 人人澡人摸人人添 | 男人和女人高潮免费网站 | 2019nv天堂香蕉在线观看 | 国产午夜视频在线观看 | 动漫av网站免费观看 | 中文字幕乱码亚洲无线三区 | 亚洲小说图区综合在线 | 国产免费观看黄av片 | 成人欧美一区二区三区 | 亚洲国产精品成人久久蜜臀 | 香港三级日本三级妇三级 | 精品熟女少妇av免费观看 | 精品水蜜桃久久久久久久 | 国产农村妇女高潮大叫 | 成人性做爰aaa片免费看 | 四虎永久在线精品免费网址 | 性开放的女人aaa片 | 成人欧美一区二区三区黑人 | 激情五月综合色婷婷一区二区 | 88国产精品欧美一区二区三区 | 国産精品久久久久久久 | 5858s亚洲色大成网站www | 一本久道高清无码视频 | 99久久久无码国产精品免费 | 欧美精品在线观看 | 国产免费无码一区二区视频 | 爽爽影院免费观看 | 一本久久a久久精品vr综合 | 少妇愉情理伦片bd | 东京热无码av男人的天堂 | 亚洲成a人片在线观看日本 | 日日麻批免费40分钟无码 | 欧美精品无码一区二区三区 | 欧美人与禽zoz0性伦交 | 蜜桃视频韩日免费播放 | 精品久久久无码中文字幕 | 无码一区二区三区在线观看 | 色婷婷综合中文久久一本 | 免费网站看v片在线18禁无码 | 夜夜高潮次次欢爽av女 | 97资源共享在线视频 | 久久亚洲中文字幕精品一区 | 在线观看国产一区二区三区 | 131美女爱做视频 | 国产疯狂伦交大片 | 无码国产激情在线观看 | 亚洲色成人中文字幕网站 | 激情综合激情五月俺也去 | 久久精品中文字幕大胸 | 日韩无码专区 | 黑森林福利视频导航 | 天天燥日日燥 | 人人妻人人澡人人爽人人精品浪潮 | 亚无码乱人伦一区二区 | 国产精品久久久久9999小说 | 欧美熟妇另类久久久久久多毛 | 蜜桃臀无码内射一区二区三区 | 国产办公室秘书无码精品99 | 国产欧美熟妇另类久久久 | 久久久精品国产sm最大网站 | 一本久道高清无码视频 | 免费国产黄网站在线观看 | 久久久久se色偷偷亚洲精品av | 久久精品国产大片免费观看 | 国产精品二区一区二区aⅴ污介绍 | 成人免费视频在线观看 | 国产av一区二区精品久久凹凸 | 亚洲aⅴ无码成人网站国产app | 精品人妻人人做人人爽 | 男人和女人高潮免费网站 | 人妻无码αv中文字幕久久琪琪布 | 精品国产一区二区三区av 性色 | 国产午夜亚洲精品不卡下载 | 红桃av一区二区三区在线无码av | 兔费看少妇性l交大片免费 | 97精品国产97久久久久久免费 | 亚洲爆乳无码专区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 在线 国产 欧美 亚洲 天堂 | 国产手机在线αⅴ片无码观看 | 老太婆性杂交欧美肥老太 | 久久久久人妻一区精品色欧美 | 亚洲一区二区三区在线观看网站 | 男女猛烈xx00免费视频试看 | 中文亚洲成a人片在线观看 | 久久无码中文字幕免费影院蜜桃 | 亚洲日韩乱码中文无码蜜桃臀网站 | 成人试看120秒体验区 | 欧美丰满熟妇xxxx | 日日躁夜夜躁狠狠躁 | 日韩欧美群交p片內射中文 | 中文毛片无遮挡高清免费 | 中文字幕久久久久人妻 | 99久久久无码国产aaa精品 | 色婷婷香蕉在线一区二区 | 久久久久成人精品免费播放动漫 | 亚洲成a人片在线观看日本 | 欧美国产日韩亚洲中文 | 偷窥日本少妇撒尿chinese | 捆绑白丝粉色jk震动捧喷白浆 | 久精品国产欧美亚洲色aⅴ大片 | 98国产精品综合一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 狠狠躁日日躁夜夜躁2020 | 国产精品欧美成人 | 一个人免费观看的www视频 | 国产绳艺sm调教室论坛 | 2020最新国产自产精品 | 午夜精品一区二区三区的区别 | 国产亚洲精品久久久闺蜜 | 日日碰狠狠丁香久燥 | 国产亚洲欧美日韩亚洲中文色 | 男女下面进入的视频免费午夜 | 亚洲毛片av日韩av无码 | 一二三四在线观看免费视频 | 成人精品视频一区二区三区尤物 | 自拍偷自拍亚洲精品被多人伦好爽 | 色综合久久中文娱乐网 | 精品水蜜桃久久久久久久 | 久久久精品人妻久久影视 | 67194成是人免费无码 | 国产无套内射久久久国产 | 亚洲综合色区中文字幕 | 国产亚洲人成在线播放 | 国产高清av在线播放 | 99久久精品国产一区二区蜜芽 | www国产亚洲精品久久网站 | 一本久久a久久精品vr综合 | 亚洲国产精品成人久久蜜臀 | 又紧又大又爽精品一区二区 | 亚洲熟妇色xxxxx亚洲 | 日韩av无码一区二区三区 | 久久精品无码一区二区三区 | 性做久久久久久久久 | 无码av最新清无码专区吞精 | 久久婷婷五月综合色国产香蕉 | 中文字幕无码免费久久9一区9 | 亚洲综合无码久久精品综合 | 国产97色在线 | 免 | 亚洲色欲色欲欲www在线 | 久久久久久久人妻无码中文字幕爆 | 丰满岳乱妇在线观看中字无码 | 女人和拘做爰正片视频 | 日韩视频 中文字幕 视频一区 | 曰韩无码二三区中文字幕 | 国产成人综合美国十次 | 曰韩少妇内射免费播放 | 日韩视频 中文字幕 视频一区 | 欧美亚洲国产一区二区三区 | 久久精品丝袜高跟鞋 | 欧美成人免费全部网站 | 亚洲热妇无码av在线播放 | 亚洲国产精品毛片av不卡在线 | 亚洲一区二区三区香蕉 | 国产一精品一av一免费 | 天天躁日日躁狠狠躁免费麻豆 | 性欧美牲交在线视频 | 国产舌乚八伦偷品w中 | 又湿又紧又大又爽a视频国产 | 日本精品高清一区二区 | 亚洲午夜福利在线观看 | 国产内射爽爽大片视频社区在线 | 粉嫩少妇内射浓精videos | 国精产品一区二区三区 | 国产精品美女久久久久av爽李琼 | 国产精品视频免费播放 | 国产av剧情md精品麻豆 | 国产av无码专区亚洲a∨毛片 | 狂野欧美性猛xxxx乱大交 | 亚洲欧美色中文字幕在线 | 国产一区二区三区四区五区加勒比 | 亚洲日本一区二区三区在线 | 在线亚洲高清揄拍自拍一品区 | 日日天日日夜日日摸 | 精品亚洲成av人在线观看 | 人人超人人超碰超国产 | 国产深夜福利视频在线 | 国产福利视频一区二区 | 欧美亚洲国产一区二区三区 | 无码精品国产va在线观看dvd | 亚洲一区二区三区四区 | 18禁黄网站男男禁片免费观看 | aa片在线观看视频在线播放 | 小sao货水好多真紧h无码视频 | 国产成人无码a区在线观看视频app | 青草青草久热国产精品 | 日韩亚洲欧美中文高清在线 | 麻豆果冻传媒2021精品传媒一区下载 | 九一九色国产 | 日韩精品无码免费一区二区三区 | 中文字幕精品av一区二区五区 | 亚洲中文字幕在线观看 | 婷婷六月久久综合丁香 | av在线亚洲欧洲日产一区二区 | 日韩精品a片一区二区三区妖精 | 国产办公室秘书无码精品99 | 亚洲成a人片在线观看无码3d | 粗大的内捧猛烈进出视频 | 国产激情一区二区三区 | a片免费视频在线观看 | 骚片av蜜桃精品一区 | 久久综合网欧美色妞网 | 精品久久久无码人妻字幂 | 熟女少妇人妻中文字幕 | 日本一本二本三区免费 | 大肉大捧一进一出视频出来呀 | 中文字幕无线码免费人妻 | 狂野欧美性猛交免费视频 | 综合人妻久久一区二区精品 | 一本精品99久久精品77 | 国产欧美精品一区二区三区 | 小鲜肉自慰网站xnxx | 中文字幕日韩精品一区二区三区 | 国内精品九九久久久精品 | 久久午夜无码鲁丝片 | а√资源新版在线天堂 | 久久久中文久久久无码 | 天天爽夜夜爽夜夜爽 | 性欧美熟妇videofreesex | 人人妻人人藻人人爽欧美一区 | √8天堂资源地址中文在线 | 亚洲成av人片在线观看无码不卡 | 漂亮人妻洗澡被公强 日日躁 | 国产三级精品三级男人的天堂 | 中文字幕无线码 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品国产三级国产专播 | 久久久精品成人免费观看 | 国精产品一区二区三区 | 日日摸天天摸爽爽狠狠97 | 欧美freesex黑人又粗又大 | 又湿又紧又大又爽a视频国产 | 国产特级毛片aaaaaaa高清 | 国产性生交xxxxx无码 | 久久久精品成人免费观看 | 国产成人一区二区三区在线观看 | 少女韩国电视剧在线观看完整 | 成人无码精品1区2区3区免费看 | 亚洲精品无码国产 | 无码吃奶揉捏奶头高潮视频 | 亚洲阿v天堂在线 | 国产精品高潮呻吟av久久4虎 | 国产激情一区二区三区 | 99精品无人区乱码1区2区3区 | 久久久精品成人免费观看 | 亚洲男人av天堂午夜在 | 亚洲区小说区激情区图片区 | 国产精品久久久久9999小说 | 亚洲日韩av一区二区三区中文 | 亚洲人成影院在线无码按摩店 | 精品无人区无码乱码毛片国产 | 亚洲日韩一区二区 | 人妻无码久久精品人妻 | a片免费视频在线观看 | 亚洲国产一区二区三区在线观看 | 亚洲精品美女久久久久久久 | 蜜桃视频插满18在线观看 | 亚洲成色在线综合网站 | 天堂亚洲免费视频 | 欧美人与牲动交xxxx | 午夜精品一区二区三区在线观看 | 熟女俱乐部五十路六十路av | 一本久久a久久精品亚洲 | 一本无码人妻在中文字幕免费 | 日本一区二区三区免费播放 | 亚洲精品一区二区三区大桥未久 | 大色综合色综合网站 | 国产精品第一国产精品 | 国产香蕉尹人视频在线 | 亚洲无人区一区二区三区 | 人妻中文无码久热丝袜 | 最新国产麻豆aⅴ精品无码 | 久青草影院在线观看国产 | 久久精品无码一区二区三区 | 性欧美大战久久久久久久 | 黑人大群体交免费视频 | 久久综合狠狠综合久久综合88 | 丁香啪啪综合成人亚洲 | 亚洲男女内射在线播放 | 日本在线高清不卡免费播放 | 初尝人妻少妇中文字幕 | 人妻体内射精一区二区三四 | 国产精品第一区揄拍无码 | 国产精品视频免费播放 | 成人免费视频在线观看 | 久久综合九色综合欧美狠狠 | 国产人妻精品一区二区三区 | 久久久久成人精品免费播放动漫 | 成人无码精品一区二区三区 | 国产精品人妻一区二区三区四 | 99在线 | 亚洲 | 免费乱码人妻系列无码专区 | 成人欧美一区二区三区黑人 | 无码成人精品区在线观看 | 精品国产乱码久久久久乱码 | 又大又硬又黄的免费视频 | 国精产品一品二品国精品69xx | 特黄特色大片免费播放器图片 | 久久久久成人片免费观看蜜芽 | 日韩精品久久久肉伦网站 | 福利一区二区三区视频在线观看 | 欧美xxxx黑人又粗又长 | 欧美丰满熟妇xxxx | 秋霞特色aa大片 | 国内精品久久久久久中文字幕 | www国产亚洲精品久久网站 | av无码久久久久不卡免费网站 | 蜜臀av在线播放 久久综合激激的五月天 | 国产 精品 自在自线 | 欧美亚洲日韩国产人成在线播放 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 日产国产精品亚洲系列 | 久久五月精品中文字幕 | 给我免费的视频在线观看 | 亚洲s色大片在线观看 | 午夜丰满少妇性开放视频 | 亚洲精品国产精品乱码不卡 | 国产人妻人伦精品1国产丝袜 | 日产精品99久久久久久 | 精品一区二区三区无码免费视频 | 久9re热视频这里只有精品 | 久久99精品久久久久婷婷 | 人人妻人人澡人人爽欧美一区九九 | 少妇太爽了在线观看 | 四虎影视成人永久免费观看视频 | 欧美日韩一区二区三区自拍 | 国产明星裸体无码xxxx视频 | 免费人成在线观看网站 | 老司机亚洲精品影院无码 | 久久精品国产99精品亚洲 | 图片小说视频一区二区 | 精品夜夜澡人妻无码av蜜桃 | 亚洲中文字幕成人无码 | 久久成人a毛片免费观看网站 | 澳门永久av免费网站 | 亚洲精品国产精品乱码视色 | 久久久精品人妻久久影视 | 亚洲一区二区三区国产精华液 | 国产无av码在线观看 | 夜夜躁日日躁狠狠久久av | 无遮挡啪啪摇乳动态图 | 亚洲高清偷拍一区二区三区 | 任你躁在线精品免费 | 久久精品国产亚洲精品 | 18禁止看的免费污网站 | 国产三级精品三级男人的天堂 | 免费播放一区二区三区 | 国产成人精品优优av | 国产人妻精品一区二区三区不卡 | 久久久精品456亚洲影院 | 久久久精品国产sm最大网站 | 欧美成人高清在线播放 | 亚洲日本在线电影 | 成人精品一区二区三区中文字幕 | 成人免费视频视频在线观看 免费 | 三上悠亚人妻中文字幕在线 | 成人试看120秒体验区 | 亚洲乱码国产乱码精品精 | 久久亚洲精品成人无码 | 麻豆成人精品国产免费 | 国产精品多人p群无码 | 久久这里只有精品视频9 | 国产av无码专区亚洲a∨毛片 | 日本高清一区免费中文视频 | 麻豆国产97在线 | 欧洲 | 人妻少妇精品无码专区二区 | 亚洲综合无码一区二区三区 | 无码人中文字幕 | 东北女人啪啪对白 | 色欲综合久久中文字幕网 | 亚洲国产午夜精品理论片 | 老太婆性杂交欧美肥老太 | 久久久久成人片免费观看蜜芽 | 亚洲一区二区三区偷拍女厕 | 亚洲成在人网站无码天堂 | 中文字幕 亚洲精品 第1页 | 久久久久99精品成人片 | 久久精品中文闷骚内射 | 巨爆乳无码视频在线观看 | 欧美性生交xxxxx久久久 | 欧美喷潮久久久xxxxx | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 网友自拍区视频精品 | 久久99国产综合精品 | 久久久久人妻一区精品色欧美 | 香港三级日本三级妇三级 | 沈阳熟女露脸对白视频 | 黑森林福利视频导航 | 亚洲一区二区三区香蕉 | 内射老妇bbwx0c0ck | 无码人妻出轨黑人中文字幕 | 玩弄人妻少妇500系列视频 | 欧美刺激性大交 | 日韩av激情在线观看 | 国产精品va在线观看无码 | 欧美 丝袜 自拍 制服 另类 | 少妇性l交大片欧洲热妇乱xxx | 中文字幕日产无线码一区 | 亚洲国产av精品一区二区蜜芽 | 国产美女精品一区二区三区 | 欧美肥老太牲交大战 | 久久99久久99精品中文字幕 | 国产精品亚洲а∨无码播放麻豆 | 日本精品人妻无码免费大全 | 色欲久久久天天天综合网精品 | 久久99精品久久久久久 | 2020久久香蕉国产线看观看 | 动漫av网站免费观看 | 大地资源中文第3页 | 中文字幕无码av波多野吉衣 | 国产麻豆精品精东影业av网站 | 亚洲国产精品无码一区二区三区 | 国产精品无套呻吟在线 | 国内老熟妇对白xxxxhd | 男人的天堂av网站 | 巨爆乳无码视频在线观看 | 国产午夜亚洲精品不卡下载 | 亚洲成av人在线观看网址 | 一区二区三区高清视频一 | 精品一区二区三区无码免费视频 | 亚洲国产精品无码久久久久高潮 | 久久综合给久久狠狠97色 | 精品无码成人片一区二区98 | 亚洲中文字幕无码一久久区 | 国产网红无码精品视频 | 亚洲色欲久久久综合网东京热 | 亚洲国产欧美在线成人 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲另类伦春色综合小说 | 欧美黑人性暴力猛交喷水 | 黑森林福利视频导航 | 内射后入在线观看一区 | 亚洲精品久久久久avwww潮水 | 中文字幕精品av一区二区五区 | 久久久久久久女国产乱让韩 | 欧美 日韩 人妻 高清 中文 | 午夜理论片yy44880影院 | 国产热a欧美热a在线视频 | 亚洲乱码日产精品bd | 999久久久国产精品消防器材 | aa片在线观看视频在线播放 | 中文字幕无码av波多野吉衣 | 纯爱无遮挡h肉动漫在线播放 | 精品一区二区不卡无码av | 欧洲熟妇色 欧美 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 熟妇人妻无码xxx视频 | 日韩人妻少妇一区二区三区 | 精品国产精品久久一区免费式 | 亚洲欧美国产精品专区久久 | 国产艳妇av在线观看果冻传媒 | 亚洲一区二区三区在线观看网站 | 国产乱人伦av在线无码 | 99久久精品午夜一区二区 | 日本饥渴人妻欲求不满 | 成人综合网亚洲伊人 | 久久久久免费精品国产 | 国产精品亚洲综合色区韩国 | 2020久久香蕉国产线看观看 | 免费看男女做好爽好硬视频 | 精品少妇爆乳无码av无码专区 | 成人免费视频一区二区 | 人人妻人人澡人人爽精品欧美 | 亚洲s码欧洲m码国产av | 国产av无码专区亚洲a∨毛片 | 青青青爽视频在线观看 | 日本xxxx色视频在线观看免费 | 国产成人无码午夜视频在线观看 | 亚洲午夜福利在线观看 | 亚拍精品一区二区三区探花 | 国产精品99久久精品爆乳 | 女人和拘做爰正片视频 | 国产精品第一区揄拍无码 | 亚洲色欲色欲天天天www | 爆乳一区二区三区无码 | 亚洲日韩av片在线观看 | 日韩 欧美 动漫 国产 制服 | 色婷婷综合激情综在线播放 | 东京无码熟妇人妻av在线网址 | 国产精品第一国产精品 | 日本精品高清一区二区 | 欧美老人巨大xxxx做受 | 国产精品永久免费视频 | 久久精品国产一区二区三区 | 激情五月综合色婷婷一区二区 | 欧美自拍另类欧美综合图片区 | 麻豆md0077饥渴少妇 | 亚洲中文字幕av在天堂 | 成人亚洲精品久久久久 | 亚洲国产精品一区二区美利坚 | 亚洲一区二区三区含羞草 | 国产麻豆精品一区二区三区v视界 | 真人与拘做受免费视频 | √天堂中文官网8在线 | 狠狠亚洲超碰狼人久久 | 天天拍夜夜添久久精品大 | 久热国产vs视频在线观看 | 国产成人精品优优av | 成年美女黄网站色大免费全看 | 欧美兽交xxxx×视频 | 好爽又高潮了毛片免费下载 | 久久人人爽人人爽人人片ⅴ | 牛和人交xxxx欧美 | 亚洲精品www久久久 | 国产精品高潮呻吟av久久 | 欧美真人作爱免费视频 | 精品日本一区二区三区在线观看 | 小sao货水好多真紧h无码视频 | 成人欧美一区二区三区黑人 | 精品成在人线av无码免费看 | 欧美日韩久久久精品a片 | 国产成人无码a区在线观看视频app | 综合激情五月综合激情五月激情1 | 又色又爽又黄的美女裸体网站 | www国产亚洲精品久久网站 | 成人aaa片一区国产精品 | 亚洲成av人片天堂网无码】 | 中文字幕无码人妻少妇免费 | 一区二区传媒有限公司 | 欧美人与善在线com | 亚洲精品成人福利网站 | 久久精品国产大片免费观看 | 欧美三级不卡在线观看 | 亚洲经典千人经典日产 | 又大又硬又黄的免费视频 | 强开小婷嫩苞又嫩又紧视频 | 亚洲无人区一区二区三区 | 天堂а√在线中文在线 | 欧美猛少妇色xxxxx | v一区无码内射国产 | 欧美精品国产综合久久 | 欧美35页视频在线观看 | 97se亚洲精品一区 | 国产精品二区一区二区aⅴ污介绍 | 天天拍夜夜添久久精品 | 亚洲s码欧洲m码国产av | 亚洲成av人片在线观看无码不卡 | 国产精品-区区久久久狼 | 久久久久久九九精品久 | 国产精品第一区揄拍无码 | а√资源新版在线天堂 | 亚洲人成人无码网www国产 | 亚洲码国产精品高潮在线 | 久久久久久亚洲精品a片成人 | 久久婷婷五月综合色国产香蕉 | 性欧美牲交xxxxx视频 | 国语精品一区二区三区 | 欧美freesex黑人又粗又大 | 亚洲欧洲日本综合aⅴ在线 | 草草网站影院白丝内射 | 日产国产精品亚洲系列 | 国产成人无码专区 | 1000部啪啪未满十八勿入下载 | 日本熟妇大屁股人妻 | 国产精品无码一区二区三区不卡 | 国产激情无码一区二区 | 中文字幕无码av波多野吉衣 | 免费国产成人高清在线观看网站 | 一本久久a久久精品vr综合 | 在线播放无码字幕亚洲 | 久久精品国产一区二区三区肥胖 | 少妇性荡欲午夜性开放视频剧场 | 亚洲色欲色欲欲www在线 | 波多野结衣乳巨码无在线观看 | 特大黑人娇小亚洲女 | 永久黄网站色视频免费直播 | 亚洲欧美国产精品专区久久 | 国产精品美女久久久 | 亚洲欧美精品aaaaaa片 | 粗大的内捧猛烈进出视频 | 欧美性猛交xxxx富婆 | 中文毛片无遮挡高清免费 | 欧美丰满熟妇xxxx性ppx人交 | 日本丰满熟妇videos | 扒开双腿吃奶呻吟做受视频 | 国产成人无码一二三区视频 | 国产va免费精品观看 | 97久久超碰中文字幕 | 中文字幕日产无线码一区 | a片免费视频在线观看 | 美女扒开屁股让男人桶 | 国产av无码专区亚洲a∨毛片 | 波多野结衣乳巨码无在线观看 | 国产成人无码av一区二区 | 九九久久精品国产免费看小说 | 亚洲精品中文字幕久久久久 | 高潮毛片无遮挡高清免费视频 | 国产精品福利视频导航 | 丰满少妇女裸体bbw | 在线视频网站www色 | 午夜不卡av免费 一本久久a久久精品vr综合 | 最新国产麻豆aⅴ精品无码 | 99re在线播放 | 精品乱子伦一区二区三区 | 免费播放一区二区三区 | 人妻天天爽夜夜爽一区二区 | 网友自拍区视频精品 | 老司机亚洲精品影院 | 国产另类ts人妖一区二区 | 免费人成在线观看网站 | 国产精品无码一区二区桃花视频 | 久久天天躁夜夜躁狠狠 | 国产亚洲精品久久久ai换 | 漂亮人妻洗澡被公强 日日躁 | 中文字幕无码热在线视频 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品中文字幕乱码 | 少妇无码av无码专区在线观看 | 强开小婷嫩苞又嫩又紧视频 | 欧美日韩亚洲国产精品 | 国产午夜无码视频在线观看 | 免费无码肉片在线观看 | 99久久无码一区人妻 | 久久人人爽人人爽人人片av高清 | 极品嫩模高潮叫床 | 亚洲 日韩 欧美 成人 在线观看 | 欧美日韩久久久精品a片 | 一本精品99久久精品77 | 伊人久久大香线焦av综合影院 | a片免费视频在线观看 | 俺去俺来也在线www色官网 | 18禁黄网站男男禁片免费观看 | 国产精品高潮呻吟av久久 | 我要看www免费看插插视频 | 国产黑色丝袜在线播放 | 国产精品久久精品三级 | 国产人成高清在线视频99最全资源 | 少妇性荡欲午夜性开放视频剧场 | 强伦人妻一区二区三区视频18 | 国产 浪潮av性色四虎 | 久久99精品久久久久久动态图 | 亚洲gv猛男gv无码男同 | 天干天干啦夜天干天2017 | 自拍偷自拍亚洲精品被多人伦好爽 | 任你躁在线精品免费 | 精品欧美一区二区三区久久久 | 国产精品久久久久7777 | 夜先锋av资源网站 | 亚洲一区二区三区无码久久 | 久久zyz资源站无码中文动漫 | 久久精品国产一区二区三区 | 免费观看激色视频网站 | 日本大乳高潮视频在线观看 | 亚洲成a人一区二区三区 | 波多野42部无码喷潮在线 | 丰满妇女强制高潮18xxxx | 国产熟妇另类久久久久 | 欧美人与牲动交xxxx | 久久无码人妻影院 | 国精品人妻无码一区二区三区蜜柚 | 亚洲另类伦春色综合小说 | 日日碰狠狠躁久久躁蜜桃 | 中文字幕无码免费久久9一区9 | 一个人看的www免费视频在线观看 | 亚洲综合无码久久精品综合 | 久久久精品成人免费观看 | 久久国产精品偷任你爽任你 | 国产乡下妇女做爰 | 亚欧洲精品在线视频免费观看 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品久久久久久无码 | 精品 日韩 国产 欧美 视频 | 四虎永久在线精品免费网址 | 夜夜高潮次次欢爽av女 | 大肉大捧一进一出好爽视频 | 亚洲人交乣女bbw | 国产熟女一区二区三区四区五区 | 久久精品丝袜高跟鞋 | 色婷婷香蕉在线一区二区 | 国产精品亚洲а∨无码播放麻豆 | 国产精品久久久av久久久 | 亚洲第一无码av无码专区 | 久久久久免费看成人影片 | 中文字幕日韩精品一区二区三区 | 午夜嘿嘿嘿影院 | 亚洲中文字幕无码一久久区 | 蜜桃臀无码内射一区二区三区 | 欧美激情综合亚洲一二区 | 影音先锋中文字幕无码 | 国精品人妻无码一区二区三区蜜柚 | 真人与拘做受免费视频一 | 国产成人av免费观看 | 亚洲日韩中文字幕在线播放 | 精品一区二区三区波多野结衣 | 欧美国产亚洲日韩在线二区 | 国产精品办公室沙发 | 亚洲の无码国产の无码影院 | 久久综合久久自在自线精品自 | 欧美怡红院免费全部视频 | 国产免费无码一区二区视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲精品久久久久久久久久久 | 国产xxx69麻豆国语对白 | 美女毛片一区二区三区四区 | 黑人大群体交免费视频 | 亚洲色www成人永久网址 | 亚洲成av人在线观看网址 | 免费无码av一区二区 | 无码av免费一区二区三区试看 | 18禁黄网站男男禁片免费观看 | 欧美性猛交xxxx富婆 | 婷婷丁香五月天综合东京热 | 国产乱人偷精品人妻a片 | 亚洲色欲久久久综合网东京热 | 丰满人妻被黑人猛烈进入 | 国产欧美亚洲精品a | 国产九九九九九九九a片 | 真人与拘做受免费视频 | 日本丰满护士爆乳xxxx | 熟妇激情内射com | 狠狠色噜噜狠狠狠7777奇米 | 无套内谢的新婚少妇国语播放 | 人妻与老人中文字幕 | 风流少妇按摩来高潮 | 中文字幕日韩精品一区二区三区 | 国产激情艳情在线看视频 | 成人无码影片精品久久久 | 内射巨臀欧美在线视频 | 国产亚洲精品久久久久久大师 | 乱中年女人伦av三区 | 国产成人精品久久亚洲高清不卡 | 无套内谢老熟女 | 蜜桃视频插满18在线观看 | 国内少妇偷人精品视频免费 | 人人妻人人澡人人爽人人精品浪潮 | 精品人妻中文字幕有码在线 | 自拍偷自拍亚洲精品被多人伦好爽 | 老司机亚洲精品影院无码 | 在教室伦流澡到高潮hnp视频 | 国产无套内射久久久国产 | 欧美色就是色 | 女人色极品影院 | 欧美激情一区二区三区成人 | 午夜精品久久久久久久久 | 日本熟妇大屁股人妻 | 欧美激情一区二区三区成人 | 丁香啪啪综合成人亚洲 | 日本一卡二卡不卡视频查询 | 国产电影无码午夜在线播放 | 国产艳妇av在线观看果冻传媒 | 久久精品国产99久久6动漫 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲精品中文字幕乱码 | 亚洲中文字幕久久无码 | 男人的天堂av网站 | 人妻aⅴ无码一区二区三区 | 日本精品久久久久中文字幕 | 精品少妇爆乳无码av无码专区 | 国产午夜亚洲精品不卡 | 日本欧美一区二区三区乱码 | 天堂无码人妻精品一区二区三区 | 性生交大片免费看l | 久久精品99久久香蕉国产色戒 | 一本久久a久久精品vr综合 | 18黄暴禁片在线观看 | 精品国偷自产在线 | 国产亚洲精品久久久久久大师 | 无码国内精品人妻少妇 | 一本久久a久久精品vr综合 | 久久久久人妻一区精品色欧美 | 男人扒开女人内裤强吻桶进去 | 精品欧洲av无码一区二区三区 | 免费观看又污又黄的网站 | av无码不卡在线观看免费 | 国产精品亚洲专区无码不卡 | 国产精品久久久久无码av色戒 | 国产精品国产自线拍免费软件 | 少妇人妻av毛片在线看 | 国产福利视频一区二区 | 亚洲区小说区激情区图片区 | 国产va免费精品观看 | 国产猛烈高潮尖叫视频免费 | 色综合久久中文娱乐网 | 日韩精品成人一区二区三区 | 亚洲狠狠婷婷综合久久 | 人人妻人人澡人人爽人人精品浪潮 | 四虎国产精品一区二区 | 久久久精品国产sm最大网站 | 97se亚洲精品一区 | 亚洲色www成人永久网址 | 亚洲国产精品久久久天堂 | 日韩av无码一区二区三区不卡 | 成人无码精品1区2区3区免费看 | www国产亚洲精品久久网站 | 亚洲综合无码一区二区三区 | 欧美xxxx黑人又粗又长 | 国产精品怡红院永久免费 | 搡女人真爽免费视频大全 | 色噜噜亚洲男人的天堂 | 丰满妇女强制高潮18xxxx | 国产内射老熟女aaaa | 最新版天堂资源中文官网 | 国产亲子乱弄免费视频 | 亚洲爆乳精品无码一区二区三区 | 国产精品自产拍在线观看 | 精品无码成人片一区二区98 | 欧美阿v高清资源不卡在线播放 | 一本无码人妻在中文字幕免费 | 乱人伦中文视频在线观看 | 成人亚洲精品久久久久 | 成人动漫在线观看 | 无码午夜成人1000部免费视频 | 亚洲精品一区国产 | 日本xxxx色视频在线观看免费 | 国产精品怡红院永久免费 | 亚洲aⅴ无码成人网站国产app | 一个人看的视频www在线 | 丰满诱人的人妻3 | 国精产品一区二区三区 | 亚洲国产精品成人久久蜜臀 | 中文字幕av日韩精品一区二区 | 亚洲综合在线一区二区三区 | 特级做a爰片毛片免费69 | 奇米影视7777久久精品 | 99久久久无码国产精品免费 | 国产成人精品久久亚洲高清不卡 | 在线观看国产一区二区三区 | 国产福利视频一区二区 | 日本大香伊一区二区三区 | 少妇人妻大乳在线视频 | 夜精品a片一区二区三区无码白浆 | 国产麻豆精品精东影业av网站 | 国产性生交xxxxx无码 | 久久久久久久人妻无码中文字幕爆 | 久久成人a毛片免费观看网站 | 内射欧美老妇wbb | 亚洲娇小与黑人巨大交 | 久久午夜无码鲁丝片 | 国产又爽又黄又刺激的视频 | 18黄暴禁片在线观看 | 国产精品免费大片 | 日欧一片内射va在线影院 | 亚洲国产成人av在线观看 | 国产精品a成v人在线播放 | 俺去俺来也www色官网 | 欧美老妇交乱视频在线观看 | 永久免费观看美女裸体的网站 | 最近免费中文字幕中文高清百度 | 娇妻被黑人粗大高潮白浆 | 草草网站影院白丝内射 | 麻豆国产人妻欲求不满 | www国产亚洲精品久久网站 | 亚欧洲精品在线视频免费观看 | 国产另类ts人妖一区二区 | 国产疯狂伦交大片 | 色欲久久久天天天综合网精品 | 秋霞成人午夜鲁丝一区二区三区 | 99麻豆久久久国产精品免费 | 亚洲乱码中文字幕在线 | 精品成在人线av无码免费看 | 久久99久久99精品中文字幕 | 亚洲熟妇自偷自拍另类 | 国产无遮挡又黄又爽又色 | 亚洲成a人片在线观看日本 | 色一情一乱一伦 | 玩弄人妻少妇500系列视频 | 亚洲阿v天堂在线 | 国产精品人人妻人人爽 | 免费看男女做好爽好硬视频 | yw尤物av无码国产在线观看 | 国产精品久久久久影院嫩草 | 亚洲中文字幕在线观看 | 色婷婷久久一区二区三区麻豆 | 激情人妻另类人妻伦 | 在线播放免费人成毛片乱码 | 亚洲一区av无码专区在线观看 | 日韩少妇内射免费播放 | 亚洲成色www久久网站 | 内射巨臀欧美在线视频 | 国产精品亚洲五月天高清 | 亚洲国产综合无码一区 | 性色欲情网站iwww九文堂 | 久久精品一区二区三区四区 | 牲欲强的熟妇农村老妇女视频 | 午夜男女很黄的视频 | 日本乱偷人妻中文字幕 | 内射白嫩少妇超碰 | 在线观看免费人成视频 | 成 人影片 免费观看 | 丰满人妻一区二区三区免费视频 | 中文字幕色婷婷在线视频 | 日韩精品成人一区二区三区 | 日本乱偷人妻中文字幕 | 在线观看欧美一区二区三区 | 亚洲第一无码av无码专区 | 7777奇米四色成人眼影 | 性生交片免费无码看人 | 国产精品a成v人在线播放 | а√资源新版在线天堂 | 欧美成人家庭影院 | 亚洲精品一区二区三区在线 | 夜夜躁日日躁狠狠久久av | 乱码av麻豆丝袜熟女系列 | 色窝窝无码一区二区三区色欲 | 成人欧美一区二区三区 | 人妻熟女一区 | 国内揄拍国内精品少妇国语 | 无码av免费一区二区三区试看 | 黑人粗大猛烈进出高潮视频 | 亚洲第一无码av无码专区 | 久久午夜无码鲁丝片午夜精品 | 欧美一区二区三区视频在线观看 | 日韩av无码一区二区三区 | 色综合久久88色综合天天 | 少妇人妻av毛片在线看 | 亚洲中文字幕av在天堂 | 亚洲成av人综合在线观看 | 久久久国产精品无码免费专区 | 精品日本一区二区三区在线观看 | 性啪啪chinese东北女人 | 欧美日韩一区二区免费视频 | 天堂а√在线中文在线 | 久久精品一区二区三区四区 | 欧美性生交xxxxx久久久 | 精品国精品国产自在久国产87 | 最近中文2019字幕第二页 | 欧美日本精品一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 日日摸夜夜摸狠狠摸婷婷 | 日本精品久久久久中文字幕 | 欧美 日韩 人妻 高清 中文 | 日本一区二区三区免费高清 | 国产一精品一av一免费 | 国产九九九九九九九a片 | 国产精品自产拍在线观看 | 亚洲色欲色欲天天天www | 欧美黑人乱大交 | 少妇的肉体aa片免费 | 日本va欧美va欧美va精品 | 狠狠色欧美亚洲狠狠色www | 狠狠亚洲超碰狼人久久 | 又大又黄又粗又爽的免费视频 | 天天燥日日燥 | 成在人线av无码免观看麻豆 | 亚洲日韩av片在线观看 | 亚洲精品鲁一鲁一区二区三区 | 无码成人精品区在线观看 | 夜先锋av资源网站 | 99精品视频在线观看免费 | 国产综合久久久久鬼色 | 国产香蕉尹人综合在线观看 | 欧美阿v高清资源不卡在线播放 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产精品福利视频导航 | 女人被爽到呻吟gif动态图视看 | 麻豆精产国品 | a片在线免费观看 | 思思久久99热只有频精品66 | 日韩成人一区二区三区在线观看 | 国产精品.xx视频.xxtv | 久久zyz资源站无码中文动漫 | 亚洲自偷自拍另类第1页 | 丰满人妻一区二区三区免费视频 | 熟妇女人妻丰满少妇中文字幕 | 久久精品人人做人人综合试看 | 人妻aⅴ无码一区二区三区 | 日日摸天天摸爽爽狠狠97 | 伊人久久婷婷五月综合97色 | 亚洲无人区午夜福利码高清完整版 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美日韩一区二区综合 | 国产做国产爱免费视频 | 亚洲 日韩 欧美 成人 在线观看 | 久久久国产一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 无码纯肉视频在线观看 | 天海翼激烈高潮到腰振不止 | 国产精品手机免费 | 一本久道久久综合狠狠爱 | 无码人妻少妇伦在线电影 | 久久亚洲a片com人成 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲日韩一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 久久精品女人天堂av免费观看 | 国产色xx群视频射精 | 亚洲日本va午夜在线电影 | 粉嫩少妇内射浓精videos | 国产午夜福利亚洲第一 | 国产又爽又黄又刺激的视频 | 狂野欧美激情性xxxx | 国产香蕉尹人综合在线观看 | 国产区女主播在线观看 | 99麻豆久久久国产精品免费 | 国产真实夫妇视频 | 国产精品理论片在线观看 | 双乳奶水饱满少妇呻吟 | 亚洲精品国产精品乱码不卡 | 国产精品va在线播放 | 国产在线一区二区三区四区五区 | 精品水蜜桃久久久久久久 | 国产又爽又黄又刺激的视频 | a片免费视频在线观看 | 少妇激情av一区二区 | 夜精品a片一区二区三区无码白浆 | 亚洲人成人无码网www国产 | 久久久久久av无码免费看大片 | 国产三级精品三级男人的天堂 | 欧美zoozzooz性欧美 | 免费看少妇作爱视频 | 国产精品对白交换视频 | 日韩精品成人一区二区三区 | www国产精品内射老师 | 55夜色66夜色国产精品视频 | 国产精品.xx视频.xxtv | 日本欧美一区二区三区乱码 | 捆绑白丝粉色jk震动捧喷白浆 | 国产午夜精品一区二区三区嫩草 | 亚洲精品一区三区三区在线观看 | 亚洲大尺度无码无码专区 | 亚洲欧美日韩成人高清在线一区 | 大乳丰满人妻中文字幕日本 | 日本丰满护士爆乳xxxx | 九一九色国产 | 国产无套粉嫩白浆在线 | 国内揄拍国内精品人妻 | 中文字幕乱妇无码av在线 | 中文字幕av伊人av无码av | 精品国偷自产在线 | 欧美激情一区二区三区成人 | 99er热精品视频 | 欧洲vodafone精品性 | 久久久精品成人免费观看 | 大地资源中文第3页 | 2020久久香蕉国产线看观看 | 综合人妻久久一区二区精品 | 亚洲欧美综合区丁香五月小说 | 成人综合网亚洲伊人 | 丝袜 中出 制服 人妻 美腿 | 学生妹亚洲一区二区 | 亚洲精品久久久久久一区二区 | 色综合久久网 | 国产无遮挡又黄又爽免费视频 | 在线a亚洲视频播放在线观看 | 免费视频欧美无人区码 | 在线成人www免费观看视频 | 国产亚洲精品久久久ai换 | 国产乱子伦视频在线播放 | 国产免费久久精品国产传媒 | 亚洲一区二区三区含羞草 | 久久午夜夜伦鲁鲁片无码免费 | 国产人妻精品午夜福利免费 | 曰韩无码二三区中文字幕 | 日韩av无码一区二区三区不卡 | 日韩精品无码免费一区二区三区 | 在线成人www免费观看视频 | 亚洲综合在线一区二区三区 | 国产亚洲欧美在线专区 | 曰韩少妇内射免费播放 | 国产精品人妻一区二区三区四 | 蜜臀aⅴ国产精品久久久国产老师 | 国产高清不卡无码视频 | 免费看男女做好爽好硬视频 | 亚洲精品综合一区二区三区在线 | 国产精品无码久久av | 风流少妇按摩来高潮 | 国产明星裸体无码xxxx视频 | 国产精品久久久久无码av色戒 | 一区二区三区高清视频一 | 曰本女人与公拘交酡免费视频 | 亚洲日韩av一区二区三区中文 | 亚洲色偷偷男人的天堂 | 成 人影片 免费观看 | 久久人人爽人人人人片 | 2020最新国产自产精品 | 一本精品99久久精品77 | 日欧一片内射va在线影院 | 国内精品一区二区三区不卡 | 少妇人妻av毛片在线看 | 无码国产色欲xxxxx视频 | 扒开双腿吃奶呻吟做受视频 | 中文字幕色婷婷在线视频 | 久久久av男人的天堂 | 久久久国产精品无码免费专区 | 玩弄少妇高潮ⅹxxxyw | 无码精品国产va在线观看dvd | 国产性生交xxxxx无码 | 日日麻批免费40分钟无码 | 欧美猛少妇色xxxxx | 国产精品亚洲专区无码不卡 | 国産精品久久久久久久 | 丰满人妻翻云覆雨呻吟视频 | 日本精品人妻无码免费大全 | 波多野结衣一区二区三区av免费 | 欧美xxxx黑人又粗又长 | ass日本丰满熟妇pics | 国产乡下妇女做爰 | 荫蒂添的好舒服视频囗交 | 国产黑色丝袜在线播放 | 狠狠色色综合网站 | 大地资源网第二页免费观看 | 久久人人爽人人爽人人片av高清 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 午夜福利试看120秒体验区 | 久久亚洲日韩精品一区二区三区 | 超碰97人人做人人爱少妇 | 最新版天堂资源中文官网 | 日韩欧美成人免费观看 | 欧美大屁股xxxxhd黑色 | 国产在线无码精品电影网 | 精品国产青草久久久久福利 | 国产精品欧美成人 | 午夜丰满少妇性开放视频 | 色诱久久久久综合网ywww | 波多野结衣av一区二区全免费观看 | 日本欧美一区二区三区乱码 | 成人无码精品1区2区3区免费看 | 亚洲无人区午夜福利码高清完整版 | 一本色道久久综合亚洲精品不卡 | 欧美变态另类xxxx | 在线 国产 欧美 亚洲 天堂 | 国产精品久久久久9999小说 | 99久久99久久免费精品蜜桃 | 波多野结衣 黑人 | 国产亚洲精品久久久久久久 | 两性色午夜视频免费播放 | 日本一本二本三区免费 | 7777奇米四色成人眼影 | 中文字幕日产无线码一区 | 成人欧美一区二区三区 | 日本精品少妇一区二区三区 | 日本一区二区三区免费播放 | 天堂无码人妻精品一区二区三区 | 影音先锋中文字幕无码 | 欧美 亚洲 国产 另类 | 在线а√天堂中文官网 | 一本久道久久综合婷婷五月 | 一本久久a久久精品亚洲 | 国产精品国产自线拍免费软件 | 男女超爽视频免费播放 | 少妇邻居内射在线 | 久久精品中文闷骚内射 | 国产精品内射视频免费 | ass日本丰满熟妇pics | 亚洲人成网站色7799 | 亚洲国产精品成人久久蜜臀 | 欧美freesex黑人又粗又大 | 久久久婷婷五月亚洲97号色 | 欧美色就是色 | 丰满人妻翻云覆雨呻吟视频 | 日产精品99久久久久久 | 欧美人与牲动交xxxx | 精品欧美一区二区三区久久久 | 日本成熟视频免费视频 | 欧美国产日产一区二区 | 国产精品人人妻人人爽 | 久久精品国产99精品亚洲 | 国产精品久久久久影院嫩草 | 亚洲日本一区二区三区在线 | 国产免费无码一区二区视频 | 亚洲娇小与黑人巨大交 | 日日摸天天摸爽爽狠狠97 | 草草网站影院白丝内射 | 欧美成人高清在线播放 | 色诱久久久久综合网ywww | 国内精品一区二区三区不卡 | 精品日本一区二区三区在线观看 | 亚洲色成人中文字幕网站 | 国产成人一区二区三区在线观看 | 国产真人无遮挡作爱免费视频 | 亚洲国产欧美在线成人 | 亚洲中文字幕无码中文字在线 | 奇米影视888欧美在线观看 | 欧美三级a做爰在线观看 | 免费视频欧美无人区码 | 国产超碰人人爽人人做人人添 | 亚洲精品一区二区三区四区五区 | 激情内射亚州一区二区三区爱妻 | 午夜嘿嘿嘿影院 | 玩弄人妻少妇500系列视频 | 1000部啪啪未满十八勿入下载 | 欧美成人免费全部网站 | 少妇性俱乐部纵欲狂欢电影 | 麻豆果冻传媒2021精品传媒一区下载 | 久久天天躁狠狠躁夜夜免费观看 | av无码久久久久不卡免费网站 | 任你躁国产自任一区二区三区 | 狠狠亚洲超碰狼人久久 | 色情久久久av熟女人妻网站 | 免费观看激色视频网站 | 1000部夫妻午夜免费 | 亚洲热妇无码av在线播放 | 国产成人无码av在线影院 | 欧美日韩在线亚洲综合国产人 | 内射老妇bbwx0c0ck | 欧美 日韩 亚洲 在线 | 亚洲无人区一区二区三区 | 日本va欧美va欧美va精品 | 一本大道久久东京热无码av | 狠狠噜狠狠狠狠丁香五月 | 亚洲精品中文字幕乱码 | 亚洲精品综合五月久久小说 | 一本久道久久综合狠狠爱 | 丰满少妇女裸体bbw | 午夜精品一区二区三区在线观看 | 精品日本一区二区三区在线观看 | 成人av无码一区二区三区 | 麻豆成人精品国产免费 | 亚洲色大成网站www国产 | 色噜噜亚洲男人的天堂 | 亚洲 a v无 码免 费 成 人 a v | 亚洲欧美日韩综合久久久 | 麻豆人妻少妇精品无码专区 | 久久综合久久自在自线精品自 | 中文字幕精品av一区二区五区 | 亚洲人亚洲人成电影网站色 | 性欧美videos高清精品 | 伊人色综合久久天天小片 | 波多野结衣av在线观看 | 国产色xx群视频射精 | 中文字幕无码av激情不卡 | 亚洲国产av美女网站 | 久久精品一区二区三区四区 | 在线a亚洲视频播放在线观看 | 久久综合狠狠综合久久综合88 | 国产97色在线 | 免 | 亚洲区欧美区综合区自拍区 | 小泽玛莉亚一区二区视频在线 | 精品人妻中文字幕有码在线 | 久久人人爽人人爽人人片ⅴ | 熟女少妇在线视频播放 | 日本精品人妻无码免费大全 | 欧美日韩在线亚洲综合国产人 | 窝窝午夜理论片影院 | 综合人妻久久一区二区精品 | 精品人妻人人做人人爽夜夜爽 | 色爱情人网站 | 伊人久久大香线蕉亚洲 | 蜜桃视频插满18在线观看 | 老子影院午夜精品无码 | 国产av一区二区精品久久凹凸 | 一本色道婷婷久久欧美 | 波多野42部无码喷潮在线 | 国产又爽又猛又粗的视频a片 | 国产无遮挡又黄又爽又色 | 国产亚洲精品久久久久久国模美 | 美女张开腿让人桶 | 天干天干啦夜天干天2017 | 亚洲精品www久久久 | 欧美人与善在线com | 色妞www精品免费视频 | 十八禁视频网站在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 日韩欧美中文字幕公布 | 亚洲中文无码av永久不收费 | 娇妻被黑人粗大高潮白浆 | 久久无码专区国产精品s | 久久久久成人片免费观看蜜芽 | 久久精品女人天堂av免费观看 | 亚洲一区二区三区香蕉 | 国产乱人无码伦av在线a | 国产口爆吞精在线视频 | 婷婷丁香五月天综合东京热 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲日韩精品欧美一区二区 | 国产内射爽爽大片视频社区在线 | 国产亚洲精品久久久久久 | 永久免费观看美女裸体的网站 | 国产高清不卡无码视频 | 无码国产色欲xxxxx视频 | 熟妇人妻激情偷爽文 | 欧美午夜特黄aaaaaa片 | 国产香蕉尹人综合在线观看 | 午夜无码人妻av大片色欲 | 久久精品国产大片免费观看 | 日韩精品a片一区二区三区妖精 | 大胆欧美熟妇xx | 亚洲精品久久久久久一区二区 | 国产又爽又黄又刺激的视频 | 国产亚洲欧美日韩亚洲中文色 | 亚洲一区二区三区国产精华液 | 黑森林福利视频导航 | 乱人伦人妻中文字幕无码久久网 | 野外少妇愉情中文字幕 | 蜜臀av在线播放 久久综合激激的五月天 | 中文字幕无码人妻少妇免费 | 极品尤物被啪到呻吟喷水 | 一本大道伊人av久久综合 | 在线看片无码永久免费视频 | 色五月丁香五月综合五月 | 亚洲中文无码av永久不收费 | 欧美日韩视频无码一区二区三 | 国产成人精品视频ⅴa片软件竹菊 | 撕开奶罩揉吮奶头视频 | 精品国产成人一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 又粗又大又硬毛片免费看 | 亚洲自偷自拍另类第1页 | 国产真实夫妇视频 | 四虎影视成人永久免费观看视频 | 欧美日本免费一区二区三区 | 亚洲中文无码av永久不收费 | 影音先锋中文字幕无码 | 一本久道高清无码视频 | 国产精品二区一区二区aⅴ污介绍 | 国产三级久久久精品麻豆三级 | 亚洲 另类 在线 欧美 制服 | 久久精品国产99久久6动漫 | 国产精品视频免费播放 | 国产精品美女久久久网av | 国产成人无码一二三区视频 | 午夜精品久久久内射近拍高清 | 日韩精品成人一区二区三区 | 国产麻豆精品精东影业av网站 | 国产内射爽爽大片视频社区在线 | 荫蒂被男人添的好舒服爽免费视频 | 久久无码专区国产精品s | 国产精品国产三级国产专播 | 麻豆精品国产精华精华液好用吗 | 牲欲强的熟妇农村老妇女视频 | 中文字幕色婷婷在线视频 | 丰满人妻一区二区三区免费视频 | 97久久超碰中文字幕 | 波多野结衣av一区二区全免费观看 | 国产无套粉嫩白浆在线 | 亲嘴扒胸摸屁股激烈网站 | 欧美日本免费一区二区三区 | 亚洲精品成a人在线观看 | 福利一区二区三区视频在线观看 | 荫蒂添的好舒服视频囗交 | 国产凸凹视频一区二区 | 国产av久久久久精东av | 久久国产精品精品国产色婷婷 | 亚洲爆乳精品无码一区二区三区 | 国产成人av免费观看 | 一区二区三区高清视频一 | 国产后入清纯学生妹 | 久久天天躁狠狠躁夜夜免费观看 | 东京热无码av男人的天堂 | 5858s亚洲色大成网站www | 亚洲一区二区三区播放 | 亚洲成熟女人毛毛耸耸多 | 人人妻人人澡人人爽欧美一区九九 | 中文久久乱码一区二区 | 玩弄人妻少妇500系列视频 | 色狠狠av一区二区三区 | 国产在线一区二区三区四区五区 | 久久精品女人的天堂av | 亚洲欧洲中文日韩av乱码 | 亚洲の无码国产の无码影院 | 4hu四虎永久在线观看 | 大乳丰满人妻中文字幕日本 | 又黄又爽又色的视频 | 日本丰满护士爆乳xxxx | 国产精品久久久久9999小说 | 丰满人妻精品国产99aⅴ | 少妇被黑人到高潮喷出白浆 | 成人精品一区二区三区中文字幕 | 少妇高潮一区二区三区99 | av无码久久久久不卡免费网站 | 亚洲国产精品一区二区第一页 | 日日碰狠狠躁久久躁蜜桃 | 人人妻人人澡人人爽人人精品浪潮 | 九九久久精品国产免费看小说 | 成人三级无码视频在线观看 | 丰满少妇熟乱xxxxx视频 | 伦伦影院午夜理论片 | 亚洲熟熟妇xxxx | 少妇厨房愉情理9仑片视频 | 亚洲精品一区二区三区在线观看 | 思思久久99热只有频精品66 | 亚洲国产精品一区二区第一页 | 性欧美大战久久久久久久 | 动漫av一区二区在线观看 | 国产无遮挡又黄又爽免费视频 | 男女下面进入的视频免费午夜 | 亚洲爆乳精品无码一区二区三区 | 九九在线中文字幕无码 | 国产另类ts人妖一区二区 | 国产综合在线观看 | 亚洲精品午夜国产va久久成人 | 超碰97人人做人人爱少妇 | 成人精品一区二区三区中文字幕 | 97久久超碰中文字幕 | 久久99精品久久久久婷婷 | 国产成人精品优优av | 中文字幕乱码人妻二区三区 | 精品国产乱码久久久久乱码 | 蜜桃视频韩日免费播放 | 久久久精品国产sm最大网站 | 久久久婷婷五月亚洲97号色 | 蜜桃视频插满18在线观看 | 久久国产自偷自偷免费一区调 | 55夜色66夜色国产精品视频 | 人妻无码αv中文字幕久久琪琪布 | 在线观看国产午夜福利片 | 无码毛片视频一区二区本码 | 免费人成在线视频无码 | 奇米影视7777久久精品人人爽 | 我要看www免费看插插视频 | 色综合天天综合狠狠爱 | 国产精品久久久久久亚洲毛片 | 爱做久久久久久 | 成人试看120秒体验区 | 国产疯狂伦交大片 | 强伦人妻一区二区三区视频18 | 久久精品女人的天堂av | 国产精品无码一区二区桃花视频 | 亚洲综合伊人久久大杳蕉 | 性欧美牲交xxxxx视频 | 日本护士毛茸茸高潮 | 无码中文字幕色专区 | 六十路熟妇乱子伦 | 国产成人一区二区三区别 | 免费观看激色视频网站 | 伊人久久大香线蕉午夜 | 精品水蜜桃久久久久久久 | 久久无码专区国产精品s | 亚洲国产精品美女久久久久 | 色一情一乱一伦一视频免费看 | 99在线 | 亚洲 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 图片区 小说区 区 亚洲五月 | 欧洲欧美人成视频在线 | 久久人人97超碰a片精品 | 少妇被黑人到高潮喷出白浆 | 欧美精品无码一区二区三区 | 无码人妻av免费一区二区三区 | 成人免费视频在线观看 | 国内揄拍国内精品少妇国语 |