@Override public void addFacts(Facts.Builder factsBuilder, Object factObject, String contextId, String namespace) { addObjectMembersAsFacts(factsBuilder, factObject, contextId, namespace); factsBuilder.addFact(new Term("payrollProcessorApproval"), Boolean.FALSE); if (factObject != null && factObject instanceof Assignable) { Assignable assignable = (Assignable)factObject; factsBuilder.addFact(Assignable.ASSIGNABLE_TERM_NAME, assignable); Set<String> workAreas = new HashSet<String>(); Set<String> depts = new HashSet<String>(); for (Assignment a : assignable.getAssignments()) { workAreas.add(String.valueOf(a.getWorkArea())); depts.add(a.getDept()); Department department = HrServiceLocator.getDepartmentService().getDepartment(a.getDept(), a.getGroupKeyCode(), a.getEffectiveLocalDate()); if (department != null && department.isPayrollApproval()) { factsBuilder.addFact(new Term("payrollProcessorApproval"), Boolean.TRUE); } } if (CollectionUtils.isNotEmpty(depts)) { factsBuilder.addFact("department", depts); } if (CollectionUtils.isNotEmpty(workAreas)) { factsBuilder.addFact("workarea", workAreas); } } } }