锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲无码精品浪潮,亚洲日本中文字幕区,亚洲国产精品无码久久久不卡 http://www.tkk7.com/xzclog/category/32017.htmlzh-cnSat, 07 Jun 2008 07:15:01 GMTSat, 07 Jun 2008 07:15:01 GMT60鍚戝簲鐢ㄧ▼搴忎腑鍔犲叆jBPM緇勪歡 http://www.tkk7.com/xzclog/archive/2006/10/24/76966.htmlxzcxzcTue, 24 Oct 2006 06:18:00 GMThttp://www.tkk7.com/xzclog/archive/2006/10/24/76966.htmlhttp://www.tkk7.com/xzclog/comments/76966.htmlhttp://www.tkk7.com/xzclog/archive/2006/10/24/76966.html#Feedback0http://www.tkk7.com/xzclog/comments/commentRss/76966.htmlhttp://www.tkk7.com/xzclog/services/trackbacks/76966.html鏈枃浠嬬粛鎬庢牱鎶妀BPM緇勪歡娣誨姞鍒癢eb搴旂敤紼嬪簭涓傛墍闇瑕佺敤鍒扮殑璧勬簮錛屽彲浠ュ湪jbpm-starters-kit-3.1.2涓壘鍒般?/div>
涓銆侀鍏堝畨瑁卝BPM鏁版嵁搴撱俲BPM鏄竴涓仠姝㈢姸鎬佺殑緇勪歡錛岄渶瑕佹暟鎹簱琛ㄦ寔涔呭寲淇濆瓨錛?錛変笟鍔$▼搴忓畾涔夊拰涓氬姟紼嬪簭瀹炰緥鍙?qiáng)鐩稿叧鐨勫伐浣湅箒鏁版嵁銆備繚闅滃伐浣滄祦寮曟搸鐨勬墽琛屻?錛夊紓姝ョ郴緇熶嬌鐢ㄦ暟鎹簱琛ㄦ潵妯℃嫙娑堟伅緋葷粺鐨勫姛鑳姐傞渶瑕佹妸娑堟伅鍒版暟鎹簱琛ㄤ腑錛岀敱娑堟伅緋葷粺鐨勫懡浠ゆ墽琛屽櫒寮傛鏌ヨ鍜屾墽琛屻備笉鍍忎笓涓氱殑娑堟伅緋葷粺閭f牱鏄繙紼嬬殑銆傚畠浠呬粎浣跨敤鏁版嵁搴撴ā鎷熸秷鎭郴緇熴?/div>
1錛屾墦寮MySQL鐨勫懡浠ゆ墽琛屽伐鍏稱uery Browser銆?/div>
2錛屽綋鍓嶉夊畾搴旂敤紼嬪簭鐨勬暟鎹簱錛屽wcms銆?/div>
3錛屽鍏ヨ剼鏈枃浠訛細(xì)mysql.drop.create.sql
4錛屾墽琛岃鑴氭湰銆備細(xì)鍦ㄥ綋鍓嶆暟鎹簱涓鍔爅BPM鐨勬暟鎹簱琛ㄣ?/div>
 
浜屻佸鍏BPM鎵闇鐨?jar鏂囦歡
1錛宩bpmlib鐩綍涓寘鍚簡(jiǎn)jBPM鎵闇鐨勫叏閮╦ar鍖呫傚寘鎷琈ySQL鐨刯dbc鍖呫?/div>
2錛屾妸瀹冩暣涓鍒跺埌搴旂敤紼嬪簭鐨刲ib鐩綍涓嬨?/div>
3錛屽簲鐢ㄧ▼搴忕殑鏋勫緩鍣ㄨ礬寰勭殑“搴?#8221;涓紝鎶婅繖浜沯ar閮藉姞榪涙潵銆?/div>
榪欎簺classpath涓嬬殑jar鍖咃紝閮戒細(xì)琚Web搴旂敤紼嬪簭鐨勭被杞藉叆鍣ㄨ澆鍏ャ?/div>
 
涓夈佸垱寤篶onfig.files鍜宲rocesses鐩綍錛屽茍鍔犲叆classpath鐨勬簮浠g爜璺緞
錛堜竴錛塩onfig.files鐩綍鐨勫姛鑳?/div>
    榪欎釜鐩綍瀛樻斁jBPM鐨勫悇綾婚厤緗枃浠躲傛斁鍦ㄨ繖閲岋紙灝辨槸classpath欏跺眰錛夌殑閰嶇疆鏂囦歡浼?xì)鍙栦唬jBPM鐨刯ar鍖呬腑鍚勫鐨勯厤緗枃浠躲?/div>
榪欓噷錛岀敱浜庨渶瑕佷嬌鐢╩ysql錛岃屼笉鏄唴緗殑hsql鍐呭瓨鏁版嵁搴撱傛墍浠ユ垜浠彁渚涗簡(jiǎn)涓涓慨鏀硅繃鐨勯厤緗枃浠訛細(xì)hibernate.cfg.xml銆傝繖閲屾彁渚涗簡(jiǎn)Hibernate3鐨勯厤緗?/div>
hibernate.cfg.xml閰嶇疆鏂囦歡鐨勯儴鍒嗗唴瀹?/div>
<hibernate-configuration>
  <session-factory>
    <!-- jdbc connection properties
鍘熸潵鐨凥SQL閰嶇疆琚敞閲婃帀錛屼嬌鐢∕ySQL鏁版嵁搴撶殑閰嶇疆
  <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="hibernate.connection.url">jdbc:hsqldb:mem:.;sql.enforce_strict_size=true</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
          -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/wcms</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
錛堜簩錛塸rocesses鐩綍鐨勫姛鑳?/div>
榪欎釜鐩綍瀛樻斁process嫻佺▼瀹氫箟銆傚錛歮anageNews\鍐呮湁3涓枃浠躲?/div>
鍦╦BPM搴旂敤紼嬪簭瀵煎叆.par鎴?xml鏂囦歡鏃?浣跨敤鐩稿璺緞錛堝錛歸ithubCMS/processdefinition.xml錛夋潵瀹氫綅涓氬姟紼嬪簭瀹氫箟璧勬簮鏂囦歡銆?/div>
 
鎬庢牱鎶婂畠浠斁鍒癱lasspath涓嬶紝闇瑕佹牴鎹笉鍚岀殑鐜榪涜涓嶅悓鐨勫鐞嗐?/div>
涓銆佷竴鑸琂ava紼嬪簭
    1錛屽垱寤篶onfig.files鍜宲rocesses鐩綍銆?/div>
2錛岄厤緗瀯寤哄櫒璺緞錛屽皢榪?涓洰褰曡涓哄埌classpath鐨勬簮浠g爜璺緞銆?/div>
榪欐牱錛岃繍琛屾椂錛屼細(xì)鎶婂畠浠腑鐨勫唴瀹瑰鍒跺埌classpath鐩綍涓嬨?/div>
浜屻丒clipse涓嬬殑Web紼嬪簭
鎴戜滑浣跨敤Eclipse鑷甫鐨勫姛鑳藉彂甯僕eb紼嬪簭銆?/div>
    1錛屽垱寤篶onfig.files鍜宲rocesses鐩綍銆?/div>
2錛岄厤緗瀯寤哄櫒璺緞錛屽皢榪?涓洰褰曡涓哄埌classpath鐨勬簮浠g爜璺緞銆?/div>
3錛岄厤緗甤lasspath,涔熷氨鏄?#8220;緙虹渷杈撳嚭鏂囦歡澶?#8221;錛屼負(fù)錛?/div>
鍐呭綆$悊錛堝簲鐢ㄧ▼搴忔牴璺緞鍚嶏級(jí)/webapps/WEB-INF/classes
4錛岃繖鏍鳳紝鍦‥clipse緙栬瘧鏃訛紙榛樿鏄繚瀛樺嵆緙栬瘧錛夛紝鎶婅繖2涓枃浠跺す涓殑鍐呭澶嶅埗鍒癱lasspath涓嬨?/div>
5錛岀劧鍚庯紝浣跨敤Eclipse鑷甫鐨勫姛鑳斤紝鍙戝竷璇eb搴旂敤紼嬪簭銆?/div>
Eclipse浼?xì)鎶?webapps/鏂囦歡澶逛笅鐨勬墍鏈夊唴瀹瑰鍒跺埌Web鏈嶅姟鍣ㄤ笅錛屽茍涓旀妸webapps鏀瑰悕涓鴻Web搴旂敤紼嬪簭鐨凟clipse欏圭洰鍚嶅瓧銆?/div>
榪欐牱錛屾垜浠殑閰嶇疆錛屽浜巆lasspath鏉ヨ涔熸槸姝g‘鐨勶紒Web搴旂敤紼嬪簭鍙互欏哄埄鍦拌繍琛屻?/div>
涓夈丄nt鍙戝竷鐨刉eb紼嬪簭
鍙互鍜屼笂闈竴鏍楓傛妸榪欎簺classpath鐨勬簮鏂囦歡錛岀紪璇戯紝鐒跺悗鎶婂唴閮ㄧ殑鍐呭澶嶅埗鍒癱lasspath涓嬨?/div>
Web欏圭洰榪愯鏃剁殑classpath鏄痗lasses鍜宭ib銆傚綋鐒朵篃闇瑕佹妸jar鍖呴兘澶嶅埗鍒發(fā)ib涓嬨?/div>
 
鏈鍚庯紝鍦ㄥ唴瀹圭鐞哱webapps\WEB-INF\jbpm\涓嬫斁緗偅2涓洰褰曘傚茍鎶婂畠浠涓篶lasspath鐨勬簮璺緞銆?/div>
鐩爣classpath璺緞鏄唴瀹圭鐞哱webapps\WEB-INF\classes銆?/div>
 
 
鍥涖佹祴璇昷BPM鍜屾暟鎹簱
寤虹珛test婧愭枃浠跺す銆傛彁渚涗竴涓猨unit嫻嬭瘯綾?org.jbpm.test.db.HelloWorldDbTest銆?/span>
榪欎釜綾諱嬌鐢ㄥ瓧絎︿覆瀹氫箟浜?jiǎn)涓涓畝鍗曠殑涓氬姟紼嬪簭錛岀劧鍚庡湪鏁版嵁搴撲笂瀹屾暣鐨勬墽琛屽畠銆?/div>
鎵ц璇ュ崟鍏冩祴璇曘傚湪搴旂敤紼嬪簭鐨勬暟鎹簱涓殑2涓〃錛?/div>
SELECT * FROM jbpm_processdefinition j;
SELECT * FROM jbpm_processinstance j;
搴旇鏈夋暟鎹?/div>
 
    鑷蟲(chóng)錛宩BPM緇勪歡灝辨垚鍔熷湴鍔犲叆鍒癢eb搴旂敤紼嬪簭涓簡(jiǎn)錛?/div>
闄勫綍錛欻elloWorldDbTest.java婧愪唬鐮?/div>
package org.jbpm.test.db;
import java.util.List;
import junit.framework.TestCase;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.db.GraphSession;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
public class HelloWorldDbTest extends TestCase {
 
  static JbpmConfiguration jbpmConfiguration = null;
  static {
    // An example configuration file such as this can be found in
    // 'src/config.files'.  Typically the configuration information is in the
    // resource file 'jbpm.cfg.xml', but here we pass in the configuration
    // information as an XML string.
   
    // First we create a JbpmConfiguration statically.  One JbpmConfiguration
    // can be used for all threads in the system, that is why we can safely
    // make it static.
   /**
    *鍗曚緥瀵硅薄銆?br />    *JbpmConfiguration鑳藉琚郴緇熶腑鎵鏈夌嚎紼嬫墍浣跨敤銆?br />    *jbpm.cfg.xml榪欎釜鍛藉悕鏂瑰紡鍜孒ibernate閰嶇疆鏂囦歡鐨勫懡鍚嶆柟寮忎竴鑷淬?br />    *
    */
    jbpmConfiguration = JbpmConfiguration.parseXmlString(
      "<jbpm-configuration>" +
     
      // A jbpm-context mechanism separates the jbpm core
      // engine from the services that jbpm uses from
      // the environment.
      /*jbpm-context鏈哄埗鍦ㄧ幆澧冧腑鎶妀bpm鏍稿績(jī)寮曟搸鍜宩bpm浣跨敤鐨勬湇鍔″垎寮銆?br />       * 鎸佷箙鍖栨湇鍔℃槸jbpm鏍稿績(jī)寮曟搸浣跨敤鐨勪竴涓湇鍔°?br />       *
       * */
     
      "  <jbpm-context>" +
      "    <service name='persistence' " +
      "             factory='org.jbpm.persistence.db.DbPersistenceServiceFactory' />" +
      "  </jbpm-context>" +
     
      // Also all the resource files that are used by jbpm are
      // referenced from the jbpm.cfg.xml
      /*
       *string錛岄厤緗簡(jiǎn)鎵鏈塲bpm浣跨敤鐨勮祫婧愭枃浠剁殑璺緞銆?br />       * */
     
      "  <string name='resource.hibernate.cfg.xml' " +
      "          value='hibernate.cfg.xml' />" +
      "  <string name='resource.business.calendar' " +
      "          value='org/jbpm/calendar/jbpm.business.calendar.properties' />" +
      "  <string name='resource.default.modules' " +
      "          value='org/jbpm/graph/def/jbpm.default.modules.properties' />" +
      "  <string name='resource.converter' " +
      "          value='org/jbpm/db/hibernate/jbpm.converter.properties' />" +
      "  <string name='resource.action.types' " +
      "          value='org/jbpm/graph/action/action.types.xml' />" +
      "  <string name='resource.node.types' " +
      "          value='org/jbpm/graph/node/node.types.xml' />" +
      "  <string name='resource.varmapping' " +
      "          value='org/jbpm/context/exe/jbpm.varmapping.xml' />" +
      "</jbpm-configuration>"
    );
  }
 
  public void setUp() {
   //鍒涘緩鏁版嵁搴撹〃
    //jbpmConfiguration.createSchema();
  }
 
  public void tearDown() {
   //鍒犻櫎鏁版嵁搴撹〃
    //jbpmConfiguration.dropSchema();
  }
  public void testSimplePersistence() {
    // Between the 3 method calls below, all data is passed via the
    // database.  Here, in this unit test, these 3 methods are executed
    // right after each other because we want to test a complete process
    // scenario鎯呰妭.  But in reality, these methods represent different
    // requests to a server.
   
    // Since we start with a clean, empty in-memory database, we have to
    // deploy the process first.  In reality, this is done once by the
    // process developer.
   /**
    *  榪欎釜鏂規(guī)硶鎶婁笟鍔″鐞嗗畾涔夐氳繃Hibernate淇濆瓨鍒版暟鎹簱涓?br />    */
    deployProcessDefinition();
    // Suppose we want to start a process instance (=process execution)
    // when a user submits a form in a web application...
    /*鍋囪褰撲竴涓敤鎴鋒彁浜や竴涓〃鍗曟椂錛屾垜浠寮濮嬩竴涓笟鍔″鐞嗙殑瀹炰緥/鎵ц銆?br />     * 榪欏彲浠ュ湪Action涓墽琛屽鐞嗐?br />     */
    processInstanceIsCreatedWhenUserSubmitsWebappForm();
    // Then, later, upon the arrival of an asynchronous message the
    // execution must continue.
    /*
     * 鐒跺悗錛岀洿鍒板紓姝ユ秷鎭潵鍒幫紝鎵嶇戶緇墽琛屼笟鍔″鐞嗗疄渚嬬殑浣欎笅鐨勫伐浣滄祦紼嬨?br />     * */
    theProcessInstanceContinuesWhenAnAsyncMessageIsReceived();
  }
  public void deployProcessDefinition() {
    // This test shows a process definition and one execution
    // of the process definition.  The process definition has
    // 3 nodes: an unnamed start-state, a state 's' and an
    // end-state named 'end'.
   /*
    * 榪欎釜鏂規(guī)硶鎶婁笟鍔″鐞嗗畾涔夐氳繃Hibernate淇濆瓨鍒版暟鎹簱涓?br />    *
    * */
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition name='hello world'>" +
      "  <start-state name='start'>" +
      "    <transition to='s' />" +
      "  </start-state>" +
      "  <state name='s'>" +
      "    <transition to='end' />" +
      "  </state>" +
      "  <end-state name='end' />" +
      "</process-definition>"
    );
    // Lookup the pojo persistence context-builder that is configured above
    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
    try {
      // Deploy the process definition in the database
      jbpmContext.deployProcessDefinition(processDefinition);
    } finally {
      // Tear down the pojo persistence context.
      // This includes flush the SQL for inserting the process definition 
      // to the database.
     /*
      * 鍏抽棴jbpm涓婁笅鏂囥傚垹闄ojo鎸佷箙鍖栦笂涓嬫枃銆?br />      * 榪欏寘鎷埛鏂癝QL鏉ョ湡姝g殑鎶婁笟鍔″鐞嗗畾涔夋彃鍏ュ埌鏁版嵁搴撲腑銆?br />      * */
      jbpmContext.close();
    }
  }
  public void processInstanceIsCreatedWhenUserSubmitsWebappForm() {
    // The code in this method could be inside a struts-action
    // or a JSF managed bean.
    // Lookup the pojo persistence context-builder that is configured above
    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
    try {
/*
 * 鍥捐〃浼?xì)璇濆Q屾槸鍥捐〃瀹氫箟/涓氬姟澶勭悊瀹氫箟 鐩稿叧鐨勬暟鎹簱灞傞潰鐨勪細(xì)璇濄傚簲璇ヤ篃鏄竴涓狧ibernate浼?xì)璇濄?br /> * 鍙互浠嶫Bpm涓婁笅鏂囪繖涓暟鎹簱----涓氬姟澶勭悊瀹氫箟銆佸疄渚嬬瓑 寰楀埌 涓氬姟澶勭悊瀹氫箟浼?xì)璇濄?br /> *
 * */
      GraphSession graphSession = jbpmContext.getGraphSession();
      //浠庢暟鎹簱涓牴鎹笟鍔″鐞嗗畾涔夌殑鍚嶅瓧寰楀埌涓涓笟鍔″鐞嗗畾涔夈?br />      ProcessDefinition processDefinition =
          graphSession.findLatestProcessDefinition("hello world");
   
      // With the processDefinition that we retrieved from the database, we
      // can create an execution of the process definition just like in the
      // hello world example (which was without persistence).
      /*
       * 鍒涘緩涓氬姟澶勭悊瀹氫箟鐨勪竴涓疄渚嬨?br />       *
       * */
      ProcessInstance processInstance =
          new ProcessInstance(processDefinition);
     
      Token token = processInstance.getRootToken();
      assertEquals("start", token.getNode().getName());
      // Let's start the process execution
      token.signal();
      // Now the process is in the state 's'.
      assertEquals("s", token.getNode().getName());
     
      // Now the processInstance is saved in the database.  So the
      // current state of the execution of the process is stored in the
      // database.
      /*
       * 鎵ц涓姝ュ伐浣滄祦紼嬪悗錛屼嬌鐢╦bpmContext淇濆瓨榪欎釜涓氬姟澶勭悊瀹炰緥榪涙暟鎹簱銆?br />       *    鎵浠ョ幇鍦ㄥ氨鎶婁笟鍔″鐞嗗疄渚嬬殑鎵ц鐘舵佷篃淇濆瓨榪涗簡(jiǎn)鏁版嵁搴撱?br />       *  鍥犱負(fù)錛屼笟鍔″鐞嗗畾涔夌殑瀹炰緥  榪欎釜綾諱篃鏄竴涓狹odel綾伙紝鐢ㄤ簬綆$悊涓涓笟鍔″鐞嗗畾涔夌殑鎵ц鐨勬墍鏈変俊鎭紝
       *  鏄竴涓渚嬫ā寮忕殑Model銆?br />       *
       * */
      jbpmContext.save(processInstance);
      // The method below will get the process instance back out
      // of the database and resume execution by providing another
      // external signal.
    } finally {
      // Tear down the pojo persistence context.
      jbpmContext.close();
    }
  }
  public void theProcessInstanceContinuesWhenAnAsyncMessageIsReceived() {
    // The code in this method could be the content of a message driven bean.
    //榪欎釜鏂規(guī)硶鍙兘鍦ㄦ秷鎭┍鍔˙ean榪欎釜榪滅▼涓氬姟浠g悊綾諱腑銆?br />    // Lookup the pojo persistence context-builder that is configured above
    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
    try {
      GraphSession graphSession = jbpmContext.getGraphSession();
      // First, we need to get the process instance back out of the database.
      // There are several options to know what process instance we are dealing
      // with here.  The easiest in this simple test case is just to look for
      // the full list of process instances.  That should give us only one
      // result.  So let's look up the process definition.
     
      ProcessDefinition processDefinition =
          graphSession.findLatestProcessDefinition("hello world");
      // Now, we search for all process instances of this process definition.
      /*
       * 鏍規(guī)嵁涓氬姟澶勭悊瀹氫箟鐨刬d寰楀埌鏁版嵁搴撲腑鎵鏈夌殑涓氬姟澶勭悊瀹炰緥銆傝繖琛ㄦ槑錛屾暟鎹簱涓簲璇ュ瓨鍦?寮犺〃
       * 瀹冧滑鏄?#160; 涓瀵瑰  鐨勫叧緋匯?br />       *
       * */
      List processInstances =
          graphSession.findProcessInstances(processDefinition.getId());
     
      // Because we know that in the context of this unit test, there is
      // only one execution.  In real life, the processInstanceId can be
      // extracted from the content of the message that arrived or from
      // the user making a choice.
      ProcessInstance processInstance =
          (ProcessInstance) processInstances.get(0);
     
      // Now we can continue the execution.  Note that the processInstance
      // delegates signals to the main path of execution (=the root token).
      processInstance.signal();
      // After this signal, we know the process execution should have
      // arrived in the end-state.
      assertTrue(processInstance.hasEnded());
     
      // Now we can update the state of the execution in the database
      jbpmContext.save(processInstance);
    } finally {
      // Tear down the pojo persistence context.
      jbpmContext.close();
    }
  }
}
 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1346877



xzc 2006-10-24 14:18 鍙戣〃璇勮
]]> 主站蜘蛛池模板: 日韩激情淫片免费看| 免费视频专区一国产盗摄| 亚洲精品老司机在线观看| 亚洲AV无码AV吞精久久| 麻豆国产VA免费精品高清在线 | 亚洲国产精品丝袜在线观看| 亚洲欧美黑人猛交群| 午夜色a大片在线观看免费| 亚洲AV性色在线观看| 国产在线a不卡免费视频| 黄页网站在线视频免费| 亚洲婷婷国产精品电影人久久| xvideos永久免费入口| 亚洲色自偷自拍另类小说| 无码 免费 国产在线观看91| 国产精品免费小视频| sss日本免费完整版在线观看| 久久亚洲中文字幕精品一区四 | 亚洲最大的黄色网| 日本无吗免费一二区| 2022免费国产精品福利在线| 国产精品亚洲mnbav网站| 久久免费看少妇高潮V片特黄| 亚洲18在线天美| 亚洲国产精品一区二区九九| 18禁在线无遮挡免费观看网站| 亚洲福利视频网站| 女人18毛片a级毛片免费视频| 一区二区免费国产在线观看| 亚洲va在线va天堂va888www| 国产精品无码免费播放| 曰韩无码AV片免费播放不卡| 亚洲av中文无码乱人伦在线咪咕| 永久免费毛片在线播放| 日本一区二区在线免费观看| 亚洲人成在线播放网站岛国| 好吊妞在线新免费视频| 黄色网站软件app在线观看免费| 亚洲国产精品午夜电影| 亚洲性久久久影院| 无遮免费网站在线入口|