日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

jbpm_工作流框架笔记

發布時間:2024/9/27 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jbpm_工作流框架笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?工作流基礎

1.1.?工作流相關概念

工作流(Workflow),就是“業務過程的部分或整體在計算機應用環境下的自動化”,它主要解決的是“使在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現”。

通俗的說,流程就是多個人在一起合作完成某件事情的步驟,把步驟變成計算機能理解的形式就是工作流

工作流管理系統(WfMSWorkflow?Management?System)的主要功能是通過計算機技術的支持去定義、執行和管理工作流,協調工作流執行過程中工作之間以及群體成員之間的信息交互。工作流需要依靠工作流管理系統來實現。工作流管理系統是定義、創建、執行工作流的系統,應能提供以下三個方面的功能支持:

1.?定義工作流:包括具體的活動、規則等

2.?運行控制功能:在運行環境中管理工作流過程,對工作流過程中的活動進行調度

3.?運行交互功能:指在工作流運行中,WfMS與用戶(活動的參與者)及外部應用程序工具交互的功能。

一、?定義工作流

二、?執行工作流

采用工作流管理系統的優點

1.?提高系統的柔性,適應業務流程的變化?

2.?實現更好的業務過程控制,提高顧客服務質量

3.?降低系統開發和維護成本

工作流框架有:JbpmOSWorkflowActiveBPELYAWL等

OA(辦公自動化)主要技術之一就是工作流。

1.2.?開源工作流jBPM4.4介紹

jBPM?java?Business?Process?Management,是基于java的業務流程管理系統。jBPM是市面上相當流行的一款開源工作流引擎,引擎底層基于Active?Diagram模型。jBPM4.4使用了hibernate3.3.1版),因此可以很好的支持主流數據庫。jBPM4.4共有18張表。

jBPM官方主頁http://www.jboss.org/jbpm

2.?準備jBPM4.4環境

2.1.?jBPM4.4所需環境

jBPM?requires?a?JDK?(standard?java)?version?5?or?higher.?http://java.sun.com/javase/downloads/index.jsp?

To?execute?the?ant?scripts,?you'll?need?apache?ant?version?1.7.0?or?higher:?http://ant.apache.org/bindownload.cgi

2.2.?下載相關資源

1,?jBPM下載地址:http://sourceforge.net/projects/jbpm/files/

2,?Eclipse下載地址(?Eclipse?IDE?for?Java?EE?Developers?(163?MB)Version3.5?):http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo

2.3.?安裝流程設計器(GPDEclipse插件)

GPDGraphical?Process?Designer)是一個Eclipse插件。

安裝方法說明(jBPM4.4User?Guide,?2.11.2.?Install?the?GPD?plugin?into?eclipse):

?Help?-->?Install?New?Software...?

?Click?Add...?

?In?dialog?Add?Site?dialog,?click?Archive...?

?Navigate?to?install/src/gpd/jbpm-gpd-site.zip?and?click?'Open'?

?Clicking?OK?in?the?Add?Site?dialog?will?bring?you?back?to?the?dialog?'Install'?

?Select?the?jPDL?4?GPD?Update?Site?that?has?appeared?

?Click?Next...?and?then?Finish?

?Approve?the?license?

?Restart?eclipse?when?that?is?asked

查看是否成功安裝了插件:WindowàPreference中是否有Jboss?jBPM項。

2.4.?在Eclipse中添加jPDL4.4?Schema校驗

流程定義文件的xsd文件的路徑為:JBPM_HOME/src/jpdl-4.4.xsd

添加到Eclipse中的方法為(jBPM4.4?User?Guide,?2.11.5.?Adding?jPDL?4?schema?to?the?catalog):

?Click?Window?-->?Preferences?

?Select?XML?-->?XML?Catalog?

?Click?'Add...'?

?The?'Add?XML?Catalog?Entry'?dialog?opens?

?Click?the?button?with?the?map-icon?next?to?location?and?select?'File?System...'?

?In?the?dialog?that?opens,?select?file?jpdl-4.4.xsd?in?the?src?directory?of?the?jBPM?installation?root.?

?Click?'Open'?and?close?all?the?dialogs

2.5.?準備jBPM4.4的開發環境

2.5.1.?添加jBPM4.4jar

1.?${JBPM_HOME}/jbpm.jar(核心包)

2.?JBPM_HOME/lib/*.jar,不添加以下jar包:servlet-api.jar,?junit.jar。其中junit.jar一定不要添加,因為是3.8.2版本,與我們使用的junit4有沖突。

3.?所使用的數據庫對應的驅動的jar包(第2步所添加的jar包中已包含mysqljdbc驅動jar包)。

2.5.2.?添加并定制配置文件

1.?配置文件可以從JBPM_HOME/examples/src/中拷貝:
jbpm.cfg.xml
logging.properties
jbpm.hibernate.cfg.xml

2.?修改logging.properties中的日志輸出級別WARNING:?java.util.logging.ConsoleHandler.level=WARNING

3.?修改jbpm.hibernate.cfg.xml中的數據庫連接信息。如果使用MySql,使用的方言一定要是org.hibernate.dialect.MySQL5InnoDBDialect。

4.?數據庫連接編碼一定要是UTF-8。否則可能會在部署含有中文字符的流程定義時會拋異常,說sql語法錯誤。

說明:如果要改變jbpm.hibernate.cfg.xml的文件名稱,需要做:

1、從JBPM_HOME/src/中拷貝jbpm.tx.hibernate.cfg.xml放到工程的src/下,然后進行修改。

2、修改jbpm.tx.hibernate.cfg.xml中的hibernate主配置文件的路徑配置(指定的是相對于classpath的相對路徑)。

2.5.3.?初始化數據庫

1,?方法一:執行sql腳本文件${JBPM4.4_HOME}/install/src/db/create/jbpm.*.create.sql

2,?方法二:使用Hibernate的自動建表,在jbpm.hibernate.cfg.xml中配置:hibernate.hbm2ddl.auto=update

3.?核心概念與相關API(Service?API)

3.1.?概念:Process?definition,?process?instance?,??execution

3.1.1.?Process?definition

ProcessDefinition,流程定義:

一個流程的步驟說明。如一個請假流程、報銷流程、借款流程等,是一個規則。

例:

3.1.2.?Process?instance

ProcessInstance,流程實例:

代表流程定義的一次執行。如張三昨天按請假流程請了一次假。一個流程實例包括了所有運行階段,?其中最典型的屬性就是跟蹤當前節點的指針。

3.1.3.?Execution

Execution,執行:

一般情況下,一個流程實例是一個執行樹的根節點。?

使用樹狀結構的原因在于,?這一概念只有一條執行路徑,?使用起來更簡單。?業務API不需要了解流程實例和執行之間功能的區別。?因此,?API里只有一個執行類型來引用流程實例和執行。

假設匯款和存檔可以同時執行,那么主流程實例就包含了2個用來跟蹤狀態的子節點:

4.1.?ProcessEngineService?API

4.1.1.?ConfigurationProcessEngine

Interacting?with?jBPM?occurs?through?services.?The?service?interfaces?can?be?obtained?from?the?ProcessEngine?which?is?build?from?a?Configuration.?A?ProcessEngine?is?thread?safe?and?can?be?stored?in?a?static?member?field.

使用默認的配置文件(jbpm.cfg.xml生成Configuration并構建ProcessEngine

ProcessEngine?processEngine?=?new?Configuration()

.buildProcessEngine();

或是使用如下代碼獲取使用默認配置文件的、單例的ProcessEngine對象:

ProcessEngine?processEngine?=?Configuration.getProcessEngine();

或是使用指定的配置文件(要放到classPath):

ProcessEngine?processEngine?=?new?Configuration()

??????.setResource("my-own-configuration-file.xml")

??????.buildProcessEngine();

4.1.2.?jBPM?Service?API

jBPM所有的操作都是通過Service完成的,以下是獲取Service的方式:

RepositoryService?repositoryService?=?processEngine

.getRepositoryService();

ExecutionService?executionService?=?processEngine

.getExecutionService();

TaskService?taskService?=?processEngine

.getTaskService();

HistoryService?historyService?=?processEngine

.getHistoryService();

ManagementService?managementService?=?processEngine

.getManagementService();

各個Service的作用:

RepositoryService

管理流程定義

ExecutionService

管理執行的,包括啟動、推進、刪除Execution等操作

TaskService

管理任務的

HistoryService

歷史管理(執行完的數據管理,主要是查詢

IdentityService

jBPM的用戶、組管理

ManagementService

4.1.3.?API風格

方法調用鏈

每一個方法都是流程有關的一個業務操作,默認是一個獨立的事務。

4.1.4.?查詢的有關API(風格)

功能說明

相應的查詢API

查詢“流程定義”

ProcessDefinitionQuery?processDefinitionQuery?=?

processEngine.getRepositoryService()

.createProcessDefinitionQuery();

查詢“執行對象”

(流程實例)

ProcessInstanceQuery?processInstanceQuery?=?

processEngine.getExecutionService()?//

.createProcessInstanceQuery();

查詢“任務”

TaskQuery?taskQuery?=?//

processEngine.getTaskService()//

.createTaskQuery();

查詢“執行歷史”

(流程實例歷史)

HistoryProcessInstanceQuery?historyProcessInstanceQuery?=?

processEngine.getHistoryService()

.createHistoryProcessInstanceQuery();

查詢“任務歷史”

HistoryTaskQuery?historyTaskQuery?=?

processEngine.getHistoryService()

.createHistoryTaskQuery();

以上列出的Query對象有:

1.?ProcessDefinitionQuery

2.?ProcessInstanceQuery

3.?TaskQuery

4.?HistoryProcessInstanceQuery

5.?HistoryTaskQuery

這些Query對象的使用方法都是一致的,如下所示:

1,?添加過濾條件:調用其中的有關方法指定條件即可。如:

a)?processDefinitionQuery.processDefinitionKey("請假")是指定查詢key請假的流程定義;

b)?taskQuery.assignee("張三")是指定辦理人為張三的任務。

2,?添加排序條件:

a)?調用?xxQuery.orderAsc(property),表示按某屬性升序排列

b)?調用?xxQuery.orderDesc(property),表示按某屬性降序排列

c)?可指定多個排序條件,就是代表第1順序,第2順序…等。

d)?屬性名在各自的Query對象(接口)中有常量定義,如:

i.?ProcessDefinitionQuery.PROPERTY_ID

ii.?ProcessDefinitionQuery.PROPERTY_KEY

iii.?TaskQuery.PROPERTY_NAME

iv.?TaskQuery.PROPERTY_ASSIGNEE

3,?指定分頁有關信息:

a)?調用方法xxQuery.page(firstResult,?maxResults);

b)?這是指定firstmax的值(就是Hibernate中的Query.setFirstResult()Query.setMaxResults()

c)?如果沒有調用這個方法,代表要查詢出符合條件的所有記錄。

4,?查詢得到結果:

a)?調用方法xxQuery.list();?表示查詢列表

b)?調用方法?xxQuery.uniqueResult();?表示查詢唯一的結果

c)?調用方法xxQuery.count();?表示查詢符合條件的記錄數量

5.?管理流程定義

沒有更新功能

5.1.?部署流程定義

注意區分Deployment與ProcessDefinition

5.1.1.?示例代碼1:流程定義有關文件在classpath

String?deploymentId?=?processEngine.getRepositoryService()

.createDeployment()

.addResourceFromClasspath("process/test.jpdl.xml")

.addResourceFromClasspath("process/test.png")

.deploy();

5.1.2.?示例代碼2:一次添加多個流程定義有關文件(要先打成zip包)

String?deploymentId?=?processEngine.getRepositoryService()

.createDeployment()

.addResourcesFromZipInputStream(zipInputStream)

.deploy();

5.1.3.?說明

1,?.addResourceFromClasspath(resource);?可以調用多次以添加多個文件。文件重復添加也不會報錯。

2,?.addResourceFromInputStream(resourceName,?inputStream)添加一個文件(使用InputStream

3,?.addResourcesFromZipInputStream(zipInputStream)添加多個文件,里面也可以有文件夾。

4,?以上方法可以在一起調用。

5.2.?刪除流程定義

5.2.1.?示例代碼1:刪除流程定義,如果有關聯的流程實例信息則報錯

repositoryService.deleteDeployment(deploymentId);

5.2.2.?示例代碼2:刪除流程定義,并刪除關聯的流程實例與歷史信息

repositoryService.deleteDeploymentCascade(deploymentId);

5.3.?查詢流程定義

5.3.1.?相關查詢API說明:ProcessDefinitionQuery

RepositoryService.createProcessDefinitionQuery()

5.3.2.?示例代碼1:查詢所有流程定義

//?1,構建查詢

ProcessDefinitionQuery?pdQuery?=?processEngine.getRepositoryService()?

.createProcessDefinitionQuery()//?

.orderAsc(ProcessDefinitionQuery.PROPERTY_NAME)//

.orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION);

//?2,查詢出總數量與數據列表

long?count?=?pdQuery.count();

List<ProcessDefinition>?list?=?pdQuery.page(0,?100).list();//?分頁:取出前100條記錄

//?3,顯示結果

System.out.println(count);

for?(ProcessDefinition?pd?:?list)?{

System.out.println("id="?+?pd.getId()//

+?",deploymentId="?+?pd.getDeploymentId()//

+?",name="?+?pd.getName()//

+?",version="?+?pd.getVersion()//

+?",key="?+?pd.getKey());?//

}

5.3.3.?示例代碼2:查詢所有最新版本的流程定義列表

//?1,查詢version升序排序,則最大版本排在最后

List<ProcessDefinition>?all?=?processEngine.getRepositoryService()//

.createProcessDefinitionQuery()//

.orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)

.list();

//?2,過濾出所有不同Key的最新版本(因為最大版本在最后面)

Map<String,?ProcessDefinition>?map?=?new?HashMap<String,?ProcessDefinition>();?//?mapkey是流程定義的keymapvlaue是流程定義對象

for?(ProcessDefinition?pd?:?all)?{

map.put(pd.getKey(),?pd);

}

Collection<ProcessDefinition>?result?=?map.values();

//?3,顯示結果

for?(ProcessDefinition?pd?:?result)?{

System.out.println("deploymentId="?+?pd.getDeploymentId()//?

+?",\t?id="?+?pd.getId()//?流程定義的id,格式:{key}-{version}

+?",\t?name="?+?pd.getName()

+?",\t?key="?+?pd.getKey()

+?",\t?version="?+?pd.getVersion());

}

5.4.?獲取部署對象中的文件資源內容

//?資源的名稱,就是?jbpm4_lob?表中的?NAME_?列表值

String?deploymentId?=?"90001";

String?resourceName?=?"test.png";?

InputStream?in?=?processEngine.getRepositoryService()

.getResourceAsStream(deploymentId,?resourceName);

5.5.?獲取流程圖中某活動的坐標

String?processDefinitionId?=?"test-1";?//?流程定義的id

String?activityName?=?"start1";?//?活動的名稱

ActivityCoordinates?c?=?processEngine.getRepositoryService()

.getActivityCoordinates(processDefinitionId,?activityName);

System.out.println("x="?+?c.getX()?

+?",y="?+?c.getY()?

+?",width="?+?c.getWidth()?

+?",height="?+?c.getHeight());

6.?執行流程實例

6.1.?啟動流程實例

說明:流程實例創建后,直接就到開始活動后的第一個活動,不會在開始活動停留。

6.1.1.?示例代碼1:使用指定key的最新版本的流程定義啟動流程實例

ProcessInstance?pi?=?processEngine.getExecutionService()

.startProcessInstanceByKey(processDefinitionKey);

6.1.2.?示例代碼2:使用指定key的最新版本的流程定義啟動流程實例,并設置一些流程變量

//?準備流程變量

Map<String,?Object>?variables?=?new?HashMap<String,?Object>();

variables.put("申請人",?"張三");

variables.put("報銷金額",?1000.00);

//?啟動流程實例,并設置一些流程變量

ProcessInstance?pi?=?processEngine.getExecutionService()

.startProcessInstanceByKey(processDefinitionKey,?variables);

6.2.?向后執行一步(Signal

6.2.1.?示例代碼1:向后執行一步,使用唯一的outcome離開活動

processEngine.getExecutionService().signalExecutionById(executionId);

6.2.2.?示例代碼2:向后執行一步,使用唯一的outcome離開活動,并設置一些流程變量

Map<String,?Object>?variables?=?new?HashMap<String,?Object>();

variables.put("審批結果",?"同意");

processEngine.getExecutionService()

.signalExecutionById(executionId,?variables);

6.2.3.?示例代碼3:向后執行一步,使用指定的outcome離開活動

String?outcome=?"to?end1";

processEngine.getExecutionService()

.signalExecutionById(executionId,?outcome);

6.2.4.?示例代碼4:向后執行一步,使用指定的outcome離開活動,并設置一些流程變量

String?outcome=?"to?end1";

Map<String,?Object>?variables?=?new?HashMap<String,?Object>();

variables.put("審批結果",?"同意");

processEngine.getExecutionService()

.signalExecutionById(executionId,?outcome,?variables);

6.3.?查詢任務

6.3.1.?查詢個人任務列表

方式1TaskService.findPersonalTasks(userId);

方式2List<Task>?list?=?taskService.createTaskQuery()

.assignee(userId)

.list();

//?顯示任務信息

for?(Task?task?:?taskList)?{

System.out.println("id="?+?task.getId()//?任務的id

+?",name="?+?task.getName()//?任務的名稱

+?",assignee="?+?task.getAssignee()//?任務的辦理人

+?",createTime="?+?task.getCreateTime()?//?任務的創建(生成)的時間

+?",executionId="?+?task.getExecutionId());//?任務所屬流程實例的id

}

6.3.2.?查詢組任務列表

方式1?taskService.findGroupTasks(userId);

方式2?List<Task>?list?=?processEngine.getTaskService()//

.createTaskQuery()//

.candidate(userId)//

.list();

6.4.?完成任務

6.4.1.?正常完成任務(也可以同時設置一些流程變量)

String?taskId?=?"420001";

processEngine.getTaskService().completeTask(taskId);

processEngine.getTaskService().completeTask(taskId,?outcome);

processEngine.getTaskService().completeTask(taskId,?outcome,?variables);

6.4.2.?自行控制任務完成后是否可向后流轉

String?taskId?=?"420001";

//?1設置為false代表:辦理完任務后不向后移動(默認為true

TaskImpl?taskImpl?=?(TaskImpl)?processEngine

.getTaskService().getTask(taskId);

taskImpl.setSignalling(false);?

//?2,辦理完任務

processEngine.getTaskService().completeTask(taskId);

6.5.?拾取任務

1,?TaskService.takeTask(taskId,?userId),拾取組任務到個人任務列表中,如果任務有assignee,則會拋異常。

2,?processEngine.getTaskService().assignTask(taskId,?userId),轉交任務給其他人,(如果任務有assignee,則執行這個方法代表重新分配。也可以把assignee設為null表示組任務沒有人辦理了)

6.6.?設置與獲取流程變量

6.6.1.?設置流程變量

6.6.1.1.?方式1:根據?executionId?設置或獲取流程變量

ExecutionService.setVariable(executionId,?name,?value);

Object?obj?=?executionService.getVariable(executionId,?"請假人");

6.6.1.2.?方式2:根據?taskId?設置或獲取流程變量

TaskService.setVariables(taskId,?variables);?//?一次設置多個變量

Object?obj?=?executionService.getVariable(executionId,?"請假人");

6.6.1.3.?流程變量所支持的值的類型(jBPM?User?Guide,7.2.?Variable?types)

7.2.?Variable?types

jBPM?supports?following?Java?types?as?process?variables:

?java.lang.String?

?java.lang.Long?

?java.lang.Double?

?java.util.Date?

?java.lang.Boolean?

?java.lang.Character?

?java.lang.Byte?

?java.lang.Short?

?java.lang.Integer?

?java.lang.Float?

?byte[]?(byte?array)?

?char[]?(char?array)?

?hibernate?entity?with?a?long?id?

?hibernate?entity?with?a?string?id?

?serializable

For?persistence?of?these?variable,?the?type?of?the?variable?is?checked?in?the?order?of?this?list.?The?first?match?will?determine?how?the?variable?is?stored.?

6.7.?直接結束流程實例(自己手工結束)

String?processInstanceId?=?"test.10001";

processEngine.getExecutionService()

.endProcessInstance(processInstanceId,?ProcessInstance.STATE_ENDED);

7.?jBPM4.4的流程定義語言(設計流程)

7.1.?process(流程)

.jpdl.xml的根元素,可以指定的屬性有:

屬性名

作用說明

name

流程定義的名稱,用于顯示。

key

流程定義的key,用于查詢。

如未指定,則默認為name的值。

version

版本,如果指定,則不能與已有的流程定義的版本重復;如未指定,則此key的流程定義的第1個為版本1,以后的是版本遞增(每次加1

7.2.?transition(連線、轉移)

1,?一個活動中可以指定一個或多個TransitionStart中只能有一個,End中沒有)。

a)?開始活動中只能有一個Transition

b)?結束活動中沒有Transition

c)?其他活動中有1條或多條Transition

2,?如果只有一個,則可以不指定名稱(名稱是null);如果有多個,則要分別指定唯一的名稱。

7.3.?流轉控制活動

7.3.1.?start(開始活動)

代表流程的開始邊界,一個流程有且只能有一個Start活動。開始活動只能指定一個Transition。在流程實例啟動后,會自動的使用這個唯一的Transition離開開始活動,到一下個活動。

7.3.2.?endend-errorend-cancel(結束活動)

代表流程的結束邊界,可以有多個,也可以沒有。如果有多個,則到達任一個結束活動,整個流程就都結束了;如果沒有,則到達最后那個沒有Transition的活動,流程就結束了。

7.3.3.?state(狀態活動)

功能:等待。

7.3.4.?task(任務活動)

分配任務:

1,?actor=#{String型的變量}

2,?AssignmentHandler,需要在<task>元素中寫<assignment-handler?class="AssignmentHandlerImpl"/>子元素。

a)?指定的類要實現AssignmentHandler接口

b)?在其中可以使用Assignable.setAssignee(String),分配個人任務。

7.3.5.?decision(判斷活動)

1,使用expression,如:expr="#{'to?state2'}"

2,使用Handler,要實現DecisionHandler接口

3,如果同時配置了expressionHandler,則expression有效,忽略Handler

7.3.6.?forkjoin(分支/聚合活動)

這是多個分支并行(同時)執行的,并且所有的分支Execution都到Join活動后才離向后執行。

7.4.?自定義活動(Custom

1,在<custom>元素中指定class屬性為指定的類。

2,這個類要實現ExternalActivityBehaviour接口,其中有兩個方法:

1execute(ActivityExecution),節點的功能代碼

2signal(ActivityExecution,?String,?Map),在當前節點等待時,外部發信號時的行為

3,在execute()方法中,可以調用以下方法對流程進行控制

1ActivityExecution.waitForSignal(),在當前節點等待。

2ActivityExecution.takeDefaultTransition(),使用默認的Transition離開,當前節點中定義的第一個為默認的。

3ActivityExecution.take(String?transitionName),使用指定的Transition離開

4ActivityExecution.end(),結束流程實例

4,也可以實現ActivityBehaviour接口,只有一個方法execute(ActivityExecution),這樣就不能等待,否則signal時會有類轉換異常。

7.5.?事件

1,?在根元素中,或在節點元素中,使用<on?event="">元素指定事件,其中event屬性代表事件的類型。

2,?在<on>中用子元素<event-listener?class="EventListenerImpl"?/>,指定處理的類,要求指定的類要實現EventListener接口

3,? 事件類型:

a)?<on>元素放在根元素(<process>)中,可以指定eventstartend,表示流程的開始與結束。

b)?<on>元素放在節點元素中,可以指定eventstartend,表示節點的進入與離開

c)?在Start節點中只有end事件,在End節點中只有start事件。

d)?在<transition>元素中直接寫<event-listener?class="">,就是配置事件。(因為在這里只有一個事件,所以不用寫on與類型)

e)?在<task>元素中還可以配置assign事件,是在分配任務時觸發的。

8.?jBPM4.4應用

8.1.?與Spring集成(jBPM4.4?Developers?Guide,?Chapter?17.?Spring?Integration

8.1.1.?在jbpm.cfg.xml

1,刪除配置:<import?resource="jbpm.tx.hibernate.cfg.xml"?/>

2,增加配置:<import?resource="jbpm.tx.spring.cfg.xml"?/>

8.1.2.?在applicationContext.xml中配置

<!--?配置ProcessEngine(整合jBPM4)?-->

<!--?jbpmCfg是相對于classpath的相對路徑,默認值為jbpm.cfg.xml?-->

<bean?id="springHelper"?

class="org.jbpm.pvm.internal.processengine.SpringHelper">

<property?name="jbpmCfg"?value="jbpm.cfg.xml"></property>

</bean>

<bean?id="processEngine"?factory-bean="springHelper"?

factory-method="createProcessEngine"?/>

8.1.3.?測試

@Test?//?測試ProcessEngine

public?void?testProcessEngine()?{

ProcessEngine?processEngine?=?(ProcessEngine)ac.getBean("processEngine");

Assert.assertNotNull(processEngine);

}

8.1.4.?注意事項

如果做了JBPM4.4Spring整合(使用了jbpm.tx.spring.cfg.xml),則在程序中就一定要使用Spring注入ProcessEngine,千萬不能使用Configuration.getProcessEngine()生成ProcessEngine,因為這時內部的代碼有以下邏輯:如果整合了Spring但沒有ApplicationContext,就默認讀取applicationContext.xml創建ApplicationContext實例并從中獲取名為”ProcessEngine”的對象。而這時如果把pe?=?Configuration.getProcessEngine()寫成某Spring中管理的bean的初始化代碼,就會有無限循環,不停的創建ApplicationContext了!

8.2.?自行控制事務

1,?修改?jbpm.tx.hibernate.cfg.xml

a)?不讓jBPM自行管理事務:去掉<standard-transaction-interceptor?/>

b)?讓Jbpm使用SessionFactory.getCurrentSession():修改為?<hibernate-session?current="true"?/>

2,?配置可以使用SessionFactory.getCurrentSession(),在jbpm.hibernate.cfg.xml?中配置:<property?name="hibernate.current_session_context_class">thread</property>

3,?要使用同一個SessionFactory,且都要使用?SessionFactory.getCurrentSession()?獲取?Session

a)?同一個SessionFactorySessionFactory?sf?=?processEngine.get(SessionFactory.class)

b)?在?BaseDaoImpl?中增加:

i.?getSession()?{?return?HibernateUtils.getSessionFactory().getCurrentSession();?}

ii.?getProcessEngine(){?return?org.jbpm.api.Configuration.getProcessEngine();?}

4,?統一的打開與提交或回滾事務:使用?OpenSessionInViewFilter?控制事務。

8.3.?啟動Tomcat后,訪問JSP時(使用的是MyEclipse自帶的Tomcat,是6.0的版本),報錯:???Caused?by:?java.lang.LinkageError:?loader?constraints?violated?when?linking?javax/el/ExpressionFactory?class

at?org.apache.jsp.WEB_002dINF.jsp.UserAction.loginUI_jsp._jspInit(loginUI_jsp.java:39)

at?org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)

at?org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)

at?org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)

at?org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at?org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

...?40?more

說明:原因是Jbpmjuel.jar,?juel-engine.jar,?juel-impl.jar包和Tomcat6.0中的el-api.jar包沖突了。

有三個解決辦法:

1,方法一:在MyEclipsePreferences?->?MyEclipse?->?Application?Servers?->?Tomcat?->?..?->?Paths?中配置?Append?to?classpath,選中?juel.jar,?juel-engine.jar,?juel-impl.jar?這三個jar包就可以了。

2,方法二:將?juel.jar,?juel-engine.jar,?juel-impl.jar?這三個包復制到tomcat6下?lib/?中,并刪除原來的el-api.jar

切記還要把工程中?WEB-INF\lib?下的?juel.jar,?juel-engine.jar,?juel-impl.jar?刪除,不然還是要沖突。

3,方法三:換成tomcat5.5,就沒有問題了。

8.4.?完成流程實例中的最后一個任務時報錯(任務實例結束時),或刪除流程定義級聯刪除流程實例時,報錯如下:

com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:?Cannot?delete?or?update?a?parent?row:?a?foreign?key?constraint?fails?(`itcastoa_20100909/jbpm4_execution`,?CONSTRAINT?`FK_EXEC_INSTANCE`?FOREIGN?KEY?(`INSTANCE_`)?REFERENCES?`jbpm4_execution`?(`DBID_`))

解決辦法:把方言設為?MySQL5InnoDBDialect,不能是?MySQLDialect

總結

以上是生活随笔為你收集整理的jbpm_工作流框架笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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

中文av字幕在线观看 | 91成人免费视频 | 国产精品女视频 | 日本女人在线观看 | 182午夜在线观看 | 在线观看国产www | 久久精品中文视频 | 一区二区三区电影大全 | 久久久久久毛片 | 国产69精品久久久久久 | 国产精品午夜免费福利视频 | 国产成人免费在线观看 | 99国内精品 | 欧美一级性 | 人人玩人人添人人澡超碰 | 欧美日韩视频在线一区 | 中文字幕乱码在线播放 | 日韩高清成人 | 亚洲毛片在线观看. | 久久综合狠狠综合 | 91视频91蝌蚪 | 日韩理论电影在线观看 | 91精品黄色| 久草在线高清视频 | 毛片二区 | 国产成人精品一二三区 | 天天爽综合网 | 99中文字幕在线观看 | 麻豆国产网站 | 深爱五月激情网 | 波多野结衣视频在线 | 天天操天天舔天天爽 | 欧美日韩精品在线视频 | 日韩av午夜 | 国产午夜三级一区二区三桃花影视 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩精品视频免费专区在线播放 | 97色综合 | 中文字幕 在线 一 二 | 日韩一区二区三 | www.伊人网 | 亚洲精品国偷拍自产在线观看蜜桃 | av电影一区 | 亚洲免费在线视频 | 国产系列 在线观看 | 日韩免费在线观看网站 | 亚洲国产精品成人va在线观看 | 九九精品毛片 | 国产日韩精品一区二区在线观看播放 | 在线va网站| 在线免费试看 | 伊人成人激情 | 国产福利一区二区在线 | 免费看三级网站 | 久久草在线精品 | 国产伦理久久精品久久久久_ | 国产高清在线免费 | 99国产一区 | 亚洲天堂网在线观看视频 | 天天操综 | 日韩av快播电影网 | 欧美成人视 | 九九热在线观看视频 | 免费在线成人av电影 | 亚洲手机天堂 | 国产美女精品人人做人人爽 | 2019中文最近的2019中文在线 | 国产一级淫片在线观看 | 99热超碰 | 四虎永久国产精品 | 天天色天天射天天综合网 | 精品福利片| 国精产品永久999 | 天天色天天综合网 | 四虎www com| 91看片看淫黄大片 | 日韩一级电影在线 | 美女视频黄频大全免费 | 亚洲欧美日韩国产一区二区 | 97精品在线观看 | 国产很黄很色的视频 | 亚洲最新av | 在线亚洲人成电影网站色www | 日韩av视屏| 99精品视频免费看 | 久久嗨| aa级黄色大片 | 天天操 夜夜操 | 国内外激情视频 | 国产97碰免费视频 | 国产精品岛国久久久久久久久红粉 | 香蕉视频在线网站 | 成人免费观看完整版电影 | 日韩精品一区二区三区在线播放 | 欧美日韩一区二区三区免费视频 | 日韩a级免费视频 | 在线导航av | 欧美另类美少妇69xxxx | 色综合婷婷久久 | 999久久久精品视频 日韩高清www | 超级碰碰碰视频 | 成人播放器 | 色香com.| 97福利在线观看 | 亚洲精品美女 | 日本精品小视频 | 欧美日韩国产高清视频 | 好看av在线| 免费av大片 | 久久一级电影 | 色视频网站在线观看一=区 a视频免费在线观看 | 天天插伊人 | 国内精品久久久久久久影视麻豆 | 日本性生活免费看 | 欧美巨大 | 精品xxx | 国产盗摄精品一区二区 | 91九色蝌蚪国产 | 综合色亚洲 | 欧美一区视频 | 免费毛片aaaaaa | 超碰大片 | 天天干天天综合 | 国产小视频你懂的在线 | 伊人手机在线 | 精品国产一区二区三区男人吃奶 | 97在线公开视频 | 国产第一页精品 | 国内精品视频免费 | 免费在线电影网址大全 | 二区三区精品 | 久久免费在线观看视频 | 久久久久福利视频 | 一区二区三区高清在线 | 最新日本中文字幕 | 91av视频网| 999久久久久久久久 69av视频在线观看 | 三级大片网站 | 国产亚洲永久域名 | 欧美aaaxxxx做受视频 | 国产精品亚州 | 一区二区在线电影 | 亚洲国产精品成人女人久久 | 日韩欧美高清一区二区 | 91大神dom调教在线观看 | 日韩在线视频播放 | 伊人天天狠天天添日日拍 | 欧洲精品二区 | 久久久久久蜜桃一区二区 | 成人h电影 | 色婷婷激情网 | 丁香激情综合 | 久久艹艹| 精品国产精品久久一区免费式 | 99国产一区二区三精品乱码 | 亚洲视频电影在线 | 91色国产在线 | 国产高清无线码2021 | 国产成人精品999 | 五月在线视频 | 99精品一区二区 | 欧洲一区精品 | 一区在线观看视频 | 国产伦精品一区二区三区高清 | 亚洲欧美日韩一区二区三区在线观看 | www久草 | 欧美在线日韩在线 | 亚洲高清视频一区二区三区 | 久草网站在线观看 | 亚洲在线视频播放 | 免费观看v片在线观看 | 日韩精品一区二区三区不卡 | 成年人视频在线 | 亚洲欧洲精品一区 | 日韩精品播放 | 色播五月激情五月 | 久久久色 | 中国精品一区二区 | 国产精品一区免费观看 | 日韩电影中文字幕在线 | 久久精品国产成人 | 99久久精品久久久久久清纯 | 在线观看中文字幕dvd播放 | 久久久www成人免费毛片 | 视频一区二区视频 | 在线国产专区 | 人人澡超碰碰 | 在线91av| 国产 色 | 一区二区三区国 | 国产高清无线码2021 | 欧美在线观看视频一区二区三区 | 亚洲做受高潮欧美裸体 | 福利一区二区三区四区 | 国产精品国产自产拍高清av | 免费高清av在线看 | 在线播放亚洲激情 | 97超碰成人在线 | 国产精品普通话 | 国产精品黄色影片导航在线观看 | 午夜91视频 | 国产精品欧美久久久久无广告 | 欧美乱淫视频 | 国产精品午夜免费福利视频 | 久久综合狠狠狠色97 | 中文字幕在线看视频国产中文版 | 亚洲最新视频在线播放 | 99av国产精品欲麻豆 | 成人一区二区在线观看 | 久久久精品 一区二区三区 国产99视频在线观看 | 欧美精品在线观看免费 | 美女黄久久 | 五月天亚洲婷婷 | 日韩中文字幕亚洲一区二区va在线 | 亚洲国产中文字幕在线 | 91av视频在线免费观看 | 天堂网中文在线 | 国产精品激情偷乱一区二区∴ | 超碰97免费观看 | 国产在线免费av | 午夜精品999 | 欧美黑人性猛交 | 久久精品久久精品久久精品 | 夜夜操天天操 | 五月激情丁香 | 婷婷久久网 | 婷婷国产v亚洲v欧美久久 | 国产亚洲精品久久久久久久久久久久 | 久久99久国产精品黄毛片入口 | 亚洲一区二区麻豆 | www.福利视频 | 少妇bbw搡bbbb搡bbbb | av电影在线免费观看 | 国产成人精品久久久 | 亚洲综合色激情五月 | 欧美精品中文 | 三上悠亚一区二区在线观看 | 一级国产视频 | 日韩极品在线 | 日本一区二区不卡高清 | 精品国产精品一区二区夜夜嗨 | 国产精品嫩草55av | 久久超| 99成人在线视频 | 九九九热精品免费视频观看网站 | 看v片 | 久久久久9999亚洲精品 | 久久视频一区二区 | 成人免费网站在线观看 | 国产精久久久久久妇女av | 91网站在线视频 | 日韩午夜在线播放 | 色婷丁香 | 国产超碰97 | 九九在线精品视频 | 色婷婷免费 | 丁香激情五月婷婷 | 免费在线国产精品 | 国产福利久久 | 全黄色一级片 | 久草视频在线资源站 | 狂野欧美激情性xxxx欧美 | 免费看国产曰批40分钟 | 夜夜狠狠 | 在线观看成人 | 成人午夜毛片 | 亚洲欧洲国产视频 | 日韩精品在线视频免费观看 | 97av视频| 亚洲五月花 | 在线观看91网站 | 国产精品白丝jk白祙 | 91精品导航 | 免费亚洲精品视频 | 国产精品 亚洲精品 | 最近最新mv字幕免费观看 | 高清一区二区三区av | 99re在线视频观看 | 91日韩精品| 在线视频专区 | 天天综合色| 天天色天天 | 欧美综合色 | 亚洲一级免费观看 | 欧美日韩另类在线 | 精品久久久久久亚洲综合网站 | 日产乱码一二三区别免费 | 日韩av电影中文字幕在线观看 | 99这里只有精品99 | 五月婷婷六月丁香在线观看 | 久久国产麻豆 | 成片免费观看视频999 | 玖玖玖在线观看 | 97品白浆高清久久久久久 | 欧美一级视频免费 | 狠狠五月婷婷 | 日日干天天插 | 日韩最新在线视频 | 99亚洲精品 | 国产韩国日本高清视频 | 色中文字幕在线观看 | 天天狠狠操| 五月婷久久 | sm免费xx网站 | www一起操 | 特级西西444www大精品视频免费看 | a√天堂资源| 国产色资源 | 91麻豆精品国产91久久久无限制版 | 国产免费又粗又猛又爽 | 91丝袜美腿| 国产亚洲精品久久久久动 | 色婷婷激婷婷情综天天 | 国产精品精品久久久久久 | 久99久精品| 婷婷丁香社区 | 亚洲精品在线免费观看视频 | 最近中文字幕免费大全 | 日韩电影一区二区在线观看 | 国产精品一区二区免费看 | 日韩有码网站 | 亚洲精品久久久蜜臀下载官网 | 中文字幕一二三区 | 人人插人人做 | 99热在线国产 | 国产视频在线观看一区 | 日韩免费成人av | 高清免费在线视频 | 日韩系列在线 | 日韩在线第一 | 国产一区视频导航 | 少妇bbw搡bbbb搡bbb | av在线最新| 日韩精品免费在线 | 四虎国产精品免费 | 久久国产美女视频 | 麻豆果冻剧传媒在线播放 | 综合久久网 | 中文字幕亚洲国产 | 久久免费a | 国产理论一区二区三区 | 精品国产视频在线 | 成全在线视频免费观看 | 久久久高清 | 91免费版成人 | 九九影视理伦片 | 日韩一区精品 | 国产中文伊人 | 97av在线视频免费播放 | 国产在线观看你懂得 | 中文字幕乱在线伦视频中文字幕乱码在线 | 在线v片免费观看视频 | 伊人精品影院 | 欧美精品三级在线观看 | 欧美色婷婷 | 日韩av免费在线电影 | 香蕉视频网站在线观看 | 一区二区三区免费在线 | 亚洲精品国产精品乱码在线观看 | 日韩二区在线 | 国产原创91 | 91精品视频免费 | 中文字幕永久免费 | 国产一区视频免费在线观看 | 久久伊99综合婷婷久久伊 | 99久精品| 免费福利在线观看 | 最新av免费在线观看 | 久久久私人影院 | 精品99久久久久久 | 亚洲黄色软件 | 超碰在线日本 | 国产自产高清不卡 | 在线观看岛国av | 99在线精品免费视频九九视 | 国产精品一级在线 | 日韩成片| 99这里只有久久精品视频 | 国产永久免费高清在线观看视频 | 亚洲午夜av | 亚洲综合成人婷婷小说 | 久久噜噜少妇网站 | 日韩视频免费观看高清完整版在线 | 国产美女网站在线观看 | 久草网站在线 | 四虎www | 久久免费中文视频 | 91福利在线观看 | 久久a久久 | 国产伦精品一区二区三区高清 | 人人爽人人爽 | 欧美日产在线观看 | 狠狠干狠狠操 | 超碰97成人| 亚洲精品五月 | 精品国产欧美 | 婷婷丁香五 | www.天天射 | 久久人人爽av | 免费亚洲成人 | 成人影音在线 | 九九视频网站 | 成人免费观看电影 | 日韩欧美在线高清 | 国产黄网站在线观看 | 五月婷婷av在线 | 国产高清在线精品 | 9992tv成人免费看片 | 四虎在线观看 | 人人玩人人添人人澡超碰 | 丁香色婷| www.com操| 精品久久久影院 | 国产精品视频免费 | 天天干.com | 亚洲区另类春色综合小说 | 五月天婷婷视频 | 免费在线观看av片 | 国产精品女同一区二区三区久久夜 | av在线播放中文字幕 | 亚洲成av| 国产一区二区在线免费视频 | 麻豆传媒在线视频 | 日韩电影在线视频 | 成人av网站在线播放 | 国产精品1区2区3区在线观看 | 91成人免费电影 | 久久久久久久久久久久久国产精品 | 国产精品视频不卡 | 久草在线费播放视频 | 一区二区三区视频网站 | 色婷婷色 | 色全色在线资源网 | 国产黄色资源 | 午夜电影av | 在线观看的黄色 | 精品一区二区免费 | 国产成人一区二区在线观看 | 久久久久这里只有精品 | 伊香蕉大综综综合久久啪 | 91网址在线看 | 9797在线看片亚洲精品 | 国产精品区二区三区日本 | 成人91免费视频 | 成人毛片在线视频 | 国产做爰视频 | 色婷婷a| 又紧又大又爽精品一区二区 | 在线视频你懂 | 国产精品婷婷午夜在线观看 | 狠狠地日| 手机在线小视频 | 久久精品视频99 | 91麻豆精品国产91久久久久久久久 | 久久久久久麻豆 | 四虎国产永久在线精品 | 波多野结衣在线观看一区二区三区 | 中字幕视频在线永久在线观看免费 | 成人在线视频在线观看 | 久久精品免费 | 天天射天天色天天干 | 最新日韩精品 | 中文字幕日韩在线播放 | 国产精品久久久久久久久久久久久久 | 亚洲日韩中文字幕 | 欧美精品久久天天躁 | 麻豆久久久久久久 | 一本到视频在线观看 | 999男人的天堂 | 欧美婷婷色 | 91高清不卡| 在线欧美小视频 | 91精品久久久久 | 成人精品一区二区三区中文字幕 | 久久久久97国产 | 黄色小说网站在线 | 91桃花视频| 国产成人久久久久 | 日本公乱妇视频 | 91桃色在线免费观看 | 99久久精品费精品 | 中文字幕免| 国产片免费在线观看视频 | 999久久久免费精品国产 | 国产91在| 国产成人精品一区二区在线 | 免费视频在线观看网站 | 久久精品视频在线看 | 天天操天天操天天操天天 | 婷婷久久久久 | 91在线观看欧美日韩 | 午夜av不卡 | 福利电影一区二区 | 超碰在线人人草 | 98精品国产自产在线观看 | 特级大胆西西4444www | 久久成人国产精品一区二区 | 国产三级视频 | 欧美 激情 国产 91 在线 | 五月天综合 | 久久高清国产视频 | 西西人体www444| 国产精品久久久久一区二区国产 | 三上悠亚一区二区在线观看 | 久久经典国产视频 | 福利视频一区二区 | 国产色网站 | 国产成人精品久久亚洲高清不卡 | 国产视频 亚洲精品 | 色婷婷综合久久久中文字幕 | 黄色av一区 | 最新国产在线视频 | 最近中文字幕在线中文高清版 | 久久综合狠狠综合久久狠狠色综合 | 福利在线看片 | 91av中文字幕 | 成人av免费在线观看 | 五月天激情综合网 | 日韩成人中文字幕 | 国产一区在线免费 | 免费看的国产视频网站 | 激情文学综合丁香 | 在线看一区 | 久草在线费播放视频 | 在线影视 一区 二区 三区 | 99久久精品电影 | 麻豆视频在线观看免费 | 一区二区亚洲精品 | 久艹视频在线免费观看 | 午夜av电影 | 黄色app网站在线观看 | 午夜精品视频福利 | 韩国精品福利一区二区三区 | 99中文视频在线 | 成人免费在线播放视频 | 日韩欧美电影在线 | 免费无遮挡动漫网站 | 91麻豆精品国产自产 | 在线看日韩 | 91中文字幕永久在线 | 五月天亚洲综合小说网 | 久久观看| 日韩视频免费看 | 日韩在线观看一区二区三区 | 国产精品久久久久久久久久了 | 亚洲免费av在线播放 | 欧美va电影 | 国产亚洲一区二区三区 | 久久高清片| 麻豆影音先锋 | 超碰午夜| 91桃色国产在线播放 | 亚洲年轻女教师毛茸茸 | 在线视频观看成人 | 成人三级av | 高清在线一区二区 | 精品黄色视 | 欧美成人黄 | 国产精品欧美久久久久无广告 | 黄色网www| 久久综合色8888 | 97国产在线观看 | 美女视频黄免费的久久 | 在线看av的网址 | 在线草 | 狠狠艹夜夜干 | 伊人亚洲综合 | av电影在线播放 | 99r精品视频在线观看 | 日韩免费在线网站 | 91精品夜夜| 国产91探花 | 国产精品久久久久aaaa | 中文字幕亚洲精品日韩 | 日日操夜夜操狠狠操 | 91亚洲国产成人久久精品网站 | 天堂视频一区 | 欧美一区二区三区不卡 | 成人国产精品 | 一区二区三区四区在线免费观看 | 久久99国产精品久久99 | 在线你懂的视频 | 欧美激情奇米色 | 免费在线91 | 国产精品理论片在线播放 | 在线国产日韩 | 亚洲区色 | 米奇四色影视 | 91在线操 | 最新日韩视频在线观看 | 国产美女视频一区 | 国产精品久久久久9999 | 亚洲狠狠婷婷 | 91精品国产一区二区在线观看 | 9999在线视频| 欧美亚洲国产一卡 | 亚洲国产成人精品电影在线观看 | 97成人在线视频 | 国产午夜激情视频 | 亚洲午夜av| 久久国产免费视频 | 天天射,天天干 | 免费一级片在线 | 天天天综合 | 日韩国产在线观看 | 国产高清区 | 午夜久久久久久久久久影院 | 69亚洲精品 | 中文字幕有码在线观看 | 亚洲视频一区二区三区在线观看 | 日本黄色免费播放 | 亚洲最新av在线网址 | 丁香六月婷婷开心 | 激情婷婷综合 | 国内综合精品午夜久久资源 | av免费试看 | 免费网站在线观看成人 | 亚洲作爱视频 | 天堂av在线网址 | 有码一区二区三区 | 中文字幕网址 | 超碰在线个人 | 国产精品24小时在线观看 | 日日干天天爽 | 国产亚洲成av人片在线观看桃 | 亚洲,播放| 91亚洲影院| 成人在线观看免费视频 | 国产亚洲欧美精品久久久久久 | 免费观看一级特黄欧美大片 | 一级黄色大片在线观看 | 波多野结依在线观看 | 国产经典av | 97免费中文视频在线观看 | 国产在线成人 | 99精品视频99 | 99热这里只有精品1 av中文字幕日韩 | 在线精品视频免费播放 | 亚洲资源在线网 | 亚洲色综合| 免费成人在线观看视频 | 一本一本久久a久久 | 久久人人爽人人爽人人片 | 97精品国产91久久久久久 | 精品在线免费视频 | 人人看黄色 | 一区二区三高清 | 美女福利视频网 | 国产成人免费在线观看 | 91精品视频在线免费观看 | 在线探花 | 色国产精品 | 国产黄影院色大全免费 | 久久久久国产精品一区二区 | 在线有码中文 | 在线免费视 | 久草在线免费资源 | 久久久久久久久久久网站 | av三级在线播放 | 人人爽人人做 | 日韩 国产| 美女网站在线播放 | 亚洲精品视频国产 | 国产高清免费观看 | 超碰av在线播放 | a级片久久| 国产精品岛国久久久久久久久红粉 | 天堂av高清| 成人h电影 | 免费在线a | 91精品啪在线观看国产 | 337p欧美 | 欧美另类交在线观看 | 国产中文在线字幕 | 亚洲精品视频在线看 | 特级毛片在线 | 免费视频资源 | 日韩久久激情 | 一本一本久久a久久精品牛牛影视 | 亚洲精品自拍视频在线观看 | 日韩成人邪恶影片 | 久草视频99 | 久插视频 | 久久综合爱 | 亚洲 欧洲 国产 日本 综合 | 日日夜夜天天 | 在线a视频免费观看 | 国产成人一区二区三区影院在线 | 美女在线免费视频 | 日韩欧美一区二区三区免费观看 | av中文在线观看 | 精品视频免费久久久看 | 精品国产乱码久久 | 国产精品专区一 | 日韩夜夜爽 | 久久手机视频 | 亚洲精品中文字幕在线 | 色综合久久久久综合 | 亚洲国产视频在线 | 精品av在线播放 | 婷婷色中文字幕 | 日韩一级电影网站 | 国产福利在线免费 | 久久久国产精品成人免费 | 中文在线www | 亚洲精品理论片 | 国产一级黄色片免费看 | 开心激情五月网 | 玖玖精品视频 | 欧美一级激情 | 一本—道久久a久久精品蜜桃 | 欧美日韩中文在线 | 国产不卡视频在线 | 成人黄在线 | 天天操天天操天天操天天操天天操天天操 | 99久久精品免费看国产 | 一区二区视频免费在线观看 | 在线播放精品一区二区三区 | 狠狠干夜夜爱 | 成人影音av | av观看久久久 | 少妇av片 | 日韩在线高清免费视频 | 国内精品久久久久久久 | 国产精品毛片一区视频 | 天天天干天天天操 | 欧洲精品亚洲精品 | 午夜视频在线观看一区 | 国产一区二区中文字幕 | 日韩免费电影网 | 午夜av免费在线观看 | 日韩欧美国产免费播放 | 国产中文自拍 | 国产无遮挡又黄又爽馒头漫画 | 久草在线在线视频 | 九九爱免费视频 | 精品国产91亚洲一区二区三区www | 99视频精品免费视频 | 国产69精品久久久久久久久久 | 中文字幕精品三级久久久 | 日韩理论在线视频 | 亚洲精品视频偷拍 | 精品福利网 | 国产一级做a爱片久久毛片a | 一区二区三区四区五区在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久综合婷婷国产二区高清 | 人人澡人人模 | 午夜精品福利在线 | 叶爱av在线 | 日韩欧美电影在线 | 蜜臀91丨九色丨蝌蚪老版 | 一区二区在线电影 | 91在线精品一区二区 | 不卡的av电影在线观看 | 91精品国产高清自在线观看 | 国产成人精品久久二区二区 | 成人免费一级 | 99欧美视频 | 天天干天天做天天爱 | 天天操夜夜摸 | 91插插插网站 | 99视频导航| 欧美国产三区 | 国产网红在线 | 欧美国产日韩在线观看 | 欧美久久久久久久久久 | 午夜色站 | 99精品国产99久久久久久福利 | 狠狠躁日日躁夜夜躁av | 成人a级黄色片 | 麻豆系列在线观看 | 欧美成人中文字幕 | 中文字幕色婷婷在线视频 | 亚洲精品国精品久久99热一 | 99日精品 | 亚洲.www | 国模一二三区 | 日韩精品在线视频免费观看 | 免费的黄色av | av在线播放中文字幕 | 亚洲婷婷在线 | 久久新视频 | 九九久 | 精品免费一区 | 亚洲电影影音先锋 | 国产原创av在线 | 99婷婷 | 狠狠久久 | 五月综合激情婷婷 | 亚洲免费专区 | 欧美日韩一区二区三区不卡 | 97夜夜澡人人爽人人免费 | 国产在线1区| av中文字幕在线免费观看 | 国产在线观看,日本 | 日韩免费久久 | 亚洲日韩精品欧美一区二区 | 色就是色综合 | 99精品在线观看视频 | 久久激情五月婷婷 | 国产精华国产精品 | 九九激情视频 | 国产精品久久久久免费观看 | 成人免费在线观看av | 午夜婷婷综合 | 免费看毛片网站 | 99在线播放| 国产91精品久久久久久 | 中文字幕中文字幕在线中文字幕三区 | 欧美精品一级视频 | 中文字幕一区三区 | 麻豆91小视频 | 欧美成人手机版 | 91麻豆传媒 | 丝袜制服天堂 | 亚洲在线网址 | 免费在线激情电影 | 天天操夜夜操夜夜操 | 国产午夜激情视频 | 男女靠逼app | 嫩草av影院 | 97在线观看免费视频 | 日韩天天综合 | 在线免费中文字幕 | 色综合狠狠干 | 在线播放 一区 | 久久任你操| 96精品视频| 天天草av | 天天插狠狠插 | 成人av在线网 | 亚洲黄色成人av | 亚洲黄色小说网址 | 日日夜夜综合网 | 国产亚洲精品久久久久久久久久久久 | 久久精品亚洲 | 欧美二区三区91 | 狠狠干在线 | 狠狠的操狠狠的干 | 综合网欧美 | 国产精品人成电影在线观看 | 蜜臀av性久久久久蜜臀av | www天天干| 国产精品九九久久久久久久 | 天天操天天色天天 | 国产一区二区久久 | 精品美女国产在线 | 国产黄大片在线观看 | 国产高清不卡在线 | 精品国产免费一区二区三区五区 | 日本一区二区不卡高清 | 天天干天天拍天天操天天拍 | av网站免费看 | 国产精品白浆 | 碰超在线 | 久久成人精品视频 | 久久精品中文字幕少妇 | 午夜精品视频在线 | 国产成人综合在线观看 | 色一级片| 国产精品九九久久久久久久 | 午夜一级免费电影 | 国产女v资源在线观看 | 黄色91免费观看 | 一级淫片在线观看 | 欧美日韩一二三四区 | 免费视频久久久 | 日本二区三区在线 | 久久五月天婷婷 | 日韩三区在线观看 | 成人在线电影观看 | 成人资源网 | 91麻豆精品国产自产在线游戏 | 日韩免费高清在线观看 | 婷婷丁香六月天 | 日韩精品免费在线 | 久久久国产精品网站 | 黄色大片入口 | 欧美性成人 | 黄色小说免费观看 | 四虎永久免费 | 久久视精品 | 久久无码av一区二区三区电影网 | 91视频在线| 久久精品女人毛片国产 | 久草在线在线精品观看 | 国产精品久久久久久久久久99 | 欧美淫aaa免费观看 日韩激情免费视频 | 日韩三级视频在线看 | 少妇性bbb搡bbb爽爽爽欧美 | 国产黄色片久久久 | 婷婷国产v亚洲v欧美久久 | 激情网五月天 | 国产精品24小时在线观看 | 亚洲在线视频免费观看 | 国产精品综合在线 | 视频 天天草 | 99精品国产一区二区三区不卡 | 亚洲综合一区二区精品导航 | 亚洲视频在线观看 | 麻豆视频国产 | 天天射天天干 | 日韩女同一区二区三区在线观看 | 国产精品久久网 | 久久久久福利视频 | 黄色成人av网址 | 国产精品久久久久久麻豆一区 | 亚洲午夜av久久乱码 | 色综合久久中文综合久久牛 | 久久在线精品 | 久久精品国产精品 | 久久免费看片 | 成年人视频在线免费 | 黄色三级免费 | 中文字幕乱偷在线 | 中文字幕视频一区 | 93久久精品日日躁夜夜躁欧美 | 一区二区三区动漫 | a级国产乱理伦片在线观看 亚洲3级 | 亚洲成人精品在线 | 欧美在线a视频 | 中文字幕制服丝袜av久久 | 亚洲国产小视频在线观看 | 久久免费播放 | 国产成人1区 | 天天插天天射 | 国产精品毛片一区二区 | 亚洲精品资源 | 欧美日本不卡视频 | 韩国av免费观看 | 亚洲区视频在线观看 | 欧美十八 | 欧美一级免费在线 | 99久久婷婷国产一区二区三区 | 成人欧美亚洲 | 2024国产精品视频 | 亚洲欧洲中文日韩久久av乱码 | av视屏在线| 欧美一区二视频在线免费观看 | 日日干夜夜草 | 久久视频这里有久久精品视频11 | 久草在线免费在线观看 | 在线激情网 | 91看片淫黄大片在线播放 | 久草在线精品观看 | 又黄又爽又刺激 | 亚洲午夜精品久久久久久久久久久久 | 国产超碰在线 | 精品久久久精品 | 精品久久久久_ | 亚洲日日夜夜 | 久久国产热视频 | 久久人人精品 | 日韩a免费 | 亚州精品在线视频 | 国内免费久久久久久久久久久 | 又黄又爽又刺激视频 | 成人动漫视频在线 | 国产91免费观看 | 国产99爱| 91精选| 美女视频免费一区二区 | 亚洲视频一区二区三区在线观看 | 在线亚洲欧美视频 | 久久九九久久 | 日韩黄色在线电影 | 中文字幕在线一区二区三区 | 免费在线观看毛片网站 | 亚洲黄色免费观看 | 日韩网站在线免费观看 | 国产精彩视频一区 | 丝袜网站在线观看 | 久久www免费人成看片高清 | 精品一区 在线 | 精品福利av| 中文字幕123区 | 天天射狠狠干 | 亚洲精品久久在线 | 亚洲午夜av | 91精品一区国产高清在线gif | 日韩国产欧美在线播放 | 国产亚洲精品久久久久久久久久久久 | 婷婷久久网 | 九九九热精品免费视频观看 | 国产中文字幕视频在线 | 久久系列 | 美女亚洲精品 | 久草电影在线观看 | 三日本三级少妇三级99 | 亚洲h视频在线 | 欧美最猛性xxxxx(亚洲精品) | 麻豆视频免费网站 | 国产精品1区2区3区在线观看 | 五月天久久久久久 | 日本高清中文字幕有码在线 | 久久亚洲免费视频 | 干天天 |