1, jbpm是個什麼東東及其它?
自己鼓搗jbpm也有段時間了, 但要想自己滿意地回答這個問題,仍然感到無從下手. 簡單地說, jbpm是jboss的乙個開源專案, 用來實現工作流的. 那工作流又是什麼? 除jbpm外又有哪些實現? 為什麼要用jbpm? 再往下說為什麼要用工作流?工作流這個概念是什麼時候提出的? 它的曆只發展脈絡又是什麼? ....
這一大串問題, 現在不可能在這麼乙個名為"一點簡單介紹"的部落格中做出完整的回答, (以後倒是有可能搜些資料,爭取做個回答). 我覺得這些問題,最終都歸納到"為什麼要用工作流"這個問題上, 不過對於這個本質問題, 我當然也沒什麼能說服自己的想法,搜了下,發現有不少類似的疑問.比較後,發現這篇部落格( /9899217-1234028060)總結的不錯, 對自己的幫助也挺大的. 有興趣的看官可前去看下.
jbpm作為一種工作流的實現, 那廣義地來看, 工作流又都有哪些基本的構成呢? 一般來說, 乙個工作流有如下的三個大構件:
流程定義. 通過這個構件來修改現有的流程或定義新的流程.
流程執行. 把前面定義好地流程在自己的系統中呼叫, 從而執行整個業務邏輯, 也就是讓前面定義的的流程"流"起來.
流程執行監測. 記錄流程執行過程中的相關資料, 以便於效能調優等.
2, 體驗下jbmp及檔案目錄介紹.
這裡先介紹下jbpm解壓的目錄結構, 注意我這裡用的是3.1.4的版本, 現在最新的版本目錄結構上有很大的不同, 為了研究的方便, 我們這裡採用大多專案中用到的這個舊版本, 即3.1.4.
解壓後, jbpm_home目錄下有五個資料夾, 依次是jbpm, jbpm-bpel, jbpm-db, jbpm-designer,jbpm-server. 以後我主要打交道的是jbpm資料夾, 這個資料夾下有可能要常看的文件, jbpm自身的原始碼和自帶例子的原始碼(這是最最常用的, 以後對jbpm的研究還是以debug的方式來跟蹤jbpm執行原始碼的),jbpm執行所依賴的jar包. 第二個資料夾jbpm-bpel沒什麼可說的, 看名字覺得它跟bpel整合相關, 現在先關心這個,跳過. 每三個資料夾jbpm-db, 這個也是我們開始這段時間常看的乙個資料夾, 它下面放的是jbpm部署時往各種常見資料庫裡建表的sql語句, (當時我不知道有這個資料夾, 硬是自己改了hibernate的配置它在把相應的sql語句輸出到檔案中,想想自己走了不少彎路呀). 第四個資料夾jbpm-designer,它下面放著是jbpm對eclipse做的流程定義外掛程式, 後面我們搭建eclipse裡會用到這裡, 到時再說. 最後乙個jbpm-server,它下面放的是jbpm自帶乙個伺服器,我們剛才就是啟動這裡的伺服器對jbpm有了個初步的體驗,當然它還有其它一些功能,如對流程執行的監視, 還有jms等, 不過這些我還沒有接觸過, 以後再補上.
3, 使用jbpm要做些什麼及結合構件圖的一點說明說明.
簡單地說,在專案中使用jbpm一般有這麼些要做的: 按業務邏輯畫出流程圖, 打包部署定義好的流程圖, 在專案中配置jbpm,呼叫jbpm的api完成整個業務邏輯.
這裡結合jbpm的構件圖, 我們看下這些步驟都是jbpm中的"誰"來具體負責的.
先看最左邊的processarchive. 我們用process language(也就是這裡的jdpl)定義業務邏輯, 打包為這裡所說的process archive, 也就是說這個archive裡包含的是業務的流程資訊, 這裡不僅僅指通過eclipse生成的解壓檔案, 還指部署到資料庫後的資訊. 再順著箭頭往左走, 看到definition loader, jbpm通過它把前面部署到資料庫裡的流程資訊載入到jbpm的執行引擎中, 這樣就有了下面的"process definition", 通過這個路徑我們知道這個process definition是流程資訊在記憶體中的表示. 我們再看最右邊的process client, 我是把它理解成jbpm讓我們呼叫的api, 也就是我們專案中寫的**讓流程一步步地執行. 再往右是request handler, 顧名思義, jbpm通過它來接收process client發來的請求,再往下的execution service, jbpm通過它結合前面載入到記憶體的流程定義來真正執行定義好的業務流程. 其餘的兩塊process monitor和log manager, 就是負責前面說的"流程執行監測"任務了. 另外一下state manager,應該是負責引擎執行過程中狀態的變更事宜相關.
至此, 我們對jbpm的輪廓做了個相當簡單的介紹,後續的文章中將結合例項來做詳細的分析.
一點關於GridLayout的介紹
也許鮮有人聽說girdlayout,但它還是存在的。圖中被我用線圈起來的部分,我相信不少人用的方法是乙個縱向的linearlayout,裡面套兩個橫向的linearlayout,然後在裡面放上四個控制項,寬度用weight適配。沒毛病。可是老鐵,你就從來沒有想過減少一下布局的層級嗎?早在androi...
MATLAB簡單的一點配色
g 46 38,29 24,13 各國金牌數 s 29,27,17,26,8 各國銀牌數 b 29,23,19,32,7 各國銅牌數 h bar 1 5,g s b x標籤1,2 3,4 5,轉置成列向量,完成直方圖 1.注意 轉置成列,即一組在一起5 列 條直方圖,一共三組 行 2.注意 三組每一...
介紹通用Hook的一點思想
ifdef cplusplus extern c char orgcode 5 char outbuf 128 16 int count 0 ulong orgcr0 ifdef cplusplus endif void disablewriteprotect pulong poldattr pol...