1. 程式人生 > >activiti 流程定義部署及查詢

activiti 流程定義部署及查詢

package com.mycom.processDefinition;

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.Test; public class ProcessDefinitionTest { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	
    @Autowired
    private RepositoryService repositoryService;
/**
     * 根據modelId部署模型
     * @param modelId
     * @param response
     * @param request
     * @return
     */
    @RequestMapping("/deploy")
    @ResponseBody
    public Map deploy(final String modelId, HttpServletResponse response,final HttpServletRequest request) {
        OperateTemplete templete = new HttpTemplete(request) {
            protected void doSomething() throws BizException {
                JSONObject result = new JSONObject();
                try {
                    Model modelData = repositoryService.getModel(modelId);
                    ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
                    byte[] bpmnBytes = null;
                    BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
                    bpmnBytes = new BpmnXMLConverter().convertToXML(model);
                    String processName = modelData.getName() + ".bpmn20.xml";
                    DeploymentBuilder db = repositoryService.createDeployment().name(modelData.getName());
                    Deployment deployment = db.addString(processName, new String(bpmnBytes,"utf-8")).deploy();
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new BizException("部署失敗");
                }
            }
        };
        return templete.operate();
    }

 
    
    /*
     *部署流程定義 (從classpath)
     */
    @Test
    public void deploymentProcessDefinition_classpath(){
        Deployment deployment = processEngine.getRepositoryService()//與流程定義和部署物件相關的Service
                        .createDeployment()//建立一個部署物件
                        .name("流程定義")//新增部署名稱
.addClasspathResource("diagrams/HelloWorld.bpmn")//從classpath的資源中載入,一次只能載入一個檔案 .addClasspathResource("diagrams/HelloWorld.png") .deploy();//完成部署 System.out.println("部署ID:"+deployment.getId()); System.out.println("部署名稱:"+deployment.getName()); } /* *部署流程定義 (從zip) */ @Test public void deploymentProcessDefinition_zip(){ InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/HelloWorld.zip"); ZipInputStream zipInputStream = new ZipInputStream(in); Deployment deployment = processEngine.getRepositoryService()//與流程定義和部署物件相關的Service .createDeployment()//建立一個部署物件 .name("流程定義")//新增部署名稱 .addZipInputStream(zipInputStream)//完成zip檔案的部署 .deploy();//完成部署 System.out.println("部署ID:"+deployment.getId()); System.out.println("部署名稱:"+deployment.getName()); } /* * 查詢流程定義 */ @Test public void findProcessDefinition(){ List<ProcessDefinition> list = processEngine.getRepositoryService()//與流程定義和部署物件相關的Service .createProcessDefinitionQuery()//建立一個流程定義查詢 /*指定查詢條件,where條件*/ //.deploymentId(deploymentId)//使用部署物件ID查詢 //.processDefinitionId(processDefinitionId)//使用流程定義ID查詢 //.processDefinitionKey(processDefinitionKey)//使用流程定義的KEY查詢 //.processDefinitionNameLike(processDefinitionNameLike)//使用流程定義的名稱模糊查詢 /*排序*/ .orderByProcessDefinitionVersion().asc()//按照版本的升序排列 //.orderByProcessDefinitionName().desc()//按照流程定義的名稱降序排列 .list();//返回一個集合列表,封裝流程定義 //.singleResult();//返回唯一結果集 //.count();//返回結果集數量 //.listPage(firstResult, maxResults)//分頁查詢 if(list != null && list.size()>0){ for(ProcessDefinition processDefinition:list){ System.out.println("流程定義ID:"+processDefinition.getId());//流程定義的key+版本+隨機生成數 System.out.println("流程定義名稱:"+processDefinition.getName());//對應HelloWorld.bpmn檔案中的name屬性值 System.out.println("流程定義的key:"+processDefinition.getKey());//對應HelloWorld.bpmn檔案中的id屬性值 System.out.println("流程定義的版本:"+processDefinition.getVersion());//當流程定義的key值相同的情況下,版本升級,預設從1開始 System.out.println("資源名稱bpmn檔案:"+processDefinition.getResourceName()); System.out.println("資源名稱png檔案:"+processDefinition.getDiagramResourceName()); System.out.println("部署物件ID:"+processDefinition.getDeploymentId()); System.out.println("################################"); } } } }

相關的表:
 
 
select * from act_re_model;#模型表
 
 

 

SELECT * FROM activiti.act_re_deployment a; #部署物件表

 SELECT * FROM activiti.act_re_procdef a; #流程定義表

 SELECT * FROM activiti.act_ge_bytearray a;# 資原始檔表

 

SELECT * FROM activiti.act_ge_property a; #主鍵生成策略表