/** * Find a {@link MeasuredProcessInstance}. * * @param identifier The data to uniquely identify a process. * @return The intended process instance, or <code>null</code> if it was not available. */ public MeasuredProcessInstance findProcessInstance(final ProcessInstanceIdentifier identifier) { final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery<MeasuredProcessInstance> cq = cb.createQuery(MeasuredProcessInstance.class); final Root<MeasuredProcessInstance> processInstanceRoot = cq.from(MeasuredProcessInstance.class); cq.where( cb.equal( processInstanceRoot .get(MeasuredProcessInstance_.identifier) .get(ProcessInstanceIdentifier_.metricsId), identifier.getMetricsId()), cb.equal( processInstanceRoot .get(MeasuredProcessInstance_.identifier) .get(ProcessInstanceIdentifier_.packageName), identifier.getPackageName()), cb.equal( processInstanceRoot .get(MeasuredProcessInstance_.identifier) .get(ProcessInstanceIdentifier_.processId), identifier.getProcessId()), cb.equal( processInstanceRoot .get(MeasuredProcessInstance_.identifier) .get(ProcessInstanceIdentifier_.ksessionId), identifier.getKsessionId()), cb.equal( processInstanceRoot .get(MeasuredProcessInstance_.identifier) .get(ProcessInstanceIdentifier_.processInstanceId), identifier.getProcessInstanceId())); MeasuredProcessInstance processInstance = null; try { processInstance = em.createQuery(cq).getSingleResult(); } catch (final NoResultException nrEx) { // Leave NULL, wasn't available. } catch (final NonUniqueResultException nurEx) { log.error( "Multiple process instances with identity " + identifier + " found, unexpectedly.", nurEx); } return processInstance; }
/** * Find a {@link MeasuredHumanTask}. * * @param identifier Data to uniquely identify a process instance. * @param taskName The name of the required task. * @param nodeId The unique ID of the Human Task node this task was called for. * @return The intended task, or <code>null</code> if it was not available. */ public MeasuredHumanTask findHumanTask( final ProcessInstanceIdentifier identifier, final String taskName, final String nodeId) { final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery<MeasuredHumanTask> cq = cb.createQuery(MeasuredHumanTask.class); final Root<MeasuredHumanTask> taskRoot = cq.from(MeasuredHumanTask.class); cq.where( cb.equal( taskRoot.get(MeasuredHumanTask_.identifier).get(ProcessInstanceIdentifier_.metricsId), identifier.getMetricsId()), cb.equal( taskRoot.get(MeasuredHumanTask_.identifier).get(ProcessInstanceIdentifier_.packageName), identifier.getPackageName()), cb.equal( taskRoot.get(MeasuredHumanTask_.identifier).get(ProcessInstanceIdentifier_.processId), identifier.getProcessId()), cb.equal( taskRoot.get(MeasuredHumanTask_.identifier).get(ProcessInstanceIdentifier_.ksessionId), identifier.getKsessionId()), cb.equal( taskRoot .get(MeasuredHumanTask_.identifier) .get(ProcessInstanceIdentifier_.processInstanceId), identifier.getProcessInstanceId()), cb.equal(taskRoot.get(MeasuredHumanTask_.taskName), taskName), cb.equal(taskRoot.get(MeasuredHumanTask_.nodeId), nodeId)); MeasuredHumanTask task = null; try { task = em.createQuery(cq).getSingleResult(); } catch (final NoResultException nrEx) { // Leave NULL, wasn't available. } catch (final NonUniqueResultException nurEx) { log.error( "Multiple Human Tasks with ID " + taskName + " under one Metrics found, unexpectedly.", nurEx); } return task; }
/** * Find a {@link MeasuredRule}. * * @param identifier Data to uniquely identify a process instance. * @param ruleFlowGroup The group ID of the required rule. * @param nodeId The unique ID of the Rule node this rule was called for. * @return The intended rule, or <code>null</code> if it was not available. */ public MeasuredRule findRule( final ProcessInstanceIdentifier identifier, final String ruleFlowGroup, final String nodeId) { final CriteriaBuilder cb = em.getCriteriaBuilder(); final CriteriaQuery<MeasuredRule> cq = cb.createQuery(MeasuredRule.class); final Root<MeasuredRule> ruleRoot = cq.from(MeasuredRule.class); cq.where( cb.equal( ruleRoot.get(MeasuredRule_.identifier).get(ProcessInstanceIdentifier_.metricsId), identifier.getMetricsId()), cb.equal( ruleRoot.get(MeasuredRule_.identifier).get(ProcessInstanceIdentifier_.packageName), identifier.getPackageName()), cb.equal( ruleRoot.get(MeasuredRule_.identifier).get(ProcessInstanceIdentifier_.processId), identifier.getProcessId()), cb.equal( ruleRoot.get(MeasuredRule_.identifier).get(ProcessInstanceIdentifier_.ksessionId), identifier.getKsessionId()), cb.equal( ruleRoot .get(MeasuredRule_.identifier) .get(ProcessInstanceIdentifier_.processInstanceId), identifier.getProcessInstanceId()), cb.equal(ruleRoot.get(MeasuredRule_.ruleFlowGroup), ruleFlowGroup), cb.equal(ruleRoot.get(MeasuredRule_.nodeId), nodeId)); MeasuredRule rule = null; try { rule = em.createQuery(cq).getSingleResult(); } catch (final NoResultException nrEx) { // Leave NULL, wasn't available. } catch (final NonUniqueResultException nurEx) { log.error( "Multiple rules with ID " + ruleFlowGroup + " under one Metrics found, unexpectedly.", nurEx); } return rule; }