前面我们讲了流程定义的部署,本事的话就是一个添加操作;
今天我们来讲下流程定义的查询,本质的话就是通过Activiti框架提供的API对act_re_procdef进行查询操作;
我们可以通过API 把act_re_procdef表所有列的数据全部查询出来;以后开发系统的时候 管理员用户可以通过用户界面来维护这些数据;
Activiti给我们提供非常丰富的API,用来模拟SQL查询,包括通过某些字段查询,模糊查询,分页查询,排序等等;
/** * 查询流程定义 返回流程定义集合 ---对应act_re_procdef */ @Test public void list(){ List<ProcessDefinition> pdList=processEngine.getRepositoryService() // 获取service类 .createProcessDefinitionQuery() // 创建流程定义查询 .processDefinitionKey("myFirstProcess") // 通过key查询 .list(); // 返回一个集合 for(ProcessDefinition pd:pdList){ System.out.println("ID_:"+pd.getId()); System.out.println("NAME_:"+pd.getName()); System.out.println("KEY_:"+pd.getKey()); System.out.println("VERSION_:"+pd.getVersion()); System.out.println("==================="); } }
这里我们通过流程定义的KEY查询返回一个集合。然后我们输入流程定义表的部分关键字段;
运行输入:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ID_:myFirstProcess:1:4 NAME_:My First process KEY_:myFirstProcess VERSION_:1 =================== ID_:myFirstProcess:2:7504 NAME_:My First process KEY_:myFirstProcess VERSION_:2 ===================
当然我们也可以通过流程定义ID来查询某个流程定义;单个返回结果;
/** * 通过ID查询当个流程定义 */ @Test public void getById(){ ProcessDefinition pd=processEngine.getRepositoryService() // 获取service类 .createProcessDefinitionQuery() // 创建流程定义查询 .processDefinitionId("myFirstProcess:1:4") // 通过id查询 .singleResult(); // 查询返回当个结果 System.out.println("ID_:"+pd.getId()); System.out.println("NAME_:"+pd.getName()); System.out.println("KEY_:"+pd.getKey()); System.out.println("VERSION_:"+pd.getVersion()); }
这里我们主要用到singleResult()方法;
运行结果:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. ID_:myFirstProcess:1:4 NAME_:My First process KEY_:myFirstProcess VERSION_:1
当然下面我们来罗列下常见的一些API接口:
这里是模拟条件查询,可以根据某些字段查询,以及Like模糊查询;
模拟SQL 排序查询;
当然可以升序降序;
.orderByProcessDefinitionKey().desc() 或者.acc();
还有listPage 分页查询;
这些基本都是我们开发常用的,大家好好熟悉下;
完整代码:http://pan.baidu.com/s/1jIdFDuI