public Map<String,Object> getProcessInstances(Map<String,Object> params) throws SQLException{
Map<String,Object> resultMap = new HashMap<String,Object>();
String userId = StringUtil.getString(params.get("userId"));
ProcessEngine engine = getProcessEngine(userId);
RuntimeService runtimeService = engine.getRuntimeService();
IdentityService identityService = engine.getIdentityService();
FlowUtilServiceImpl flowUtil = new FlowUtilServiceImpl();
String processName = StringUtil.getString(params.get("processName"));
String processInstanceId = StringUtil.getString(params.get("processInstanceId"));
String subject = StringUtil.getString(params.get("subject"));
String bizKey = StringUtil.getString(params.get("bizKey"));
String initor = StringUtil.getString(params.get("initor"));
String status = StringUtil.getString(params.get("status"));
ProcessInstanceType processInstanceStatus = FlowUtilServiceImpl.getInstanceStaus(status);
try{
String pageI = StringUtil.getString(params.get("pageIndex"));
String rowI = StringUtil.getString(params.get("pageSize"));
int pageIndex=1;
int rowNum =15;
if(StringUtil.isNotEmpty(pageI)){
pageIndex = Integer.valueOf(pageI);
}
if(StringUtil.isNotEmpty(rowI)){
rowNum = Integer.valueOf(rowI);
}
ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
if(StringUtil.isNotEmpty(processName)){
// QueryExpandTo queryExpandTo = new QueryExpandTo();
// //增加扩展查询的left join语句
// List<Object> paraObjs = new ArrayList<Object>();
// paraObjs.add("%"+processName+"%");
// queryExpandTo.setLeftJoinSql("left join fixflow_def_processdefinition pd on PD.process_id = E.processdefinition_id");
// queryExpandTo.setWhereSql(" PD.process_name like ? ");
// queryExpandTo.setWhereSqlObj(paraObjs);
// processInstanceQuery.queryExpandTo(queryExpandTo);
processInstanceQuery.processDefinitionNameLike(processName);
}
if(StringUtil.isNotEmpty(processInstanceId))
processInstanceQuery.processInstanceId(processInstanceId);
if(StringUtil.isNotEmpty(subject))
processInstanceQuery.subjectLike(subject);
if(StringUtil.isNotEmpty(bizKey))
processInstanceQuery.processInstanceBusinessKeyLike(bizKey);
if(StringUtil.isNotEmpty(initor))
processInstanceQuery.initiatorLike(initor);
if(processInstanceStatus !=null){
processInstanceQuery.processInstanceStatus(processInstanceStatus);
}
processInstanceQuery.orderByUpdateTime().desc();
List<ProcessInstance> processInstances = processInstanceQuery.listPagination(pageIndex, rowNum);
List<Map<String,Object>> instanceMaps = new ArrayList<Map<String,Object>>();
for(ProcessInstance tmp: processInstances){
Map<String, Object> persistentState = tmp.getPersistentState();
String processDefinitionId = tmp.getProcessDefinitionId();
ProcessDefinitionBehavior processDefinitionBehavior = engine.getModelService().getProcessDefinition(processDefinitionId);
String processDefinitionName = processDefinitionBehavior.getName();
persistentState.put("processDefinitionName", processDefinitionName);
String nowNodeInfo = flowUtil.getShareTaskNowNodeInfo(tmp.getId());
persistentState.put("nowNodeInfo", nowNodeInfo);
UserTo user = identityService.getUserTo(tmp.getStartAuthor());
if(user !=null){
persistentState.put("startAuthorName", user.getUserName());
}else{
persistentState.put("startAuthorName", tmp.getStartAuthor());
}