Jbpm4.4 使用




最近工作項目中需要用到工作流。於是找到了jbpm。關於jbpm的一些概念就不說了


1) 首先下載jbpm,這里我選擇了jbpm4.4 從官網上可以下載  http://sourceforge.net/projects/jbpm/files/

下載完了之后,打開文件目錄


doc: 文檔說明

example:項目例子

install:安裝的所需 ,  如eclipse插件,數據庫腳本

lib:依賴包

src:源碼


2) 下載完了,開始吧 jbpm插件安裝到eclipse中

Help-install new Software



3) 插件安裝好了, 開始配置jbpm數據庫  , 我用的sqlserver,數據庫JBPMTEST 。

4) 數據庫建好。新建一個java項目,導入jbpm 目錄下lib的jar包以及 jbpm.jar到自己的項目環境中

5) 然后copy  jbpm目錄下jbpm-4.4\examples\src 下的


導入到自己項目中的src下

6) 最后修改一下  jbpm.hibernate.cfg.xml 這個配置文件,修改下數據庫配置信息,這里需要注意一個屬性

<property name="hibernate.hbm2ddl.auto">create-drop</property>

值為create-drop 會自動把數據庫原先jbpm表刪掉再新建


至此 ,jbpm配置也算搞定了 。下面開始寫代碼進行test吧


項目結構



建一個 test 的  jpdl 流程定義文件   ,JBPMTEST為程序入口進行測試

發布流程,



    
    
    
            
  1. ProcessEngine engine;  
  2.     public JBPMTEST() {  
  3.         engine=new Configuration().getProcessEngine();  
  4.     }  
  5.      public void setUp(){    
  6.          engine.getRepositoryService().createDeployment()    
  7.             .addResourceFromClasspath("com/aoy/resource/jbpm/test.jpdl.xml").deploy();    
  8.      }  
  9.        

查詢已發布的流程


    
    
    
            
  1. public void pdList(){  
  2.  List<ProcessDefinition> definitions = engine.getRepositoryService().createProcessDefinitionQuery().list();  
  3.  for (int i = 0; i < definitions.size(); i++) {  
  4.      System.out.println(definitions.get(i).getDeploymentId());  
  5.      System.out.println(definitions.get(i).getDescription());  
  6.      System.out.println(definitions.get(i).getId());  
  7.      System.out.println(definitions.get(i).getName());  
  8. }  
  9. }  



啟動流程實例


    
    
    
            
  1. public void testStartProcessInstance(){  
  2.            Map instanceVariables = new HashMap();  
  3.            instanceVariables.put("leaver", "小明"); //請假者  
  4.            instanceVariables.put("leaveDays", 7); //請假天數  
  5.            instanceVariables.put("reason", "老婆生孩子"); //請假事項/原因  
  6.            //啟動流程實例  
  7.            ProcessInstance processInstance
  8. =engine.getExecutionService().startProcessInstanceByKey("test", instanceVariables);  
  9.            System.out.println("流程實例"+processInstance.getId()+"創建!");  
  10.            System.out.println(processInstance.getKey());  
  11.            System.out.println(processInstance.getName());  
  12.            System.out.println(processInstance.getProcessDefinitionId());  
  13.            System.out.println(processInstance.getState());  
  14.            System.out.println(processInstance.getPriority());  
  15.   
  16.         }  
  17.        


查詢已經啟動的流程實例


    
    
    
            
  1. public void piList(){  
  2.      List<ProcessInstance> pis=engine.getExecutionService().createProcessInstanceQuery().list();    
  3.       for (ProcessInstance processInstance : pis) {    
  4. //        System.out.println(processInstance.getIsProcessInstance());    
  5.         System.out.println(processInstance.getId());  
  6.         System.out.println(processInstance.getExecutionsMap());  
  7.     }    
  8.        




mark 一下  初步了解 ,待續。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM