private DetachedCriteria buildhibernateQuery(Collection<String> internalIds, Session session, ProcessInstanceFilter filter, Integer offset, Integer limit) { DetachedCriteria criteria = DetachedCriteria.forClass(ProcessInstance.class, "ids"); criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); //criteria.setProjection(Projections.distinct(Projections.property("id"))); criteria = criteria.add(Restrictions.in("internalId", internalIds)); if (filter.getCreatedAfter() != null) { criteria = criteria.add(Restrictions.gt("createDate", filter.getCreatedAfter())); } if (filter.getCreatedBefore() != null) { criteria = criteria.add(Restrictions.lt("createDate", filter.getCreatedBefore())); } if (filter.getCreators() != null && !filter.getCreators().isEmpty()) { criteria = criteria.add(Restrictions.in("creator", filter.getCreators())); } if (filter.getUpdatedAfter() != null) { criteria = criteria .createCriteria("processLogs") .add(Restrictions.gt("entryDate", filter.getUpdatedAfterCalendar())); } if (filter.getNotUpdatedAfter() != null) { DetachedCriteria entryDateCriteria = DetachedCriteria.forClass(ProcessInstanceLog.class).add(Restrictions.gt("entryDate", filter.getNotUpdatedAfterCalendar())); criteria = criteria .createCriteria("processLogs") .add(Restrictions.not(Subqueries.exists(entryDateCriteria))); } return criteria; }
public long saveProcessInstanceFilter(ProcessInstanceFilter processInstance) { Session session = getSession(); session.saveOrUpdate(processInstance); // session.flush(); return processInstance.getId(); }
private List<BpmTask> findProcessTasksHelper(ProcessInstanceFilter filter, ProcessToolContext ctx, final Page page) { final TaskQueryImplEnhanced q = new TaskQueryImplEnhanced(); for (UserData u : filter.getOwners()) { q.addOwner(u.getLogin()); for (UserData u : filter.getCreators()) { q.addCreator(u.getLogin()); for (String qn : filter.getQueues()) { q.addGroup(qn);