一、流程定義部署之ZIP方式
- 上一章節(jié)我們使用classpath的方式加載流程定義文件,這里我們使用ZIP的方式。
1.1 用activiti插件生成bpmn和png圖片之后,壓縮到一個(gè)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 { /** * 獲取默認(rèn)流程引擎實(shí)例,會(huì)自動(dòng)讀取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()); } }
-
執(zhí)行測(cè)試用例并查看結(jié)果
- act_re_deployment 流程定義部署表新增一條記錄
- act_re_procdef 流程定義表中VERSION_字段 版本升級(jí)了,KEY依然是一樣的;
?
- act_ge_bytearry 資源文件表,多了兩條記錄
?
- 這里再提一個(gè)表?act_ge_property 屬性表,這里的next_dbid是主鍵策略,就是規(guī)定好了下一次生成的id就是10001;
?
?二、流程定義查詢
2.1 查詢流程定義 返回流程定義集合 對(duì)應(yīng)表 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 { /** * 獲取默認(rèn)流程引擎實(shí)例,會(huì)自動(dòng)讀取activiti.cfg.xml文件 */ private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /** * 查詢流程定義 返回流程定義集合 對(duì)應(yīng)表 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("========="); } } }
- 結(jié)果
?
? 2.2 ?通過(guò)ID查詢某個(gè)流程定義
?
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 { /** * 獲取默認(rèn)流程引擎實(shí)例,會(huì)自動(dòng)讀取activiti.cfg.xml文件 */ private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /** * 通過(guò)ID查詢某個(gè)流程定義 */ @Test public void getById(){ String processDefinitionId="myFirstProcess:2:7504"; ProcessDefinition pd=processEngine.getRepositoryService() // 獲取service .createProcessDefinitionQuery() // 創(chuàng)建流程定義查詢 .processDefinitionId(processDefinitionId) // 通過(guò)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()); } }
- 結(jié)果:
?