protected static void internalCollectPlanItemInstances(PlanItemInstanceContainer planItemInstanceContainer, List<PlanItemInstanceEntity> planItemInstances) { List<PlanItemInstanceEntity> childPlanItemInstances = planItemInstanceContainer.getChildPlanItemInstances(); if (childPlanItemInstances != null && !childPlanItemInstances.isEmpty()) { for (PlanItemInstanceEntity childPlanItemInstanceEntity : childPlanItemInstances) { planItemInstances.add(childPlanItemInstanceEntity); internalCollectPlanItemInstances(childPlanItemInstanceEntity, planItemInstances); } } }
/** * Returns a list of {@link PlanItemInstanceEntity} instances for the given {@link CaseInstanceEntity}, without any filtering. */ public static List<PlanItemInstanceEntity> getAllChildPlanItemInstances(CaseInstanceEntity caseInstanceEntity) { if (caseInstanceEntity == null) { throw new FlowableException("Programmatic error: case instance entity is null"); } // Typically, this comes out of the cache as the child plan item instance are cached on case instance fetch List<PlanItemInstanceEntity> planItemInstances = new ArrayList<>(); internalCollectPlanItemInstances(caseInstanceEntity, planItemInstances); return planItemInstances; }