jbpm4.4+ssh配置
JBPM,全稱是Java Business Process Management(業(yè)務流程管理),它是覆蓋了業(yè)務流程管理、工作流、服務協(xié)作等領域的一個開源的、靈活的、易擴展的基于java實現(xiàn)的流程業(yè)務處理框架(Business Process Management)。jBPM是公開源代碼項目,它使用要遵循 Apache License。
??? 支撐企業(yè)的流程性業(yè)務應用:解釋業(yè)務規(guī)則,使得協(xié)作自動化
2.JBPM最大特色
? 就是它的商務邏輯定義沒有采用目前的一些規(guī)范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它自己定義的JBoss jBPM Process definition language (jPdl)。jPdl認為一個商務流程可以被看作是一個UML狀態(tài)圖。jPdl就是詳細定義了這個狀態(tài)圖的每個部分,如起始、結束狀態(tài),狀態(tài)之間的轉換,過圖型化的流程定義,直觀地描述業(yè)務流程。
jBPM的另一個特色是它使用Hibernate來管理它的數(shù)據庫。Hibernate是目前Java領域最好的一種數(shù)據存儲層解決方案,只要是 Hibernate 支持的數(shù)據庫, jBPM 也就支持。通過Hibernate,jBPM將數(shù)據的管理職能分離出去,自己專注于商務邏輯的處理。
3.JBPM帶來的益處
實現(xiàn)了無紙化的工作模式;
過程可監(jiān)控:便于對執(zhí)行過程的跟蹤和監(jiān)控
數(shù)據可管理:便于對數(shù)據進行檢索、分析
可靠性:減少人-人交互的主觀錯誤的機率
4.JBPM常見應用領域
行政管理:行政、事業(yè)單位、大中型(國有)企業(yè)
產品研發(fā)和制造:用于對整個研發(fā)、生產制造過程的管理和調度
電子商務:訂單處理
其他 如大型內容管理系統(tǒng)的多步審核
5.JBPM常見場景
公文流轉、行政審批、訂單處理、產品研發(fā)、制造過程
其他需要多個角色協(xié)作、多步完成的活動
6.JBPM模型說明
加載流程定義:
定義工具可以系統(tǒng)提供,也可以只是讀取定義結果
啟動流程:
啟動選定的流程,創(chuàng)建流程實例
辦理任務(流程的每一步):
執(zhí)行流程的每個步驟(不一定都需要人參與:自動任務節(jié)點)
記錄流程的狀態(tài):
對狀態(tài)的管理是工作流引擎的主要職責
7.JBPM主要概念
流程定義:預先定義的業(yè)務流轉邏輯
流程實例:業(yè)務的一次實際流轉過程
參與者:任務的執(zhí)行者
活動(任務):組成流程定義的節(jié)點
活動實例:組成流程實例的元素
流轉:從一個節(jié)點到另一個節(jié)點這一行為
工作列表:當前需要辦理的任務集合
工作流引擎:工作流的核心組件,對流程實例、任務實例以及其狀態(tài)進行管理
8.JBPM套件的組成
jPDL Designer:流程定義設計器,流程建模工具
jPDL Library:流程執(zhí)行引擎
WebConsole:參與者和流程執(zhí)行環(huán)境的交互界面,流程運行期間的監(jiān)控工具
9. 使用jBPM開發(fā)工作流的一般流程
1) jBPM的運行需要數(shù)據庫的支持,因此系統(tǒng)設計時要選定所用數(shù)據庫。只要是Hibernate支持的數(shù)據庫,jBPM就支持。數(shù)據庫的初始化可以由jBPM自動完成,也可以通過ant generate.ddl任務生成SQL語句,在jBPM外部自己創(chuàng)建所需的表。
2) 使用jPdl定義工作流,生成processdinination.xml文件。可以采用GUI工具gpdl,但目前只支持jBPM1.0,而且bug很多。XML的DTD定義文件在jBPM下載包中。
3) Ant create.pde生成pde包的工作目錄。將processdinination.xml文件和其它需要的文件放在指定的目錄下,使用ant build.precess.archives生成pde包。pde包的格式采用jar。
4) 更改pde工作目錄/src/config/jbpm.properties的相關屬性,主要是設定相關的數(shù)據庫連接信息。注意要將數(shù)據庫的JDBC驅動放在pde工作目錄的lib目錄下。
5) Ant deploy.process.archives將剛才生成的pde部署到數(shù)據庫。實際上就是向數(shù)據庫插入一些相關數(shù)據。
6) 利用jBPM API函數(shù)開發(fā)相應的工作流程。
10.jbpm表結構介紹
10.1資源庫和運行時表結構
JBPM4_DEPLOYMENT,JBPM4_DEPLOYPROP,JBPM4_LOB存儲流程定義相關的部署信息
JBPM4_EXECUTION主要是存放JBPM4的執(zhí)行信息,Execution機制代替了JBPM3的Token機制
JBPM4_TASK存放需要人來完成的Activities(活動),需要人來參與完成的Activity 被稱為Task
JBPM4_PARTICIPATION參與者表,存放參與者信息,參與者的種類有Candidate、Client、Owner、Replaced Assignee和Viewer。而具體的參與者既可以是單一用戶,也可以是用戶組
JBPM4_SWIMLANE泳道表。SwimLane是一種Runtime Process Role。通過SwimLane,多個Task可以一次分配到同一Actor身上
JBPM4_JOB? 存放的是Timer 的定義
JBPM4_VARIABLE 存的是進行時的臨時變量。
10.2歷史數(shù)據庫表結構
JBPM4_HIST_PROCINST 與JBPM4_HIST_ACTINST 分別存放Process Instance和Activity Instance的歷史記錄
JBPM4_HIST_DETAIL 保存 Variable的變更記錄
JBPM4_HIST_VAR 保存歷史的變量 JBPM4_HIST_TASK Task的歷史信息
身份認證表結構
JBPM4_ID_GROUP ,JBPM_ID_MEMBERSHIP ,JBPM4_ID_USER 這三張表很常見,基本的權限控制,關于用戶認證方面建議還是自己開發(fā)一套,組件自帶的功能太簡單,使用中有很多需求難以滿足
除了前面述及的17張表外,還有一張引擎參數(shù)表,這是一張獨立的表,在此沒有單獨列出
?
11.GPD(圖形化流程設計器) for Eclipse插件安裝
- · 幫助-->軟件更新(Help --> Software Updates)
- · 選擇“有效軟件”標簽(Available Software)
- · 點擊添加站點(Add Site)
- · 在對話框里添加站點擊(Add Site)對話框,點擊壓縮包(Archive)
- · 找到gpd/jbpm-gpd-site.zip
- · 點擊“確定”(ok)自動回到“軟件更新和擴展”對話框
- · 選擇jPDL 4 流程設計器更新站點(jPDL 4 GPD Update Site)
- · 點擊安裝(Install)
- · 在安裝(Install)對話框中,選擇Flow Common Feature 和jPDL 4 Feature
- · 點擊下一步(Next)
- · 選擇接受(Accept),并點完成(Finish)
- · 重啟Eclipse
12. 基于Web的Signavio流程設計器
jBPM3開始,這個著名的開源項目就因為沒有基于瀏覽器的圖形化流程設計器而飽受用戶詬病,沒錯,進入了Web時代,流程設計器沒有理由總是停留在CS(Client Server)階段。有很多公司認識到了這一點,因此市場上的jBPM Web流程設計器并不少見,但它們或不開放源代碼、或基于特定的業(yè)務、或存在支持升級問題。總之,沒有RedHat JBoss jBPM的官方認證和支持,您用著總會不放心,不是嗎?
現(xiàn)在您不用擔心了。從Version 4.1開始,jBPM官方發(fā)布包綁定了一個完全開源的基于Web的BPM流程設計器,代號為Signavio。
12.1jBPM Web流程設計器簡介
Signavio Web流程建模工具是和JBoss jBPM團隊、德國的Signavio公司和Hasso Plattner Institute(HPI軟件工程研究所)緊密協(xié)作的成果。Signavio項目基于Web建模工具Oryx,Oryx是由HPI主持的開源項目。HPI和Signavio公司都會持續(xù)地在Oryx項目和Signavio項目中投入人員和資金的支持。關于這兩個項目,您可以在Google Code上找到:http://code.google.com/p/signavio-oryx-initiative/。
使用Signavio可以讓業(yè)務流程分析人員通過瀏覽器建立業(yè)務流程模型。Signavio輸出的流程文件格式正是jPDL。這意味著Signavio設計出的流程定義文件可以直接導入到Eclipse GPD,反之亦然。流程定義文件會保存在硬盤上,位于 $jbpm_home/signavio-repository中,這個參數(shù)在安裝腳本中有默認值。
下圖是Signavio流程設計器的使用界面,它能很好地支持IE和Firefox瀏覽器。
?
注意:Signavio是基于web的業(yè)務流程建模工具,綁定在jBPM中,是100%開源的(基于MIT開放源代碼許可證)。同時,Signavio公司也提供商業(yè)版的同名工具,毫無疑問,商業(yè)版的Signavio有更多的功能。
12.2獨立安裝Signavio
復制 $jbpm_home/install/src/signavio/jbpmeditor.war 到您的目標Web容器中。
12.3配置Signavio
Signavio配置很簡單,大多數(shù)參數(shù)在web.xml中修改即可,您可以在 jbpmeditor.war/WEB-INF/ 目錄中找到。其中最重要的是 fileSystemRootDirectory 參數(shù)。這個參數(shù)的值必須為一個物理上存在的本地目錄,它指定了流程定義文件(即*.jpdl.xml 文件)存儲的位置,以下是此參數(shù)的web.xml片段:
12.3 Signavio缺點:
1:不支持中文。
2:只能用firefox打開頁面。
13.在目錄中添加jPDL4模式
- · 點擊窗口-->屬性(Windows-->Preferences)
- · 選擇XML-->目錄(XML-->CataLog)
- · 點擊添加(Add)
- · 添加XML目錄(Add XML Catalog Entry)的窗口打開
- · 點擊map-icon的圖標下面的按鈕并選擇文件系統(tǒng)(File System)
- · 在打開的對話框中,選擇jBPM安裝目錄下src文件夾中jpdl.xsd文件
- · 點擊打開(Open)并且關閉所有的對話框
14.ssh+jbpm整合
- · 加入jbpm.jar包, 文件位置在jbpm發(fā)布包根目錄下
- 加入jbpm配置文件,文件位置在jbpm發(fā)布包根目錄/examples/src下: ?
- · Spring配置文件加入以下代碼:
- · Hibernate配置文件加入以下代碼: ? ???第一次執(zhí)行時需放開第一行代碼 以便在目標數(shù)據庫中創(chuàng)建jBPM 表結構;創(chuàng)建之后需手動注釋第一行代碼;
???? ?? 或者在jbpm-4.4/install目錄下執(zhí)行cmd命令: ant create.jbpm.schema 。
15.部署到tomcat6.0
需刪除tomcat6.0 lib目錄下el-api.jar 包,因為會和jbpm的包產生沖突。然后導入jbpm發(fā)布包lib目錄下的以下三個包:
?
Ok,啟動服務。
16.示例項目
???????? TestJBPM是一個簡單的jbpm+ssh+oracle10g+tomcat6整合項目,實現(xiàn)了一個簡單的請假流程。工程由myeclipse打開。
流程圖如下:
部署前需修改jbpm.hibernate.cfg.xml文件,改為您自己的數(shù)據庫連接方式
導入庫文件 testJbpm.dmp
apache-tomcat-6.0.20 下有部署好的Signavio流程設計器,啟動tomcat前,需要在c盤下創(chuàng)建test文件夾。
17.JBPM工作流小結
經過兩周的學習和討論,我們了解了工作流的概念、并逐步分析和熟悉了jbpm工作流的特點和應用,現(xiàn)對jbpm工作流總結如下。
?? 17.1關于JBPM工作流
??? ????17.1.1工作流
? ?? 工作流是一項分離業(yè)務操作和系統(tǒng)流程的技術。工作流由實體(Entity)、參與者(Participant)、流程定義(Flow Definition)、工作流引擎(Engine) 四部分組成。
????? 實體是工作流的主體,是需要隨著工作流一起流動的物件(Object)。例如,在一個采購申請批準流程中,實體就是采購申請單;在公文審批流程中,實體就是公文。
??參與者是各個處理步驟中的責任人,可能是人,也可能是某個職能部門,還可能是某個自動化的設備;
??流程定義是預定義的工作步驟,它規(guī)定了實體流動的路線。它可能是完全定義的,即對每種可能的情況都能完全確定下一個參與者,也可能是不完全定義的,需要參與者根據情況決定下一個參與者;
??工作流引擎是驅動實體按流程定義從一個參與者流向下一個參與者的機制
? ?? ?前三個要素是靜態(tài)的,而第四個要素是動態(tài)的,它將前三者結合起來,是工作流的核心組成元素。
?? ?????17.1.2JBPM
??? jBPM,全稱是Java Business Process Management,是一種基于J2EE的輕量級工作流管理系統(tǒng)。
??? ???jBPM的一個特色是采用了它自己定義的JBoss jBPM Process definition language (jPdl)。jPdl認為一個商務流程可以被看作是一個UML狀態(tài)圖。jPdl就是詳細定義了這個狀態(tài)圖的每個部分,如起始、結束狀態(tài),狀態(tài)之間的轉換等。
?? ??? jBPM的另一個特色是它使用Hibernate來管理它的數(shù)據庫。Hibernate是目前Java領域最好的一種數(shù)據持久層解決方案。通過Hibernate,jBPM將數(shù)據的管理職能分離出去,自己專注于商務邏輯的處理。
?? 17.2JBPM工作流的應用分析
?????? 17.2.1jbpm工作流步驟:
?????? 1、加載(發(fā)布)流程定義
?????? 這個意思是,我們通過jbpm的designer插件,或者是用其他工具,制定出processDefinition
,然后將其加載到應用中的過程。這個加載可以是寫入內存中,或者是直接寫入數(shù)據庫等。
?????? 2、啟動流程
?????? 創(chuàng)建流程實例的過程。具體創(chuàng)建實例的方法有多種,可根據自己的需要自行選擇。
?????? 3、處理任務
?????? 在流程流轉的過程中,JBPM引擎會為我們生成任務的實例,我們就需要針對這些任務實例來進行處理,然后結束這些任務實例,并推動流程的流轉。
?????? 4、記錄流程的相關狀態(tài)
?????? 記錄流程狀態(tài)這點包括且不限于以下內容:
?????? 1)流程實例的開啟
?????? 2)任務實例的創(chuàng)建
?????? 3)任務實例的開始執(zhí)行
?????? 4)任務實例的結束
?????? 5)流程實例的結束
?????? 17.2.2使用jBPM的優(yōu)勢
?????? 將業(yè)務流程復雜的系統(tǒng)結構清晰話,提供系統(tǒng)運行時的靈活性
?????? 1、解耦系統(tǒng)業(yè)務流程
?????? 流程獨立,可以使用工具定義和建模,利于跟蹤、監(jiān)控、管理、調度、優(yōu)化和重整
?????? 2、提高系統(tǒng)的靈活性
?????? 系統(tǒng)流程定義生產環(huán)境的修改和調整,用戶和外部工具交互,任務的動態(tài)分派
?????? 17.2.3使用jBPM時的問題
?????? 1、對當前任務的條件查詢
?????? jBPM不提供靈活進行條件查詢的api,如果需要,可以自定義hibernate查詢,從jbpm相應的數(shù)據表中查詢任務數(shù)據。但需要對jBPM機制比較了解,而且有些復雜條件難以用jBPM本身的信息查到。
?????? 2、當前任務的分頁
?????? 在上一問題的基礎上,使用hibernate分頁。
?????? 3、統(tǒng)計各個流程實例的狀態(tài)
?????? 可以通過流程實例,在jbpm系統(tǒng)表中查詢,也可以在業(yè)務表的相應數(shù)據上加上狀態(tài)列來統(tǒng)計。前一個比較麻煩,后一個比較直觀,但不會因使用jBMP而使用工作量減少。
?????? 4、工作流數(shù)據與業(yè)務數(shù)據結合
?????? 一般通過在流程實例中添加相應的一筆數(shù)據的標識作為變量來關聯(lián)。也可以有針對性的擴展jbpm的系統(tǒng)表來實現(xiàn)與業(yè)務的關聯(lián)性。
?????? 5、修改流程后的歷史數(shù)據兼容性問題
?????? Jbpm工作流流程定義有版本的概念,修改流程后要重新發(fā)布,與舊的流程不是一個同一個版本。系統(tǒng)可以區(qū)別開新舊流程來。
?? 17.3結論
?? 1、工作量
?? 初步的結論是:引入工作流技術不會明顯減少系統(tǒng)開發(fā)工作量。相反,在一般情況下,會增加一部分工作量。如果項目流程比較少,而且比較固定,則使用工作流技術會明顯增加開發(fā)工作量。如果項目流程多,而且比較復雜,則使用工作流技術會使項目結構層次更加清晰、更具有擴展性,根據需求有可能要修改和擴展現(xiàn)有開源工作流類庫與數(shù)據庫結構,也會增加額外的工作量。但權衡之下,利大于弊。
??? 2、關于業(yè)務數(shù)據與jBPM本身的數(shù)據
??? 理論上說,如果使用jBPM,可以將所有業(yè)務數(shù)據放到jBPM的context中管理,不再維護業(yè)務數(shù)據表。但這樣的結果是在流程之外的環(huán)境(比如在統(tǒng)計報表中)中無法容易的得到業(yè)務數(shù)據。所以一般會建立業(yè)務數(shù)據表,我不使用工作流時一樣,然后讓jBMP從業(yè)務數(shù)據表中得到業(yè)務數(shù)據,而不在jBPM中保留業(yè)務數(shù)據。因此,使用jBPM后,在業(yè)務數(shù)據方面基本不會減少工作
??? 3、工作流學習成本
??? 工作流本身的概念較復雜,使用jbpm,需要學習其工作流的定義和結構,流程定義工具和語言、了解其數(shù)據結構。與其它工作流產品(如Shark)相比,jBPM對Java開發(fā)人員來說學習較低成本,在做流程復雜的項目時,學習成本可以接受。
??? 4、系統(tǒng)用戶和角色與工作流整合
??? 流程的流轉和任務的分派完成,都是用戶在控制,所以需要將用戶、角色和權限整合到jbpm工作流中。
??? 5、系統(tǒng)業(yè)務的整合和調整
??? 將流程抽取后,原本連續(xù)的業(yè)務處理變成一個個的任務節(jié)點。需要在每個業(yè)務相關處理處添加工作流流程控制、在每個節(jié)點處實現(xiàn)相關的業(yè)務和流程切入點。
??? 6、適用范圍
??? Jbpm工作流適用于:
??1、項目流程比較多,流程復雜的項目。
??? 2、系統(tǒng)運行和維護、升級時,流程可能需要修改、調整和跟蹤、控制的項目。
轉載于:https://www.cnblogs.com/cmzcheng/archive/2011/11/20/2255806.html
總結
以上是生活随笔為你收集整理的jbpm4.4+ssh配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言嵌入式系统编程修炼之六性能优化
- 下一篇: centos service 无法用