工作流框架JBPM的基本應用

2021-06-23 07:15:18 字數 3095 閱讀 6695

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

工作流管理系統(wfms,workflow management system)的主要功能是通過計算機技術的支援去定義、執行和管理工作流,協調工作流執行過程中工作之間以及群體成員之間的資訊互動。工作流需要依靠工作流管理系統來實現。工作流管理系統是定義、建立、執行工作流的系統,應能提供以下三個方面的功能支援:

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

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

3.執行互動功能:指在工作流執行中,wfms與使用者(活動的參與者)及外部應用程式工具互動的功能。

一、管理流程

部署(新增)

刪除查詢(查詢所有、自定義條件查詢)

獲取部署新增的檔案資訊(檢視流程圖)

* 沒有更新操作!策略為:重新部署 + 版本遞增。

二、執行流程

啟動流程例項

查詢我的任務列表

辦理任務

直接向後執行一步

****************************************===

部署物件

deployment

表示一次部署的多個檔案的資訊。

對應的表:

jbpm4_deployment

jbpm4_lob

流程定義

processdefinition

表示乙個工作流程,包含每個環節的詳細資訊。

這是解析.jpdl.xml檔案得到的資料。

此類沒有對應的表,他對應的是.jpdl.xml檔案。

執行物件

execution

表示乙個執行的路徑(分支)。最大的分支就是從start到end的那個。

最大的分支稱為root execution 也稱為 processinstance。

對應的表:

jbpm4_execution

正在執行的資訊表

jbpm4_hist_procinst

已經執行完的歷史資訊表

流程例項

processinstance

表示按某流程定義執行的所有執行時的資訊。

processinstance就是execution物件(的子型別)

任務task

在執行流程的過程中,在task環節生成的任務資訊。

對應的表:

jbpm4_task

正在執行的資訊表

jbpm4_hist_task已經執行完的歷史資訊表

示例**:

/**

* 管理流程定義有關的操作

* 部署(新增)

* 刪除

* 查詢(查詢所有、自定義條件查詢)

* 獲取部署新增的檔案資訊(檢視流程圖)

* !!沒有更新操作!策略為:重新部署 + 版本遞增。

* */

public class processdefinitiontest

// 部署(把多個檔案打包為乙個zip一起部署)

@test

public void testdeploy_zip() throws exception

// 刪除

@test

public void testdelete() throws exception

// 查詢流程定義(查詢所有、自定義條件查詢)

@test

public void testfindallprocessdefinition() throws exception -

+ ", name=" + pd.getname()// .jpdl.xml中根元素的name屬性的值。

+ ", key=" + pd.getkey()// .jpdl.xml中根元素的key屬性的值。如果不寫,預設為name屬性的值。

+ ", version=" + pd.getversion()// .jpdl.xml中根元素的version屬性的值。如果不寫,預設的效果為同名稱的第乙個version為1,以後的就遞增。(一般不要寫)

+ ", deploymentid=" + pd.getdeploymentid()); // 所屬的部署物件的id

} }// 獲取部署時新增的檔案資訊(檢視流程圖)

@test

public void testgetprocessimage() throws exception

// 獲取指定的部署物件中的指定名稱的檔案內容

inputstream in = processengine.getrepositoryservice().getresourceasstream(deploymentid, resourcename);

// 存到d:/中

fileoutputstream out = new fileoutputstream("d:/process.png");

byte buf = new byte[1024];

for (int len = -1; (len = in.read(buf)) != -1;)

in.close();

out.close();

}}

/**

* 執行流程例項有關的操作

* 啟動流程例項

* 查詢我的任務列表

* 辦理任務

* 直接向後執行一步

*/public class processinstancetest

// 查詢我的(未完成的)任務列表

@test

public void testfindmytasklist() throws exception

} // 辦理任務

@test

public void testcompletetask() throws exception

// 直接向後執行一步

@test

public void testsignal() throws exception

}

JBPM工作流 一

好了,吐槽了一番覺得心情頓時開朗了,那麼,接下來就進入正題把 jbpm,學技術首先知道這個技術是做什麼用的,否則學起來你就會沒頭沒腦了.這裡,個人的解釋不是很全面,大家可以在網上搜尋一下.知道個大概意思就行了 那麼,如何使用jbpm進行開發呢?首先,匯入相關的jbpm的jar包檔案,如果不知道匯入那...

JBPM工作流簡單步驟

啟動流程 獲取最新的流程定義 jbpmcontext.getcurrentjbpmcontext getgraphsession findlatestprocessdefinitions 返回list 獲取指定流程定義 processdefinition processdefinition grap...

liferay工作流開發(JBPM亂碼)

jbpm web不能匯出到ext工程裡,這個很鬱悶,在liferay原始碼中開發,他eclipse完全把這些檔案當作是普通的檔案,報錯提示什麼也沒有,錯了也不知道,我的做法是先在外面建乙個普通的web工程,然後把jbpm web下面的src拷到我面的web工程裡然後把要的包導進來,這樣開發起來就舒服...