(四)Activiti之流程定義部署之ZIP方式和流程定義查詢


一、流程定義部署之ZIP方式

  • 上一章節我們使用classpath的方式加載流程定義文件,這里我們使用ZIP的方式。

  1.1 用activiti插件生成bpmn和png圖片之后,壓縮到一個zip格式的壓縮包中。

  1.2  代碼中加載

package com.shyroke.activiti.firstActiviti;

import static org.junit.Assert.*;

import java.io.InputStream;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class ProcessDefineTest {

    /**
     * 獲取默認流程引擎實例,會自動讀取activiti.cfg.xml文件
     */
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    
    /**
     * 部署流程定義使用zip方式
     */
    @Test
    public void test_deployWithZip() {
        InputStream in=this.getClass().getClassLoader().getSystemResourceAsStream("diagrams/HelloWorld.zip");
        ZipInputStream zipInputStream=new ZipInputStream(in);
        
        Deployment deployment=processEngine.getRepositoryService()
        .createDeployment().addZipInputStream(zipInputStream)
        .name("HelloWorld流程2")
        .deploy();
        
        System.out.println("流程部署ID:"+deployment.getId()); 
        System.out.println("流程部署Name:"+deployment.getName());
        
    }

}
  • 執行測試用例並查看結果

  • act_re_deployment 流程定義部署表新增一條記錄

  • act_re_procdef 流程定義表中VERSION_字段 版本升級了,KEY依然是一樣的;

 

  • act_ge_bytearry 資源文件表,多了兩條記錄

 

  • 這里再提一個表 act_ge_property 屬性表,這里的next_dbid是主鍵策略,就是規定好了下一次生成的id就是10001;

 

 二、流程定義查詢

  2.1  查詢流程定義 返回流程定義集合 對應表 act_re_procdef

package com.shyroke.activiti.firstActiviti;

import static org.junit.Assert.*;

import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class ProcessDefineTest2 {

    /**
     * 獲取默認流程引擎實例,會自動讀取activiti.cfg.xml文件
     */
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    /**
     * 查詢流程定義 返回流程定義集合 對應表 act_re_procdef
     */
    @Test
    public void test_list() {
        List<ProcessDefinition> pdList=processEngine.getRepositoryService().createProcessDefinitionQuery()
        .processDefinitionKey("myFirstProcess")
        .list();
        
        for(ProcessDefinition pd:pdList){
            System.out.println("ID_"+pd.getId());
            System.out.println("NAME_"+pd.getName());
            System.out.println("KEY_"+pd.getKey());
            System.out.println("VERSION_"+pd.getVersion());
            System.out.println("=========");
        }
    }

}
  • 結果

 

   2.2   通過ID查詢某個流程定義

 

package com.shyroke.activiti.firstActiviti;

import static org.junit.Assert.*;

import java.io.InputStream;
import java.util.List;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class ProcessDefineTest2 {

    /**
     * 獲取默認流程引擎實例,會自動讀取activiti.cfg.xml文件
     */
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
     * 通過ID查詢某個流程定義
     */
    @Test
    public void getById(){
        String processDefinitionId="myFirstProcess:2:7504";
        ProcessDefinition pd=processEngine.getRepositoryService() // 獲取service
            .createProcessDefinitionQuery() // 創建流程定義查詢
            .processDefinitionId(processDefinitionId) // 通過id查詢
            .singleResult();
        
        System.out.println("ID_"+pd.getId());
        System.out.println("NAME_"+pd.getName());
        System.out.println("KEY_"+pd.getKey());
        System.out.println("VERSION_"+pd.getVersion());
            
    }
}
  • 結果:

 


免責聲明!

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



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