【正文】
pm{version}.jar string name= value=org/jbpm/calendar/ / string name= value=org/jbpm/graph/def/ / string name= value=org/jbpm/db/hibernate/ / string name= value=org/jbpm/graph/action/ / string name= value=org/jbpm/graph/node/ / string name= value=org/jbpm/jpdl/par/ / string name= value=org/jbpm/context/exe/ / long name= value=5000 singleton=true / int name= value=1024 singleton=true / string name= value=localhost / bean name= class= singleton=true / bean name= class= singleton=true / !bean name= class= singleton=true //jbpmconfiguration 流程定義發(fā)布 意圖通過servlet方式發(fā)布流程定義文件,并通過配置文件參數(shù)靈活控制重新發(fā)布或更新已有的流程文件。 動機(jī)隨著業(yè)務(wù)流程的變化,流程定義文件也需要變更進(jìn)行重新發(fā)布,需要一種靈活的發(fā)布方式。即要避免每次啟動服務(wù)器都重新發(fā)布,也要避免發(fā)布后,不能再次更新的問題。一個更好的辦法就是可以通過一個serlet進(jìn)行控制是否進(jìn)行發(fā)布。 適用性當(dāng)流程定義沒有變化時,當(dāng)啟動servlet容器時,不必重復(fù)部署。 效果靈活控制發(fā)布方式,避免重復(fù)發(fā)布。 實現(xiàn) l JbpmDeployServlet:獲得要發(fā)布的文件、部署方式。 l JbpmDefinitionService:根據(jù)部署方式,獲得流程實例ProcessDefinition l JbpmContext:完成實際部署。 面向接口的設(shè)計 意圖設(shè)計獨(dú)立于具體組件內(nèi)部邏輯的接口,降低業(yè)務(wù)程序與具體組件的耦合性,支持變化,可以根據(jù)需要增加對新組件的使用。 動機(jī)jbpm組件內(nèi)部相關(guān)的類可能隨著版本不同而變化?;蛘呓窈笙氩捎闷渌ぷ髁鹘M件。設(shè)計獨(dú)立于實現(xiàn)的接口提供了一直的規(guī)約,屏蔽變化。 適用性使用第三方組件。 結(jié)構(gòu)適配器模式。 實現(xiàn)在jPDL中,對流程的建模被劃分為兩大部分,一是針對“流程定義”的靜態(tài)模型部分;二是針對具體“流程實例”的運(yùn)行時動態(tài)模型。靜態(tài)的流程定義模型:流程定義實體(Process Definition)、流程結(jié)點(Node)、流程轉(zhuǎn)向(Transitions)、動作(Actions)、事件(Events)、任務(wù)(Task)。具體化的流程實例模型(運(yùn)行時動態(tài)模型):流程實例(Process Instance)、令牌(Token)、任務(wù)實例(Task Instance)可以根據(jù)功能范圍的不同,可以封裝不同的接口和實現(xiàn)不同實現(xiàn)類。對于流程文件的操作、對流程的操作,可以分為兩大類接口。 接口模型 參數(shù)約定為了使得業(yè)務(wù)程序和工作流組件之間信息交互,這些參數(shù)包括: l 業(yè)務(wù)流程標(biāo)識。 n 對于受理系統(tǒng)、工單系統(tǒng)等,可以成為:工單標(biāo)識 n 可以該標(biāo)識通過工作流ContextInstance對象中保存到:jbpm_variableinstance表中。 n 它是關(guān)聯(lián)業(yè)務(wù)信息和工作流信息的之間唯一標(biāo)識。當(dāng)啟動一個工作流時,業(yè)務(wù)程序產(chǎn)生一個唯一的值,并需要把該值傳遞給工作流組件。 n 業(yè)務(wù)流程標(biāo)識、流程實例標(biāo)識是一一對應(yīng),可以通過業(yè)務(wù)流程標(biāo)識進(jìn)行查詢流程實例標(biāo)識。 l 用戶標(biāo)識 n 應(yīng)用于:創(chuàng)建、取消/結(jié)束任務(wù)、任務(wù)回退等操作時 l 任務(wù)標(biāo)識 n 應(yīng)用于:取消/結(jié)束任務(wù)等 l 任務(wù)名稱 n 工作流每一個節(jié)點一個名稱,業(yè)務(wù)程序處理到每一個業(yè)務(wù)環(huán)節(jié),都有個環(huán)節(jié)狀態(tài)名稱,為了便于數(shù)據(jù)交互,可以把:工單環(huán)節(jié)狀態(tài)名稱和工作流每一個任務(wù)節(jié)點名稱,命名為一致的?;蚍Q為:業(yè)務(wù)處理環(huán)節(jié)名稱、業(yè)務(wù)狀態(tài)名稱、工單狀態(tài)等 l 流程轉(zhuǎn)向名稱 n 從一個節(jié)點轉(zhuǎn)移到另外一個節(jié)點。 n 應(yīng)用于:創(chuàng)建流程、完成任務(wù)、回退任務(wù)。 參數(shù)命名約定 l 命名方式 n 簡潔、合乎規(guī)范、如果是英文名稱,采用通用縮寫,或英文全稱。 l 節(jié)點名稱 n 名詞+動詞 l 轉(zhuǎn)移路徑名稱 n 動詞+名詞 參數(shù)處理方式 l 業(yè)務(wù)流程具體環(huán)節(jié)名稱(工單狀態(tài)名稱) n 完成一項工作,通常需要不同的環(huán)節(jié)才能完成。每一個環(huán)節(jié)可以與工作流中的某個節(jié)點對應(yīng)。 n 通常它將在頁面或流程圖中展示。 n 定義在常量類中,并提供幫助方法。 n 建議該名稱與工作流流程定義圖中的任務(wù)節(jié)點名稱采用一樣。不需要額外的轉(zhuǎn)換,降低溝通成本。 l 工作流流程名稱 n 根據(jù)工作流程的不同,通過采用不同的工作流程,不同的流程有不同環(huán)節(jié)。 n 一個流程的名稱通常是穩(wěn)定的??梢詫Σ煌牧鞒堂Q,定義在常量類中。方便在頁面展示,數(shù)據(jù)存儲。 n 建議該名稱與工作流中流程定義文件名稱采用一樣。不需要額外的轉(zhuǎn)換,降低溝通成本。 操作流程文件接口 l 使用流程存檔文件,部署新的流程定義。 n Param:歸檔文件名 l 使用流程存檔文件,創(chuàng)建一個新版本的流程定義。 n Param:歸檔文件名 l 部署新的流程定義 n Param:普通文件名 l 創(chuàng)建一個新版本的流程定義 n Param:普通文件名 l 根據(jù)流程名稱獲取流程定義 n Param:流程名稱 n Return:流程定義對象 l 根據(jù)流程標(biāo)識獲取流程定義 n Param:流程標(biāo)識 n Return:流程定義對象 操作流程接口 l 創(chuàng)建流程實例,并創(chuàng)建和啟動流程的開始任務(wù)實例。 n Param:流程名稱、業(yè)務(wù)流程id、創(chuàng)建人 n Return: 開始任務(wù)實例id l 刪除流程實例 n Param:業(yè)務(wù)流程id l 查詢流程實例當(dāng)前所處節(jié)點 n Param:業(yè)務(wù)流程id n Return: 任務(wù)節(jié)點名稱 l 判斷流程實例是否完成 n Param:業(yè)務(wù)流程id n Return: true/ false l 完成某個任務(wù)實例,并轉(zhuǎn)移到流程的缺省節(jié)點 n Param:用戶標(biāo)識、任務(wù)實例id n Return: 流程實例當(dāng)前節(jié)點名稱 l 完成某個任務(wù)實例,并轉(zhuǎn)移到指定的節(jié)點。 n Param:用戶標(biāo)識、任務(wù)實例id、任務(wù)完成后的轉(zhuǎn)移名 n Return: 流程實例當(dāng)前節(jié)點名稱 l 完成任務(wù)實例,取消該任務(wù)實例對應(yīng)的未完成的兄弟任務(wù)實例 n Param:用戶標(biāo)識、任務(wù)實例id、任務(wù)完成后的轉(zhuǎn)移名 n Return: 流程實例當(dāng)前節(jié)點名稱。 l 任務(wù)實例是否完成 n Param:任務(wù)實例id n Return: true/ false l 獲取任務(wù)實例的轉(zhuǎn)移路徑 n Param:任務(wù)實例id 、是否包含缺省轉(zhuǎn)移路徑,true:包含;false:不包含。 n Return: true/ false l 查詢流程實例的根令牌標(biāo)識 n 業(yè)務(wù)流程id n Return: 根令牌標(biāo)識 l 關(guān)閉工作流服務(wù) 用戶管理 The assignment data modelThe datamodel for managing assignments of task instances and swimlane instances to actors is the following. Each TaskInstance has an actorId and a set of pooled actors. Figure . The assignment model class diagramThe actorId is the responsible for the task, while the set of pooled actors represents a collection of candidates that can bee responsible if they would take the task. Both actorId and pooledActors are optional and can also be bined. 意圖系統(tǒng)的用戶根據(jù)業(yè)務(wù)發(fā)展可以動態(tài)的變化,但是系統(tǒng)角色是相對穩(wěn)定的,對于流程定義文件,在swimlane中,assignmen中的pooledactors屬性,可以配置為業(yè)務(wù)系統(tǒng)中的角色標(biāo)識,一個角色它本身代表一類用戶,不需配置為具體的用戶標(biāo)識。當(dāng)用戶登錄系統(tǒng),如果查看自己工作(或待處理的任務(wù)、待處理的工單) 動機(jī)如果沒有使用jBPM組件的認(rèn)證模塊,而是采用自己系統(tǒng)的權(quán)限管理,當(dāng)用戶的增加、減少時,每次都需要修改流程定義文件,在assignmen中的pooledactors中增加用戶標(biāo)識。每次修改都需要重新發(fā)布。維護(hù)成本很高。 適用性系統(tǒng)具有自己權(quán)限管理。包括:用戶管理、角色管理。 結(jié)構(gòu) 協(xié)作 l 參與者可以查詢自己曾經(jīng)受理過的工單。 l 參與者可以查看自己對應(yīng)角色的未處理的工單。 效果角色標(biāo)識是相對穩(wěn)定的,因此靈活控制發(fā)布方式,避免重復(fù)發(fā)布。 實現(xiàn)準(zhǔn)備: l 業(yè)務(wù)系統(tǒng):定義用戶角色標(biāo)識。例如:兩個角色:1:教師 2:校長。用戶標(biāo)識:user001該用戶有兩個角色。 l 工作流組件:配置用戶角色標(biāo)識。實例:swimlane name=授課員 // 授課員泳道 assignment pooledactors=1,2/ // 分配兩個角色 /swimlane實現(xiàn)方式: 1. 根據(jù)登錄用戶user001,獲得用戶角色列表2。 2. 根據(jù)用戶角色列表,查詢相關(guān)表或視圖,查出“授課員”所有對應(yīng)的角色的工單。 信息查詢 意圖把業(yè)務(wù)系統(tǒng)產(chǎn)生的業(yè)務(wù)流程標(biāo)識,保存到工作流組件表中,作為業(yè)務(wù)系統(tǒng)和工作流組件之間信息交互的紐帶。可以在業(yè)務(wù)系統(tǒng)和工作流系統(tǒng)中相關(guān)的表中中字段創(chuàng)建視圖,方便查詢。 動機(jī) l 查詢某個用戶的代辦工單(記錄),包括:曾經(jīng)處理過的工單(但是流程沒有結(jié)束,比如:回退的工單)、將要處理的工單。信息包括:業(yè)務(wù)流程標(biāo)識、流程實例標(biāo)識、任務(wù)節(jié)點標(biāo)識、節(jié)點名稱等信息。 l 根據(jù)用戶標(biāo)識、任務(wù)標(biāo)識、流程轉(zhuǎn)向等字段,對任務(wù)實例進(jìn)行完成、取消等操作。 適用性查詢待處理或曾經(jīng)處理的工單記錄,同時查詢工作流組件表中的任務(wù)標(biāo)識、任務(wù)名稱等。 結(jié)構(gòu) 協(xié)作業(yè)務(wù)系統(tǒng)某個用戶,可以根據(jù)業(yè)務(wù)流程標(biāo)識查詢到流程實例標(biāo)識、任務(wù)標(biāo)識等信息。 效果通過業(yè)務(wù)流程標(biāo)識,可以方便查詢工作流相關(guān)信息。以便精確的控制工作流的流程轉(zhuǎn)向、圖形展示等。 實現(xiàn) l 建立一個任務(wù)視圖。 n 記錄包括:該用戶待分配的記錄、曾經(jīng)受理過但打回工單(流程沒有結(jié)束的記錄)。 n 關(guān)聯(lián)表包括:待分配任務(wù)的角色表、任務(wù)實例用戶表、任務(wù)實例表。 n 字段包括:業(yè)務(wù)流程標(biāo)識、流程實例標(biāo)識、任務(wù)實例標(biāo)識、任務(wù)實例名稱、創(chuàng)建時間、結(jié)束時間、用戶標(biāo)識、。 流程圖設(shè)計 意圖提供一個圖形化查詢某個業(yè)務(wù)流程流轉(zhuǎn)情況,并通過特殊的顏色醒目所在的位置。 動機(jī)如果僅展示業(yè)務(wù)流程所處的文字名稱,不能更好獲得上下文信息,還得需要查詢其他圖片或幫助手冊查詢,易操作性差。解決辦法就是,通過一個圖片,該圖片標(biāo)記了各個節(jié)點信息,存儲于數(shù)據(jù)庫中,并且根據(jù)流程定義信息,動態(tài)的修改圖片并進(jìn)行展示。 適用性用戶查詢業(yè)務(wù)流程的上下文信息。 結(jié)構(gòu) 協(xié)作客戶請求展示。 效果 l 圖形化方式展示當(dāng)前業(yè)務(wù)流程環(huán)節(jié)。 l 方便查詢業(yè)務(wù)流程環(huán)節(jié)上下文信息。 實