1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.engine.node;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.apache.log4j.Logger;
20 import org.jdom.Element;
21 import org.kuali.rice.core.api.util.xml.XmlHelper;
22 import org.kuali.rice.kew.api.WorkflowRuntimeException;
23 import org.kuali.rice.kew.engine.RouteContext;
24 import org.kuali.rice.kew.engine.RouteHelper;
25 import org.kuali.rice.kew.exception.WorkflowServiceErrorException;
26 import org.kuali.rice.kew.routeheader.DocumentContent;
27 import org.kuali.rice.kew.routeheader.StandardDocumentContent;
28 import org.kuali.rice.kew.service.KEWServiceLocator;
29 import org.kuali.rice.kew.api.KewApiConstants;
30 import org.kuali.rice.kim.api.identity.Person;
31 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
32
33 import java.util.ArrayList;
34 import java.util.Collection;
35 import java.util.Iterator;
36
37
38
39
40
41
42
43
44
45 public class FYIByUniversityId extends RequestActivationNode {
46 private static final Logger LOG = Logger.getLogger(FYIByUniversityId.class);
47
48 public SimpleResult process(RouteContext context, RouteHelper helper)
49 throws Exception {
50
51 LOG.debug("processing FYIByUniversityId node");
52 Element rootElement = getRootElement(new StandardDocumentContent(context.getDocument().getDocContent()));
53 Collection<Element> fieldElements = XmlHelper.findElements(rootElement, "field");
54 Iterator<Element> elementIter = fieldElements.iterator();
55 while (elementIter.hasNext()) {
56 Element field = (Element) elementIter.next();
57 Element version = field.getParentElement();
58 if (version.getAttribute("current").getValue().equals("true")) {
59 LOG.debug("Looking for studentUid field: " + field.getAttributeValue("name"));
60 if (field.getAttribute("name")!= null && field.getAttributeValue("name").equals("studentUid")) {
61 String employeeId = field.getChildText("value");
62 LOG.debug("Should send an FYI to employee ID: " + employeeId);
63 if (!StringUtils.isBlank(employeeId)) {
64 Person person = KimApiServiceLocator.getPersonService().getPerson(employeeId);
65
66 if (person == null) {
67 throw new WorkflowRuntimeException("Failed to locate a Person with the given employee ID: " + employeeId);
68 }
69 if (!context.isSimulation()) {
70 KEWServiceLocator.getWorkflowDocumentService().adHocRouteDocumentToPrincipal(person.getPrincipalId(), context.getDocument(), KewApiConstants.ACTION_REQUEST_FYI_REQ, null, null, "Notification Request", person.getPrincipalId(), "Notification Request", true, null);
71 }
72
73 LOG.debug("Sent FYI using the adHocRouteDocumentToPrincipal function to UniversityID: " + person.getEmployeeId());
74 break;
75 }
76 }
77 }
78 }
79 return super.process(context, helper);
80 }
81
82
83 private static Element getRootElement(DocumentContent docContent) {
84 Element rootElement = null;
85 try {
86 rootElement = XmlHelper.buildJDocument(docContent.getDocument()).getRootElement();
87 } catch (Exception e) {
88 throw new WorkflowServiceErrorException("Invalid XML submitted", new ArrayList<Object>());
89 }
90 return rootElement;
91 }
92
93
94 protected Object getService(String serviceName) {
95 return KEWServiceLocator.getService(serviceName);
96 }
97
98
99 }
100
101