工作流——各种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