1 /** 2 * Copyright 2005-2012 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.kew.framework.rule.attribute; 17 18 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 19 import org.kuali.rice.core.api.uif.RemotableAttributeField; 20 import org.kuali.rice.core.api.util.jaxb.MapStringStringAdapter; 21 import org.kuali.rice.kew.api.KewApiConstants; 22 import org.kuali.rice.kew.api.rule.RoleName; 23 import org.kuali.rice.kew.api.validation.ValidationResults; 24 import org.kuali.rice.kew.framework.KewFrameworkServiceLocator; 25 26 import javax.jws.WebMethod; 27 import javax.jws.WebParam; 28 import javax.jws.WebResult; 29 import javax.jws.WebService; 30 import javax.jws.soap.SOAPBinding; 31 import javax.xml.bind.annotation.XmlElement; 32 import javax.xml.bind.annotation.XmlElementWrapper; 33 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 34 import java.util.List; 35 import java.util.Map; 36 37 /** 38 * A remotable service which handles processing of a client application's document search customizations. 39 * 40 * @author Kuali Rice Team (rice.collab@kuali.org) 41 */ 42 @WebService(name = KewFrameworkServiceLocator.WORKFLOW_RULE_ATTRIBUTE_HANDLER_SERVICE, targetNamespace = KewApiConstants.Namespaces.KEW_NAMESPACE_2_0) 43 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 44 public interface WorkflowRuleAttributeHandlerService { 45 46 /** 47 * Returns true if the attribute with the provided name is an instance of WorkflowRuleAttribute 48 * 49 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 50 * @throws RiceIllegalArgumentException if the attributeName is null or blank 51 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 52 */ 53 @WebMethod(operationName = "isWorkflowRuleAttribute") 54 @WebResult(name = "workflowRuleAttribute") 55 @XmlElement(name = "workflowRuleAttribute", required = false) 56 boolean isWorkflowRuleAttribute(String attributeName); 57 58 /** 59 * Gets a List of {@link RemotableAttributeField} based on the passed workflow rule attribute name. This 60 * method loads loads up a WorkflowRuleAttribute and determines the fields for a RuleExtension 61 * 62 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 63 * @return an immutable list of RemotableAttributeField. Will not return null. 64 * @throws RiceIllegalArgumentException if the attributeName is null or blank 65 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 66 */ 67 @WebMethod(operationName = "getRuleRows") 68 @XmlElementWrapper(name = "ruleRows", required = true) 69 @XmlElement(name = "ruleRow", required = false) 70 @WebResult(name = "ruleRows") 71 List<RemotableAttributeField> getRuleRows(@WebParam(name="attributeName") String attributeName) 72 throws RiceIllegalArgumentException; 73 74 /** 75 * Gets a List of {@link RemotableAttributeField} based on the passed workflow rule or searchable attribute name. 76 * This method loads loads up either a WorkflowRuleAttribute or WorkflowRuleSearchAttribute and determines the 77 * fields for a RuleExtension. 78 * 79 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 80 * @return an immutable list of RemotableAttributeField. Will not return null. 81 * @throws RiceIllegalArgumentException if the attributeName is null or blank 82 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 83 */ 84 @WebMethod(operationName = "getSearchRows") 85 @XmlElementWrapper(name = "searchRows", required = true) 86 @XmlElement(name = "searchRow", required = false) 87 @WebResult(name = "searchRows") 88 List<RemotableAttributeField> getSearchRows(@WebParam(name="attributeName") String attributeName) 89 throws RiceIllegalArgumentException; 90 91 92 /** 93 * Gets a List of {@link RemotableAttributeField} based on the passed workflow rule or searchable attribute name. 94 * This method loads loads up either a WorkflowRuleAttribute or WorkflowRuleSearchAttribute and determines the 95 * routing data fields for a RuleExtension. 96 * 97 * <p> RoutingDataRows contain Rows describing the UI-level presentation of the ruleData fields 98 * used to determine where a given document would be routed according to the associated rule.</p> 99 * 100 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 101 * @return an immutable list of RemotableAttributeField. Will not return null. 102 * @throws RiceIllegalArgumentException if the attributeName is null or blank 103 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 104 */ 105 @WebMethod(operationName = "getRoutingDataRows") 106 @XmlElementWrapper(name = "routingDataRows", required = true) 107 @XmlElement(name = "routingDataRow", required = false) 108 @WebResult(name = "routingDataRows") 109 List<RemotableAttributeField> getRoutingDataRows(@WebParam(name="attributeName") String attributeName) 110 throws RiceIllegalArgumentException; 111 112 /** 113 * Validates routingData values in the incoming map. Called by the UI during rule creation. 114 * 115 * This method is responsible for validating and setting the data entered on the form from the UI of the routing report to the Rule's attribute. 116 * The values will be in a Map with the key being the key of the RuleExtensionValue and the value being the value of the data entered from the 117 * UI. This method is used for the routing report which may have different fields than the rule data. 118 * 119 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 120 * @param paramMap Map containing the names and values of the routing data for this Attribute 121 * @return ValidationResults. Will not return null. 122 * @throws RiceIllegalArgumentException if the attributeName is null or blank 123 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 124 */ 125 @WebMethod(operationName = "validateRoutingData") 126 @WebResult(name = "validationResults") 127 @XmlElement(name = "validationResults", required = false) 128 ValidationResults validateRoutingData(@WebParam(name="attributeName") 129 String attributeName, 130 @WebParam(name = "parmMap") 131 @XmlJavaTypeAdapter(value = MapStringStringAdapter.class) 132 Map<String, String> paramMap) 133 throws RiceIllegalArgumentException; 134 135 /** 136 * Validates searchData values in the incoming map. Called by the UI during rule creation. 137 * 138 * This method is responsible for validating and setting the data entered on the form from the UI of the routing report to the Rule's attribute. 139 * The values will be in a Map with the key being the key of the RuleExtensionValue and the value being the value of the data entered from the 140 * UI. 141 * 142 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 143 * @param paramMap Map containing the names and values of the routing data for this Attribute 144 * @return ValidationResults. Will not return null. 145 * @throws RiceIllegalArgumentException if the attributeName is null or blank 146 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 147 */ 148 @WebMethod(operationName = "validateSearchData") 149 @WebResult(name = "validationResults") 150 @XmlElement(name = "validationResults", required = false) 151 ValidationResults validateSearchData(@WebParam(name="attributeName") 152 String attributeName, 153 @WebParam(name = "parmMap") 154 @XmlJavaTypeAdapter(value = MapStringStringAdapter.class) 155 Map<String, String> paramMap) 156 throws RiceIllegalArgumentException; 157 158 /** 159 * Validates ruleExtension values in the incoming map. Called by the UI during rule creation. 160 * 161 * This method is responsible for validating and setting the data entered on the form from the UI of the rule creation to the Rule's attribute. 162 * The values will be in a Map with the key being the key of the RuleExtensionValue and the value being the value of the data entered from the UI. 163 * This method is used for rule creation which may have different fields than the routing report data. 164 * 165 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 166 * @param paramMap Map containing the names and values of the routing data for this Attribute 167 * @return ValidationResults. Will not return null. 168 * @throws RiceIllegalArgumentException if the attributeName is null or blank 169 * @throws RiceIllegalArgumentException if the WorkflowRuleAttribute is not found 170 */ 171 @WebMethod(operationName = "validateRuleData") 172 @WebResult(name = "validationResults") 173 @XmlElement(name = "validationResults", required = false) 174 ValidationResults validateRuleData(@WebParam(name="attributeName") 175 String attributeName, 176 @WebParam(name = "parmMap") 177 @XmlJavaTypeAdapter(value = MapStringStringAdapter.class) 178 Map<String, String> paramMap) 179 throws RiceIllegalArgumentException; 180 181 182 /** 183 * Gets a List of {@link RoleName} based on the passed role attribute name. This 184 * method loads loads up a RoleAttribute and determines the RoleNames for a RuleExtension 185 * 186 * @param attributeName name of the WorkflowRuleAttribute. cannot be null or blank. 187 * @return an immutable list of RoleName. Will not return null. 188 * @throws RiceIllegalArgumentException if the attributeName is null or blank 189 * @throws RiceIllegalArgumentException if the RoleAttribute is not found 190 */ 191 @WebMethod(operationName = "getRoleNames") 192 @XmlElementWrapper(name = "roleNames", required = true) 193 @XmlElement(name = "roleName", required = false) 194 @WebResult(name = "roleNames") 195 List<RoleName> getRoleNames(@WebParam(name="attributeName") String attributeName) 196 throws RiceIllegalArgumentException; 197 }