protected void populateRoutingExceptionResponsibility(DocumentConfigurationViewForm form) { DocumentType docType = form.getDocumentType(); List<ResponsibilityForDisplay> responsibilities = new ArrayList<ResponsibilityForDisplay>(); while (docType != null) { QueryByCriteria.Builder builder = QueryByCriteria.Builder.create(); Predicate p = and( equal("template.namespaceCode", KRADConstants.KUALI_RICE_WORKFLOW_NAMESPACE), equal( "template.name", KewApiConstants.EXCEPTION_ROUTING_RESPONSIBILITY_TEMPLATE_NAME), equal("active", "Y"), equal("attributes[documentTypeName]", docType.getName())); builder.setPredicates(p); List<Responsibility> resps = getResponsibilityService().findResponsibilities(builder.build()).getResults(); for (Responsibility r : resps) { if (responsibilities.isEmpty()) { responsibilities.add(new ResponsibilityForDisplay(r, false)); } else { responsibilities.add(new ResponsibilityForDisplay(r, true)); } } docType = docType.getParentDocType(); } form.setExceptionResponsibilities(responsibilities); for (ResponsibilityForDisplay responsibility : responsibilities) { List<String> roleIds = getResponsibilityService().getRoleIdsForResponsibility(responsibility.getResp().getId()); if (!roleIds.isEmpty()) { form.getResponsibilityRoles() .put(responsibility.getResponsibilityId(), getRoleService().getRoles(roleIds)); } } }