1 /** 2 * Copyright 2005-2015 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.rule; 17 18 import org.kuali.rice.kew.api.rule.RoleName; 19 import org.kuali.rice.kew.api.rule.RuleTemplateAttribute; 20 import org.kuali.rice.kew.rule.bo.RuleTemplateAttributeBo; 21 22 import java.util.List; 23 import java.util.Map; 24 25 /** 26 * Handles communication between {@link org.kuali.rice.kew.framework.rule.attribute.WorkflowRuleAttributeHandlerService} 27 * endpoints in order to invoke {@link WorkflowRuleAttribute} code which might be hosted from various applications. 28 * 29 * @author Kuali Rice Team (rice.collab@kuali.org) 30 */ 31 public interface WorkflowRuleAttributeMediator { 32 33 /** 34 * Returns rule row configuration for the workflow rule attribute defined on the given RuleTemplateAttribute. These 35 * are the rows which show up on the rule and rule delegation maintenance screen when creating or editing a rule 36 * or rule delegation which uses the given attribute, as well as on the inquiry for the rule. 37 * 38 * <p>Will use the supplied parameters to populate the WorkflowRuleAttribute by running the validateRuleData method 39 * on that attribute. The result of this call contains any validation errors, the Row objects as constructed by the 40 * attribute, and the final values for the rule extensions after validation and processing has been executed.</p> 41 * 42 * @param parameters a map of parameters to pass to the backend WorkflowRuleAttribute for validation, may be null or 43 * an empty map 44 * @param ruleTemplateAttribute the RuleTemplateAttribute which defines the ExtensionDefinition for the 45 * WorkflowRuleAttribute against which to validate and retrieve the rows, as well as 46 * the required flag which should be passed to the attribute 47 * 48 * @return the result of validating and retrieving rule rows, will never return null 49 */ 50 WorkflowRuleAttributeRows getRuleRows(Map<String, String> parameters, RuleTemplateAttribute ruleTemplateAttribute); 51 52 /** 53 * Equivalent to {@link #getRuleRows(java.util.Map, org.kuali.rice.kew.rule.bo.RuleTemplateAttributeBo)} but takes 54 * a {@link RuleTemplateAttributeBo} instead of a {@link RuleTemplateAttribute}. Exists primarily for convenience of 55 * the calling code. 56 */ 57 WorkflowRuleAttributeRows getRuleRows(Map<String, String> parameters, RuleTemplateAttributeBo ruleTemplateAttribute); 58 59 /** 60 * Returns rule attribute row configuration for the workflow rule attribute defined on the given RuleTemplateAttribute. 61 * These are the rows which show up on the Routing Report screen when using a RuleTemplate which includes the 62 * given RuleTemplateAttribute. 63 * 64 * <p>Will use the supplied parameters to populate the WorkflowRuleAttribute by running the validateRoutingData method 65 * on that attribute. The result of this call contains any validation errors, the Row objects as constructed by the 66 * attribute, and the final values for the rule extensions after validation and processing has been executed.</p> 67 * 68 * @param parameters a map of parameters to pass to the backend WorkflowRuleAttribute for validation, may be null or 69 * an empty map 70 * @param ruleTemplateAttribute the RuleTemplateAttribute which defines the ExtensionDefinition for the 71 * WorkflowRuleAttribute against which to validate and retrieve the search rows, as 72 * well as the required flag which should be passed to the attribute 73 * 74 * @return the result of validating and retrieving rule search rows, will never return null 75 */ 76 WorkflowRuleAttributeRows getRoutingDataRows(Map<String, String> parameters, RuleTemplateAttribute ruleTemplateAttribute); 77 78 /** 79 * Equivalent to {@link #getRoutingDataRows(java.util.Map, org.kuali.rice.kew.rule.bo.RuleTemplateAttributeBo)} but takes 80 * a {@link RuleTemplateAttributeBo} instead of a {@link RuleTemplateAttribute}. Exists primarily for convenience of 81 * the calling code. 82 */ 83 WorkflowRuleAttributeRows getRoutingDataRows(Map<String, String> parameters, RuleTemplateAttributeBo ruleTemplateAttribute); 84 85 /** 86 * Returns rule search row configuration for the workflow rule attribute defined on the given RuleTemplateAttribute. 87 * These are the rows which show up on the rule and rule delegation lookup screen when searching for rules 88 * or rule delegations using a RuleTemplate which includes the given RuleTemplateAttribute. 89 * 90 * <p>Will use the supplied parameters to populate the WorkflowRuleAttribute by running the validateRuleData method 91 * on that attribute (or if the attribute implements WorkflowRuleSearchAttribute, will execute validateSearchData). 92 * The result of this call contains any validation errors, the Row objects as constructed by the attribute, and the 93 * final values for the rule extensions after validation and processing has been executed.</p> 94 * 95 * @param parameters a map of parameters to pass to the backend WorkflowRuleAttribute for validation, may be null or 96 * an empty map 97 * @param ruleTemplateAttribute the RuleTemplateAttribute which defines the ExtensionDefinition for the 98 * WorkflowRuleAttribute against which to validate and retrieve the search rows, as 99 * well as the required flag which should be passed to the attribute 100 * 101 * @return the result of validating and retrieving rule search rows, will never return null 102 */ 103 WorkflowRuleAttributeRows getSearchRows(Map<String, String> parameters, RuleTemplateAttribute ruleTemplateAttribute); 104 105 /** 106 * Equivalent to call {@link #getSearchRows(java.util.Map, org.kuali.rice.kew.api.rule.RuleTemplateAttribute)} but 107 * passes a custom value for the required flag that is passed to the attribute instead of using the one defined by 108 * the given {@link org.kuali.rice.kew.api.rule.RuleTemplateAttribute#isRequired()}. The main use case for this 109 * is in the case of a lookup where it's desirable to disable required validation for search fields that have not 110 * been filled in (in that case a value of "false" would be passed as the last argument to this method). 111 */ 112 WorkflowRuleAttributeRows getSearchRows(Map<String, String> parameters, RuleTemplateAttribute ruleTemplateAttribute, boolean required); 113 114 /** 115 * Returns the list of role names as defined on the {@link RoleAttribute} defined by the given rule template 116 * attribute. In this case that the defined rule template attribute does not represent a role attribute or does 117 * not return any role names, this method will return an empty list. 118 * 119 * @param ruleTemplateAttribute the RuleTemplateAttribute which defines the ExtensionDefinition for the 120 * RoleAttribute from which to fetch the role names 121 * 122 * @retun the list of role names from the attribute, or an empty list if none are defined, will never return null 123 */ 124 List<RoleName> getRoleNames(RuleTemplateAttributeBo ruleTemplateAttribute); 125 126 } 127 128