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());// }

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
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 }

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, ?, ?, ?, ?, ?, ?)
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("########################################################"); } } }

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 >= ?
4./**完成個人的任務*/(不是最后一位和最后一位的sql有所區別,為不同的sql)

@Test public void completeMyPersonalTask(){ //任務ID String taskId = "302"; processEngine.getTaskService()//與正在執行的任務管理相關的Service .complete(taskId); System.out.println("完成任務:任務ID:"+taskId); }

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_ = ?

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_ = ?
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("#########################################################"); } } }

select * from ( select a.*, ROWNUM rnum from ( select RES.* from ACT_RE_PROCDEF RES order by RES.VERSION_ asc ) a where ROWNUM < ?) where rnum >= ?
6./**刪除流程定義*/

@Test public void deleteProcessDefinition(){ //使用部署ID,完成刪除 String deploymentId = "601"; /** * 不帶級聯的刪除 * 只能刪除沒有啟動的流程,如果流程啟動,就會拋出異常 */ // processEngine.getRepositoryService()// // .deleteDeployment(deploymentId); /** * 級聯刪除 * 不管流程是否啟動,都能可以刪除 */ processEngine.getRepositoryService()// .deleteDeployment(deploymentId, true); System.out.println("刪除成功!"); }

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_ = ?
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); }

select NAME_ from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? order by NAME_ asc select * from ACT_GE_BYTEARRAY where DEPLOYMENT_ID_ = ? AND NAME_ = ?
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("#########################################################"); }
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); } } }