工作流——各種API實例


1./**部署流程定義*/

    public void deploymentProcessDefinition_classpath(){
        Deployment deployment = processEngine.getRepositoryService()//與流程定義和部署對象相關的Service
                        .createDeployment()//創建一個部署對象
                        .name("流程定義")//添加部署的名稱
                        .addClasspathResource("diagrams/helloworld.bpmn")//從classpath的資源中加載,一次只能加載一個文件
                        .addClasspathResource("diagrams/helloworld.png")//從classpath的資源中加載,一次只能加載一個文件
                        .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());//
    }
java代碼
    select * from ACT_GE_PROPERTY where NAME_ = ? 
    update ACT_GE_PROPERTY SET REV_ = ?, VALUE_ = ? where NAME_ = ? and REV_ = ? 
    select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null))
    select J.* from ACT_RU_JOB J inner join ACT_RE_PROCDEF P on J.PROC_DEF_ID_ = P.ID_ where J.HANDLER_TYPE_ = ? and P.KEY_ = ? and (P.TENANT_ID_ = '' or P.TENANT_ID_ is null) 
    insert into ACT_RE_PROCDEF(ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_, DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, HAS_GRAPHICAL_NOTATION_ , SUSPENSION_STATE_, TENANT_ID_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    insert into ACT_RE_DEPLOYMENT(ID_, NAME_, CATEGORY_, TENANT_ID_, DEPLOY_TIME_) values(?, ?, ?, ?, ?) 
    INSERT ALL INTO ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_) VALUES (?, 1, ?, ?, ?, ?) INTO ACT_GE_BYTEARRAY(ID_, REV_, NAME_, BYTES_, DEPLOYMENT_ID_, GENERATED_) VALUES (?, 1, ?, ?, ?, ?) SELECT * FROM dual 
sql文件

2./**啟動流程實例*/

    @Test
    public void startProcessInstance(){
        //流程定義的key
        String processDefinitionKey = "helloworld";
        ProcessInstance pi = processEngine.getRuntimeService()//與正在執行的流程實例和執行對象相關的Service
                        .startProcessInstanceByKey(processDefinitionKey);//使用流程定義的key啟動流程實例,key對應helloworld.bpmn文件中id的屬性值,使用key值啟動,默認是按照最新版本的流程定義啟動
        System.out.println("流程實例ID:"+pi.getId());//流程實例ID    101
        System.out.println("流程定義ID:"+pi.getProcessDefinitionId());//流程定義ID   helloworld:1:4
    }
java代碼
    select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)) 
    select * from ACT_RE_DEPLOYMENT where ID_ = ? 
    select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc
    select * from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? and KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) 
    select * from ACT_RE_PROCDEF where ID_ = ? 
    select * from ACT_GE_PROPERTY where NAME_ = ? 
    update ACT_GE_PROPERTY SET REV_ = ?, VALUE_ = ? where NAME_ = ? and REV_ = ? 
    select * from ACT_RU_JOB J where J.EXECUTION_ID_ = ? 
    select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
    select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ?
    insert into ACT_HI_TASKINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, OWNER_, ASSIGNEE_, START_TIME_, CLAIM_TIME_, END_TIME_, DURATION_, DELETE_REASON_, TASK_DEF_KEY_, FORM_KEY_, PRIORITY_, DUE_DATE_, CATEGORY_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    insert into ACT_HI_PROCINST ( ID_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, START_TIME_, END_TIME_, DURATION_, START_USER_ID_, START_ACT_ID_, END_ACT_ID_, SUPER_PROCESS_INSTANCE_ID_, DELETE_REASON_, TENANT_ID_, NAME_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    INSERT ALL INTO ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) INTO ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) SELECT * FROM dual 
    insert into ACT_HI_IDENTITYLINK (ID_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_) values (?, ?, ?, ?, ?, ?) 
    insert into ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, PARENT_ID_, SUPER_EXEC_, SUSPENSION_STATE_, CACHED_ENT_STATE_, TENANT_ID_, NAME_) values ( ?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
    insert into ACT_RU_TASK (ID_, REV_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, PRIORITY_, CREATE_TIME_, OWNER_, ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_, CATEGORY_, SUSPENSION_STATE_, TENANT_ID_, FORM_KEY_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    insert into ACT_RU_IDENTITYLINK (ID_, REV_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_, PROC_DEF_ID_) values (?, 1, ?, ?, ?, ?, ?, ?)
    
sql文件

3./**查詢當前人的個人任務*/

@Test
    public void findMyPersonalTask(){
        String assignee = "王五";
        List<Task> list = processEngine.getTaskService()//與正在執行的任務管理相關的Service
                        .createTaskQuery()//創建任務查詢對象
                        .taskAssignee(assignee)//指定個人任務查詢,指定辦理人
                        .list();
        if(list!=null && list.size()>0){
            for(Task task:list){
                System.out.println("任務ID:"+task.getId());
                System.out.println("任務名稱:"+task.getName());
                System.out.println("任務的創建時間:"+task.getCreateTime());
                System.out.println("任務的辦理人:"+task.getAssignee());
                System.out.println("流程實例ID:"+task.getProcessInstanceId());
                System.out.println("執行對象ID:"+task.getExecutionId());
                System.out.println("流程定義ID:"+task.getProcessDefinitionId());
                System.out.println("########################################################");
            }
        }
    }
java代碼
select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* from ACT_RU_TASK RES WHERE RES.ASSIGNEE_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    
sql文件

4./**完成個人的任務*/(不是最后一位和最后一位的sql有所區別,為不同的sql)

    @Test
    public void completeMyPersonalTask(){
        //任務ID
        String taskId = "302";
        processEngine.getTaskService()//與正在執行的任務管理相關的Service
                    .complete(taskId);
        System.out.println("完成任務:任務ID:"+taskId);
    }
java代碼
    select * from ACT_RU_TASK where ID_ = ?
    select * from ACT_RE_PROCDEF where ID_ = ?
    select * from ACT_RE_DEPLOYMENT where ID_ = ? 
    select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc
    select * from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? and KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)
    select * from ACT_RU_TASK where PARENT_TASK_ID_ = ? 
    select * from ACT_RU_IDENTITYLINK where TASK_ID_ = ?
    select * from ACT_RU_VARIABLE where TASK_ID_ = ? 
    select * from ACT_HI_TASKINST where ID_ = ? 
    select * from ACT_RU_EXECUTION where ID_ = ?
    select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ?
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = ? and RES.ACT_ID_ = ? and RES.END_TIME_ is null order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ACT_GE_PROPERTY where NAME_ = ? 
    update ACT_GE_PROPERTY SET REV_ = ?, VALUE_ = ? where NAME_ = ? and REV_ = ? 
    select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ?
    insert into ACT_HI_TASKINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, OWNER_, ASSIGNEE_, START_TIME_, CLAIM_TIME_, END_TIME_, DURATION_, DELETE_REASON_, TASK_DEF_KEY_, FORM_KEY_, PRIORITY_, DUE_DATE_, CATEGORY_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
    insert into ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
    insert into ACT_HI_IDENTITYLINK (ID_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_) values (?, ?, ?, ?, ?, ?) 
    insert into ACT_RU_TASK (ID_, REV_, NAME_, PARENT_TASK_ID_, DESCRIPTION_, PRIORITY_, CREATE_TIME_, OWNER_, ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_, CATEGORY_, SUSPENSION_STATE_, TENANT_ID_, FORM_KEY_) values (?, 1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
    insert into ACT_RU_IDENTITYLINK (ID_, REV_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_, PROC_INST_ID_, PROC_DEF_ID_) values (?, 1, ?, ?, ?, ?, ?, ?)
    update ACT_HI_ACTINST set EXECUTION_ID_ = ?, ASSIGNEE_ = ?, END_TIME_ = ?, DURATION_ = ? where ID_ = ?
    update ACT_RU_EXECUTION set REV_ = ?, BUSINESS_KEY_ = ?, PROC_DEF_ID_ = ?, ACT_ID_ = ?, IS_ACTIVE_ = ?, IS_CONCURRENT_ = ?, IS_SCOPE_ = ?, IS_EVENT_SCOPE_ = ?, PARENT_ID_ = ?, SUPER_EXEC_ = ?, SUSPENSION_STATE_ = ?, CACHED_ENT_STATE_ = ?, NAME_ = ? where ID_ = ? and REV_ = ? 
    update ACT_HI_TASKINST set EXECUTION_ID_ = ?, NAME_ = ?, PARENT_TASK_ID_ = ?, DESCRIPTION_ = ?, OWNER_ = ?, ASSIGNEE_ = ?, CLAIM_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ?, TASK_DEF_KEY_ = ?, FORM_KEY_ = ?, PRIORITY_ = ?, DUE_DATE_ = ?, CATEGORY_ = ? where ID_ = ? 
    delete from ACT_RU_TASK where ID_ = ? and REV_ = ? 
    
sql文件
select * from ACT_RU_TASK where ID_ = ? 
    select * from ACT_RE_PROCDEF where ID_ = ? 
    select * from ACT_RE_DEPLOYMENT where ID_ = ? 
    select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc
    select * from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? and KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)
    select * from ACT_RU_TASK where PARENT_TASK_ID_ = ? 
    select * from ACT_RU_IDENTITYLINK where TASK_ID_ = ? 
    select * from ACT_RU_VARIABLE where TASK_ID_ = ?
    select * from ACT_HI_TASKINST where ID_ = ? 
    select * from ACT_RU_EXECUTION where ID_ = ? 
    select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = ? and RES.ACT_ID_ = ? and RES.END_TIME_ is null order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ACT_GE_PROPERTY where NAME_ = ? 
    update ACT_GE_PROPERTY SET REV_ = ?, VALUE_ = ? where NAME_ = ? and REV_ = ?
    select * from ACT_HI_PROCINST where PROC_INST_ID_ = ?
    select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null
    select * from ACT_RU_EXECUTION where PARENT_ID_ = ? 
    select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ?
    insert into ACT_HI_ACTINST ( ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ ) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) 
    update ACT_HI_ACTINST set EXECUTION_ID_ = ?, ASSIGNEE_ = ?, END_TIME_ = ?, DURATION_ = ? where ID_ = ?
    update ACT_HI_PROCINST set PROC_DEF_ID_ = ?, BUSINESS_KEY_ = ?, START_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, END_ACT_ID_ = ?, DELETE_REASON_ = ?, NAME_ = ? where ID_ = ? 
    update ACT_HI_TASKINST set EXECUTION_ID_ = ?, NAME_ = ?, PARENT_TASK_ID_ = ?, DESCRIPTION_ = ?, OWNER_ = ?, ASSIGNEE_ = ?, CLAIM_TIME_ = ?, END_TIME_ = ?, DURATION_ = ?, DELETE_REASON_ = ?, TASK_DEF_KEY_ = ?, FORM_KEY_ = ?, PRIORITY_ = ?, DUE_DATE_ = ?, CATEGORY_ = ? where ID_ = ? 
    delete from ACT_RU_TASK where ID_ = ? and REV_ = ?
    delete from ACT_RU_IDENTITYLINK where ID_ = ?  (執行三次,將之前的任務id存在的都刪除)
    delete from ACT_RU_IDENTITYLINK where ID_ = ?
    delete from ACT_RU_IDENTITYLINK where ID_ = ?
    delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ?
sql文件

 

5. /**查詢流程定義*/

    @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 pd:list){
                System.out.println("流程定義ID:"+pd.getId());//流程定義的key+版本+隨機生成數
                System.out.println("流程定義的名稱:"+pd.getName());//對應helloworld.bpmn文件中的name屬性值
                System.out.println("流程定義的key:"+pd.getKey());//對應helloworld.bpmn文件中的id屬性值
                System.out.println("流程定義的版本:"+pd.getVersion());//當流程定義的key值相同的相同下,版本升級,默認1
                System.out.println("資源名稱bpmn文件:"+pd.getResourceName());
                System.out.println("資源名稱png文件:"+pd.getDiagramResourceName());
                System.out.println("部署對象ID:"+pd.getDeploymentId());
                System.out.println("#########################################################");
            }
        }            
    }
View Code
select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES order by RES.VERSION_ asc ) a where ROWNUM < ?) where rnum >= ? 
View Code

 6./**刪除流程定義*/

    @Test
    public void deleteProcessDefinition(){
        //使用部署ID,完成刪除
        String deploymentId = "601";
        /**
         * 不帶級聯的刪除
         *    只能刪除沒有啟動的流程,如果流程啟動,就會拋出異常
         */
//        processEngine.getRepositoryService()//
//                        .deleteDeployment(deploymentId);
        
        /**
         * 級聯刪除
         *       不管流程是否啟動,都能可以刪除
         */
        processEngine.getRepositoryService()//
                        .deleteDeployment(deploymentId, true);
        System.out.println("刪除成功!");
    }
java代碼
a.不帶級聯刪除
    select * from ACT_RE_DEPLOYMENT where ID_ = ?
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* from ACT_RE_MODEL RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ACT_RU_EVENT_SUBSCR WHERE PROC_DEF_ID_ = ? and EXECUTION_ID_ is null and PROC_INST_ID_ is null and (TENANT_ID_ = '' or TENANT_ID_ is null)
    select * from ACT_PROCDEF_INFO where PROC_DEF_ID_ = ? 
    select J.* from ACT_RU_JOB J where J.HANDLER_TYPE_ = ? and J.PROC_DEF_ID_ = ?
    select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null))
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES WHERE RES.KEY_ = ? and RES.VERSION_ < ? and (RES.TENANT_ID_ = '' or RES.TENANT_ID_ is null) order by RES.VERSION_ desc ) a where ROWNUM < ?) where rnum >= ? 
    delete from ACT_RU_IDENTITYLINK where PROC_DEF_ID_ = ? 
    delete from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? 
    delete from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ?
    delete from ACT_RE_DEPLOYMENT where ID_ = ?
    
    b.帶級聯刪除
    select * from ACT_RE_DEPLOYMENT where ID_ = ?
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ?
    select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* from ACT_RE_MODEL RES WHERE RES.DEPLOYMENT_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select ID_ from ACT_RU_EXECUTION where PROC_DEF_ID_ = ? and PARENT_ID_ is null 
    select * from ACT_RU_EXECUTION where ID_ = ? 
    select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* , P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId from ACT_RU_EXECUTION RES inner join ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_ WHERE RES.PARENT_ID_ is null and RES.SUPER_EXEC_ IN (select ID_ from ACT_RU_EXECUTION where PROC_INST_ID_ = ?) order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* from ACT_RU_TASK RES WHERE RES.PROC_INST_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ACT_RE_PROCDEF where ID_ = ? 
    select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc
    select * from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ? and KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)
    select * from ACT_RU_TASK where PARENT_TASK_ID_ = ? 
    select * from ACT_RU_IDENTITYLINK where TASK_ID_ = ? 
    select * from ACT_RU_VARIABLE where TASK_ID_ = ? 
    select * from ACT_HI_TASKINST where ID_ = ? 
    select * from ACT_HI_TASKINST where PARENT_TASK_ID_ = ? 
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_VARINST RES WHERE RES.TASK_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
    select * from ACT_HI_ATTACHMENT where TASK_ID_ = ? order by TIME_ desc
    select * from ACT_HI_IDENTITYLINK where TASK_ID_ = ? 
    select * from ACT_RU_EXECUTION where PARENT_ID_ = ? 
    select * from ACT_RU_EXECUTION where SUPER_EXEC_ = ? 
    select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_ACTINST RES WHERE RES.EXECUTION_ID_ = ? and RES.ACT_ID_ = ? and RES.END_TIME_ is null order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
     select * from ACT_HI_PROCINST where PROC_INST_ID_ = ? 
     select * from ACT_RU_VARIABLE where EXECUTION_ID_ = ? and TASK_ID_ is null
     select distinct T.* from ACT_RU_TASK T where T.EXECUTION_ID_ = ? 
     select * from ACT_RU_IDENTITYLINK where PROC_INST_ID_ = ? 
     select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_DETAIL RES WHERE RES.PROC_INST_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
     select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_HI_VARINST RES WHERE RES.PROC_INST_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ?
     select ID_ from ACT_HI_TASKINST where PROC_INST_ID_ = ?
     select * from ACT_HI_IDENTITYLINK where PROC_INST_ID_ = ? 
     select * from ( select a.*, ROWNUM rnum from ( select distinct RES.* , DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_ from ACT_HI_PROCINST RES left outer join ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_ WHERE RES.SUPER_PROCESS_INSTANCE_ID_ = ? order by RES.ID_ asc ) a where ROWNUM < ?) where rnum >= ? 
     select ID_ from ACT_HI_PROCINST where PROC_DEF_ID_ = ? 
     select * from ACT_RU_EVENT_SUBSCR WHERE PROC_DEF_ID_ = ? and EXECUTION_ID_ is null and PROC_INST_ID_ is null and (TENANT_ID_ = '' or TENANT_ID_ is null)
     select * from ACT_PROCDEF_INFO where PROC_DEF_ID_ = ? 
     select J.* from ACT_RU_JOB J where J.HANDLER_TYPE_ = ? and J.PROC_DEF_ID_ = ?
     select * from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null) and VERSION_ = (select max(VERSION_) from ACT_RE_PROCDEF where KEY_ = ? and (TENANT_ID_ = '' or TENANT_ID_ is null)) 
     select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES WHERE RES.KEY_ = ? and RES.VERSION_ < ? and (RES.TENANT_ID_ = '' or RES.TENANT_ID_ is null) order by RES.VERSION_ desc ) a where ROWNUM < ?) where rnum >= ? 
     update ACT_HI_ACTINST set EXECUTION_ID_ = ?, ASSIGNEE_ = ?, END_TIME_ = ?, DURATION_ = ? where ID_ = ?
     delete from ACT_HI_COMMENT where TASK_ID_ = ?
     delete from ACT_HI_TASKINST where ID_ = ? 
     delete from ACT_RU_TASK where ID_ = ? and REV_ = ?
     delete from ACT_RU_IDENTITYLINK where ID_ = ? 
     delete from ACT_RU_EXECUTION where ID_ = ? and REV_ = ? 
     delete from ACT_HI_ACTINST where PROC_INST_ID_ = ?
     delete from ACT_HI_COMMENT where TASK_ID_ = ?
     delete from ACT_HI_IDENTITYLINK where ID_ = ?
     delete from ACT_HI_COMMENT where PROC_INST_ID_ = ? 
     delete from ACT_HI_PROCINST where PROC_INST_ID_ = ? 
     delete from ACT_HI_ACTINST where PROC_INST_ID_ = ? 
     delete from ACT_HI_COMMENT where TASK_ID_ = ?
     delete from ACT_HI_COMMENT where PROC_INST_ID_ = ?
     delete from ACT_RU_IDENTITYLINK where PROC_DEF_ID_ = ?
     delete from ACT_RE_PROCDEF where DEPLOYMENT_ID_ = ?
      delete from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ?
      delete from ACT_RE_DEPLOYMENT where ID_ = ?
執行的sql文件

7./**查看流程圖*/

@Test
    public void viewPic() throws IOException{
        /**將生成圖片放到文件夾下*/
        String deploymentId = "801";
        //獲取圖片資源名稱
        List<String> list = processEngine.getRepositoryService()//
                        .getDeploymentResourceNames(deploymentId);
        //定義圖片資源的名稱
        String resourceName = "";
        if(list!=null && list.size()>0){
            for(String name:list){
                if(name.indexOf(".png")>=0){
                    resourceName = name;
                }
            }
        }
        
        
        //獲取圖片的輸入流
        InputStream in = processEngine.getRepositoryService()//
                        .getResourceAsStream(deploymentId, resourceName);
        
        //將圖片生成到D盤的目錄下
        File file = new File("D:/"+resourceName);
        //將輸入流的圖片寫到D盤下
        FileUtils.copyInputStreamToFile(in, file);
    }
java代碼
select NAME_ from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc
    select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? AND NAME_ = ? 
需要執行的SQL文件

 8./***附加功能:查詢最新版本的流程定義*/

    @Test
    public void findLastVersionProcessDefinition(){
        List<ProcessDefinition> list = processEngine.getRepositoryService()//
                        .createProcessDefinitionQuery()//
                        .orderByProcessDefinitionVersion().asc()//使用流程定義的版本升序排列
                        .list();
        /**
         * Map<String,ProcessDefinition>
  map集合的key:流程定義的key
  map集合的value:流程定義的對象
  map集合的特點:當map集合key值相同的情況下,后一次的值將替換前一次的值
         */
        Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();
        if(list!=null && list.size()>0){
            for(ProcessDefinition pd:list){
                map.put(pd.getKey(), pd);
            }
        }
        List<ProcessDefinition> pdList = new ArrayList<ProcessDefinition>(map.values());
        if(pdList!=null && pdList.size()>0){
            for(ProcessDefinition pd:pdList){
                System.out.println("流程定義ID:"+pd.getId());//流程定義的key+版本+隨機生成數
                System.out.println("流程定義的名稱:"+pd.getName());//對應helloworld.bpmn文件中的name屬性值
                System.out.println("流程定義的key:"+pd.getKey());//對應helloworld.bpmn文件中的id屬性值
                System.out.println("流程定義的版本:"+pd.getVersion());//當流程定義的key值相同的相同下,版本升級,默認1
                System.out.println("資源名稱bpmn文件:"+pd.getResourceName());
                System.out.println("資源名稱png文件:"+pd.getDiagramResourceName());
                System.out.println("部署對象ID:"+pd.getDeploymentId());
                System.out.println("#########################################################");
            }
        
java代碼
select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES order by RES.VERSION_ asc ) a where ROWNUM < ?) where rnum >= ? 

9./**附加功能:刪除流程定義(刪除key相同的所有不同版本的流程定義)*/

    @Test
    public void deleteProcessDefinitionByKey(){
        //流程定義的key
        String processDefinitionKey = "helloworld";
        //先使用流程定義的key查詢流程定義,查詢出所有的版本
        List<ProcessDefinition> list = processEngine.getRepositoryService()//
                        .createProcessDefinitionQuery()//
                        .processDefinitionKey(processDefinitionKey)//使用流程定義的key查詢
                        .list();
        //遍歷,獲取每個流程定義的部署ID
        if(list!=null && list.size()>0){
            for(ProcessDefinition pd:list){
                //獲取部署ID
                String deploymentId = pd.getDeploymentId();
                processEngine.getRepositoryService()//
                            .deleteDeployment(deploymentId, true);
            }
        }
    }

 


免責聲明!

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



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