2、Activiti 流程定義操作 ProcessDefinition

public class ProcessDefinitionTest
{
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

/**
* 部署流程定義
*
*/
@Test
public void deployProcessDefintion_classPath()
{
Deployment deployment = processEngine.getRepositoryService() // 與流程定義和部署相關的service
.createDeployment() // 創建一個部署對象
.name("第一個流程")
.addClasspathResource("diagrams/hello.bpmn") // 從classPath中加載資源一次只能加載一個文件
.addClasspathResource("diagrams/hello.png") // 從classPath中加載資源一次只能加載一個文件
.deploy(); // 完成部署
System.out.println("部署ID" + deployment.getId()); // 1
System.out.println("部署名稱" + deployment.getName()); // 第一個流程
}

/**
* 部署流程定義
*
*/
@Test
public void deployProcessDefintion_zip()
{
InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/hello.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);
Deployment deployment = processEngine.getRepositoryService() // 與流程定義和部署相關的service
.createDeployment() // 創建一個部署對象
.name("第一個流程")
.addZipInputStream(zipInputStream) // 使用zip輸入流完成部署
.deploy(); // 完成部署
System.out.println("部署ID" + deployment.getId()); // 1
System.out.println("部署名稱" + deployment.getName()); // 第一個流程
}

/**
* 查詢流程定義
*
*/
@Test
public void queryProcessDefinition()
{
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()//創建一個流程定義查詢
/**查詢條件**/
// .deploymentId(deploymentId)//部署對象id查詢
// .processDefinitionId(processDefinitionId)// 流程定義id查詢
// .processDefinitionKey(processDefinitionKey)// 流程定義key查詢
// .processDefinitionNameLike(processDefinitionNameLike) // 流程名稱模糊查詢
/**排序***/
// .orderByProcessDefinitionVersion().desc()
.orderByProcessDefinitionName().asc()
/**返回結果集**/
.list(); //返回一個集合
// .singleResult() // 返回唯一結果集
// .count() // 返回結果集數量
// .listPage(firstResult, maxResults) // 分頁查詢
if (list != null && !list.isEmpty())
{
for (ProcessDefinition processDefinition : list)
{
System.out.println(processDefinition.getId());
System.out.println(processDefinition.getDeploymentId());
System.out.println(processDefinition.getKey());//對應bpmn文件中的id
System.out.println(processDefinition.getName());//對應bpmn文件中的name
System.out.println(processDefinition.getResourceName());
System.out.println(processDefinition.getDiagramResourceName());
System.out.println(processDefinition.getVersion());
System.out.println(processDefinition.getTenantId());
System.out.println("---------------------------------");
}
}
}

/**
* 刪除流程定義
*
*/
@Test
public void deleteProcessDefinition()
{
String deploymentId = "1";
processEngine.getRepositoryService()
// 如果已啓動流程報異常
// .deleteDeployment(deploymentId); //使用部署id刪除
// 級聯刪除,刪除已經啓動的流程
.deleteDeployment(deploymentId, true);
System.out.println("刪除成功:" + deploymentId);
}

/**
* 獲取圖片
*
* @throws IOException
*/
@Test
public void viewImage() throws IOException
{
String deploymentId = "15001";
String imageName = "";
List<String> deploymentResourceNames = processEngine.getRepositoryService()
.getDeploymentResourceNames(deploymentId);

for (String name : deploymentResourceNames)
{
if (name.endsWith(".png"))
{
imageName = name;
break;
}
}

InputStream in = processEngine.getRepositoryService()
.getResourceAsStream(deploymentId, imageName);

File file = new File("D:\\" + imageName);
FileUtils.copyInputStreamToFile(in, file);
}

/**
* 查詢所有最新版本流程定義
*/
@Test
public void queryAllLastVersions()
{
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.orderByProcessDefinitionVersion().asc()
.list();

Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();

for (ProcessDefinition processDefinition : list)
{
map.put(processDefinition.getKey(), processDefinition);
}

for (ProcessDefinition processDefinition : map.values())
{
System.out.println(processDefinition.getId());
System.out.println(processDefinition.getDeploymentId());
System.out.println(processDefinition.getKey());//對應bpmn文件中的id
System.out.println(processDefinition.getName());//對應bpmn文件中的name
System.out.println(processDefinition.getResourceName());
System.out.println(processDefinition.getDiagramResourceName());
System.out.println(processDefinition.getVersion());
System.out.println(processDefinition.getTenantId());
System.out.println("---------------------------------");
}
}

/**
* 根據key刪除所有版本流程定義
*
*/
@Test
public void deleteProcessDefinitionByKey()
{
String processDefinitionKey = "hello";
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.list();

for (ProcessDefinition processDefinition : list)
{
processEngine.getRepositoryService()
.deleteDeployment(processDefinition.getDeploymentId(), true);

System.out.println("刪除" + processDefinition.getDeploymentId());
}

System.out.println("刪除成功");
}
}


Deployment   部署對象
1、一次部署的多個文件的信息。對於不需要的流程可以刪除和修改。
2、對應的表:
  act_re_deployment:部署對象表
  act_re_procdef:流程定義表
  act_ge_bytearray:資源文件表
  act_ge_property:主鍵生成策略表
 
ProcessDefinition 流程定義
1、解析.bpmn後得到的流程定義規則的信息,工作流系統就是按照流程定義的規則執行的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章