View Javadoc

1   /*
2    * Copyright 2007-2009 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.util;
17  
18  import java.sql.Date;
19  import java.util.ArrayList;
20  import java.util.HashMap;
21  import java.util.HashSet;
22  import java.util.Iterator;
23  import java.util.LinkedHashMap;
24  import java.util.List;
25  import java.util.Map;
26  import java.util.Set;
27  
28  import org.kuali.rice.core.util.JSTLConstants;
29  import org.kuali.rice.core.util.RiceConstants;
30  
31  public class KEWConstants extends JSTLConstants {
32  
33      private static final long serialVersionUID = -3897059085433394648L;
34  
35      public static final String KEW_MODULE_NAMESPACE = "KEW";
36      
37      public static final String WEBAPP_DIRECTORY = "/kew";
38  
39      public static final String USE_OUT_BOX = "USE_OUT_BOX%";
40  
41  
42      /**
43       * Node state key under which rule selector can be specified on a per-nodeinstance basis
44       */
45      public static final String RULE_SELECTOR_NODE_STATE_KEY = "__RULE_SELECTOR__";
46      /**
47       * Node state key under which rule nme can be specified on a per-nodeinstance basis
48       */
49      public static final String RULE_NAME_NODE_STATE_KEY = "__RULE_NAME__";
50  
51      public static final String DEFAULT_DOCUMENT_TYPE_LABEL = "Undefined";
52  
53      public static final String DOCUMENT_TYPE_INHERITED_VALUE_INDICATOR = "(Inherited from Parent)";
54      public static final String DOCUMENT_TYPE_SYSTEM_DEFAULT_INDICATOR = "(System Default)";
55  
56      public static final String KEW_MESSAGING_ENTITY = "KEW";
57  
58      public static final String MESSAGING_MEMORY = "memory";
59  
60      public static final String CORE_WORKFLOW_DATASOURCE = "enWorkflowDataSource";
61      // not strictly necessary to specify if connection descriptor is configured as default
62      public static final String CORE_WORKFLOW_DATASOURCE_JCD_ALIAS = CORE_WORKFLOW_DATASOURCE;
63  
64      public static final String PLUGIN_HOT_DEPLOY_MAX_WAIT_TIME = "Plugin.hotDeploy.maxWaitTime";
65      public static final String PLUGIN_HOT_DEPLOY_SAFE_TIME = "Plugin.hotDeploy.safeTime";
66  
67      public static final String BOOTSTRAP_SPRING_FILE = "kew.bootstrap.spring.file";
68  
69      public static final String KEW_URL_HOST = "kew.url.host";
70      public static final String HTTP_SERVICE_PORT = "http.service.port";
71  	public static final String KEW_SERVER_CONTEXT = "kew.server.context";
72  
73      public static final String RELOAD_ACTION_LIST = "RELOAD_ACTION_LIST";
74      public static final String DELEGATION_WIZARD = "delegationWizard";
75      public static final String PERFORM_REALTIME_DOCUMENT_UPGRADE = "Document.PerformRealtimeUpgrade";
76      //checkRouteLogAuthentication
77  
78      public static final long DEFAULT_CACHE_REQUEUE_WAIT_TIME = 5000;
79  
80      public static final int DEFAULT_THREAD_POOL_SIZE = 5;
81  
82      public static final String STANDARD_DOC_SEARCH_GENERATOR_CLASS_CONFIG_PARM = "documentSearch.generator.class.name";
83      public static final String STANDARD_DOC_SEARCH_RESULT_PROCESSOR_CLASS_CONFIG_PARM = "documentSearch.resultProcessor.class.name";
84  
85      public static final String DELEGATE_CHANGE_AR_GENERATION_KEY = "DelegateRuleChange.IsGenerateActionRequests";
86  
87      public static final String WORKGROUP_ROUTE_LOG_POPUP_KEY = "Workgroup.IsRouteLogPopup";
88      public static final String WORKGROUP_ROUTE_LOG_POPUP_VALUE = "true";
89  
90      public static final String WORKGROUP_SEARCH_INSTRUCTION_KEY = "Workgroup.Search.Instruction";
91      public static final String SUB_ACCOUNT_SEARCH_INSTRUCTION_KEY = "SubAccount.Search.Instruction";
92      public static final String USER_SEARCH_INSTRUCTION_KEY = "User.Search.Instruction";
93      public static final String WORKGROUP_CREATE_NEW_INSTRUCTION_KEY = "Workgroup.CreateNew.Instruction";
94      public static final String USER_CREATE_NEW_INSTRUCTION_KEY = "User.CreateNew.Instruction";
95  
96      public static final String ACTION_LIST_ATTRIBUTE_CLASS_PROPERTY = "customActionListAttributeClassName";
97      public static final String EMAIL_ATTRIBUTE_CLASS_PROPERTY = "customEmailAttributeClassName";
98      public static final String NOTE_ATTRIBUTE_CLASS_PROPERTY = "customNoteAttributeClassName";
99  
100     // Delegation Constants
101     public static final String DELEGATION_NONE = null;
102     public static final String DELEGATION_PRIMARY = "P";
103     public static final String DELEGATION_SECONDARY = "S";
104     /**
105      * This is a UI option, not valid data for a delgationType value.
106      */
107     public static final String DELEGATION_BOTH = "E";
108 
109     public static final String DELEGATION_PRIMARY_LABEL = "Primary";
110     public static final String DELEGATION_SECONDARY_LABEL = "Secondary";
111     public static final String DELEGATION_BOTH_LABEL = "Both";
112 
113     // Linked hash map to preseve order for iteration
114     public static final Map<String, String> DELEGATION_TYPES = new LinkedHashMap<String, String>();
115     static {
116     	DELEGATION_TYPES.put(DELEGATION_PRIMARY, DELEGATION_PRIMARY_LABEL);
117     	DELEGATION_TYPES.put(DELEGATION_SECONDARY, DELEGATION_SECONDARY_LABEL);
118     	DELEGATION_TYPES.put(DELEGATION_BOTH, DELEGATION_BOTH_LABEL);
119     }
120 
121     public static final String FLEX_RM_NAME = "FRM";
122     public static final String DOC_HANDLER_REDIRECT_PAGE = "DocHandler.do";
123     public static final String DOCUMENT_ROUTING_REPORT_PAGE = "RoutingReport.do";
124     public static final String FEEDBACK_URL = "feedback.do";
125 
126     // Routing Report constants
127     public static final String DOCUMENT_TYPE_NAME_ATTRIBUTE_NAME = "documentTypeParam";
128     public static final String INITIATOR_ID_ATTRIBUTE_NAME = "initiatorPrincipalId";
129     public static final String DOCUMENT_CONTENT_ATTRIBUTE_NAME = "documentContent";
130     public static final String RETURN_URL_ATTRIBUTE_NAME = "backUrl";
131     public static final String DISPLAY_CLOSE_BUTTON_ATTRIBUTE_NAME = "showCloseButton";
132     public static final String DISPLAY_CLOSE_BUTTON_TRUE_VALUE = "showCloseButton";
133 
134     public static final String DAILY_UNIT = "Daily";
135     public static final String WEEKLY_UNIT = "Weekly";
136     public static final String MONTHLY_UNIT = "Monthly";
137     public static final String YEARLY_UNIT = "Yearly";
138 
139     public static final String USER_SESSION_KEY = "kewUserSession";
140     public static final String SUDS_DATASOURCE = "SUDS";
141     public static final String APP_CODE = "en";
142     public static final String PROD_DEPLOYMENT_CODE = "production.environment.code";
143 
144     public static final String YES_LABEL = "Yes";
145     public static final String NO_LABEL = "No";
146     public static final String INHERITED_CD = "I";
147     public static final String INHERITED_LABEL = "Inherited";
148 
149     public static final String DISAPPROVE_POLICY = "DISAPPROVE";
150     public static final String DISAPPROVE_POLICY_CANCEL_CD = "C";
151     public static final String ALLOW_UNREQUESTED_ACTION_POLICY = "ALLOW_UNREQUESTED_ACTION";
152     public static final String DEFAULT_APPROVE_POLICY = "DEFAULT_APPROVE";
153     public static final String INITIATOR_MUST_ROUTE_POLICY = "INITIATOR_MUST_ROUTE";
154     public static final String INITIATOR_MUST_SAVE_POLICY = "INITIATOR_MUST_SAVE";
155     public static final String INITIATOR_MUST_CANCEL_POLICY = "INITIATOR_MUST_CANCEL";
156     public static final String INITIATOR_MUST_BLANKET_APPROVE_POLICY = "INITIATOR_MUST_BLANKET_APPROVE";
157     public static final String USE_KEW_SUPERUSER_DOCHANDLER = "USE_KEW_SUPERUSER_DOCHANDLER";
158     public static final String SEND_NOTIFICATION_ON_SU_APPROVE_POLICY = "SEND_NOTIFICATION_ON_SU_APPROVE";
159     public static final String ALLOW_SU_POSTPROCESSOR_OVERRIDE_POLICY = "ALLOW_SU_POSTPROCESSOR_OVERRIDE";
160 
161     public static final String DOCUMENT_TYPE_BLANKET_APPROVE_POLICY_NONE = "none";
162     public static final String DOCUMENT_TYPE_BLANKET_APPROVE_POLICY_ANY = "any";
163 
164     public static final String[] DOCUMENT_TYPE_BLANKET_APPROVE_POLICY_VALUES = {
165         DOCUMENT_TYPE_BLANKET_APPROVE_POLICY_NONE,
166         DOCUMENT_TYPE_BLANKET_APPROVE_POLICY_ANY
167     };
168 
169     //determines if route log will show the look into the future link
170     public static final String LOOK_INTO_FUTURE_POLICY = "LOOK_FUTURE";
171     public static final String SUPPORTS_QUICK_INITIATE_POLICY = "SUPPORTS_QUICK_INITIATE";
172     public static final String NOTIFY_ON_SAVE_POLICY = "NOTIFY_ON_SAVE";
173 
174     // alternate kew status policy constants.  Determines if route header will show the KEW Route Status
175     // or the application doc status, or both
176     public static final String DOCUMENT_STATUS_POLICY = "DOCUMENT_STATUS_POLICY";
177     public static final String DOCUMENT_STATUS_POLICY_KEW_STATUS = "KEW";
178     public static final String DOCUMENT_STATUS_POLICY_APP_DOC_STATUS = "APP";
179     public static final String DOCUMENT_STATUS_POLICY_BOTH = "BOTH";   
180     public static final String[] DOCUMENT_STATUS_POLICY_VALUES = {
181     	DOCUMENT_STATUS_POLICY_KEW_STATUS,
182     	DOCUMENT_STATUS_POLICY_APP_DOC_STATUS,
183     	DOCUMENT_STATUS_POLICY_BOTH
184     };
185     
186     
187     public static final String SUPER_USER_CANCEL="SU_CANCEL";
188     public static final String SUPER_USER_APPROVE="SU_APPROVE";
189     public static final String SUPER_USER_DISAPPROVE="SU_DISAPPROVE";
190     public static final String SUPER_USER_ROUTE_LEVEL_APPROVE="SU_ROUTE_LEVEL_APPROVE";
191     public static final String SUPER_USER_ACTION_REQUEST_APPROVE="SU_ACTION_REQUEST_APPROVE";
192     public static final String SUPER_USER_RETURN_TO_PREVIOUS_ROUTE_LEVEL="SU_RETURN_TO_PREVIOUS_ROUTE_LEVEL";
193 
194     /* email notification for action requests left in action list */
195     public static final String EMAIL_RMNDR_KEY = "EMAIL_NOTIFICATION";
196     public static final String EMAIL_RMNDR_NO_VAL = "no";
197     public static final String EMAIL_RMNDR_DAY_VAL = "daily";
198     public static final String EMAIL_RMNDR_WEEK_VAL = "weekly";
199     public static final String EMAIL_RMNDR_IMMEDIATE = "immediate";
200     public static final String EMAIL_LAST_RMNDR_KEY = "EMAIL_LST_RMNDR_DATE_KEY";
201     public static final String EMAIL_STYLESHEET_NAME = "kew.email.style";
202     /* end email notification constants */
203 
204     public static final String PREFERENCES_YES_VAL = "yes";
205     public static final String PREFERENCES_NO_VAL = "no";
206 
207     public static final String ACTION_LIST_ALL_REQUESTS = "all";
208     public static final String ACTION_LIST_DELEGATED_REQUESTS = "delegated";
209     public static final String ACTION_LIST_NONDELEGATED_REQUESTS = "nondelegated";
210     public static final String DELEGATORS_ON_FILTER_PAGE = "Secondary Delegators only on Filter Page";
211     public static final String DELEGATORS_ON_ACTION_LIST_PAGE = "Secondary Delegators on Action List Page";
212     public static final String PRIMARY_DELEGATES_ON_FILTER_PAGE = "Primary Delegates only on Filter Page";
213     public static final String PRIMARY_DELEGATES_ON_ACTION_LIST_PAGE = "Primary Delegates on Action List Page";
214 
215     public static final Map<String, String> ACTION_LIST_CONTENT;
216     static {
217         ACTION_LIST_CONTENT = new HashMap<String, String>();
218         ACTION_LIST_CONTENT.put(KEWConstants.ACTION_LIST_ALL_REQUESTS, "All Requests");
219         ACTION_LIST_CONTENT.put(KEWConstants.ACTION_LIST_NONDELEGATED_REQUESTS, "No Delegations");
220         ACTION_LIST_CONTENT.put(KEWConstants.ACTION_LIST_DELEGATED_REQUESTS, "Delegations Only");
221     }
222 
223     public static final String ALL_CODE = "All";
224     public static final String ALL_SECONDARY_DELEGATIONS = "All Secondary Delegations";
225     public static final String ALL_PRIMARY_DELEGATES = "All Primary Delegates";
226     public static final String NO_FILTERING = "No Filtering";
227     public static final String DELEGATION_DEFAULT = "Choose Secondary Delegation";
228     public static final String PRIMARY_DELEGATION_DEFAULT = "Choose Primary Delegate";
229 
230     public static final String ACTIVE_CD = "Y";
231     public static final String ACTIVE_LABEL = "ACTIVE";
232     public static final String ACTIVE_LABEL_LOWER = "Active";
233 
234     public static final String INACTIVE_CD = "N";
235     public static final String INACTIVE_LABEL = "INACTIVE";
236     public static final String INACTIVE_LABEL_LOWER = "Inactive";
237 
238     public static final String TRUE_CD = "1";
239     public static final String TRUE = "T";
240 
241     public static final String FALSE_CD = "0";
242     public static final String FALSE = "F";
243 
244     /** Value for UNAUTHENTICATED when comparing to the principal value */
245     public static final String UNAUTHENTICATED = "UNAUTHENTICATED";
246     public static final int DEFAULT_RETRY_TIME = 1800;
247 
248     public static final int TITLE_MAX_LENGTH = 255;
249 
250     public static final Date CURRENT_DATE = new Date(-7);
251 
252     public static final String DOCUMENT_STATUS_PARENT_TYPE_PENDING = "Pending";
253     public static final String DOCUMENT_STATUS_PARENT_TYPE_SUCCESSFUL = "Successful";
254     public static final String DOCUMENT_STATUS_PARENT_TYPE_UNSUCCESSFUL = "Unsuccessful";
255 
256     public static final Map<String, List<String>> DOCUMENT_STATUS_PARENT_TYPES;
257 
258     static {
259 
260     	DOCUMENT_STATUS_PARENT_TYPES = new HashMap<String, List<String>>();
261 
262     	// Pending Statuses
263     	List<String> pendingList = new ArrayList<String>();
264     	pendingList.add(KEWConstants.ROUTE_HEADER_ENROUTE_CD);
265     	pendingList.add(KEWConstants.ROUTE_HEADER_SAVED_CD);
266     	pendingList.add(KEWConstants.ROUTE_HEADER_INITIATED_CD);
267     	pendingList.add(KEWConstants.ROUTE_HEADER_EXCEPTION_CD);
268 
269     	// Successful Statuses
270     	List<String> successfulList = new ArrayList<String>();
271     	successfulList.add(KEWConstants.ROUTE_HEADER_FINAL_CD);
272     	successfulList.add(KEWConstants.ROUTE_HEADER_PROCESSED_CD);
273     	successfulList.add(KEWConstants.ROUTE_HEADER_APPROVED_CD);
274 
275     	// Unsuccessful Statuses
276     	List<String> unsuccessfulList = new ArrayList<String>();
277     	unsuccessfulList.add(KEWConstants.ROUTE_HEADER_DISAPPROVED_CD);
278     	unsuccessfulList.add(KEWConstants.ROUTE_HEADER_CANCEL_CD);
279     	unsuccessfulList.add(KEWConstants.ROUTE_HEADER_CANCEL_DISAPPROVE_CD);
280 
281     	DOCUMENT_STATUS_PARENT_TYPES.put(KEWConstants.DOCUMENT_STATUS_PARENT_TYPE_PENDING, pendingList);
282     	DOCUMENT_STATUS_PARENT_TYPES.put(KEWConstants.DOCUMENT_STATUS_PARENT_TYPE_SUCCESSFUL, successfulList);
283     	DOCUMENT_STATUS_PARENT_TYPES.put(KEWConstants.DOCUMENT_STATUS_PARENT_TYPE_UNSUCCESSFUL, unsuccessfulList);
284 
285     }
286 
287     public static final Map<String, String> DOCUMENT_STATUSES;
288 
289     static {
290         /*
291          * see values in RouteHeader inner class; this HashMap is the definitive list used for the Document Route Statuses in ActionList preferences
292          */
293         DOCUMENT_STATUSES = new HashMap<String, String>();
294         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_APPROVED_CD, KEWConstants.ROUTE_HEADER_APPROVED_LABEL);
295         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_CANCEL_CD, KEWConstants.ROUTE_HEADER_CANCEL_LABEL);
296         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_CANCEL_DISAPPROVE_CD, KEWConstants.ROUTE_HEADER_CANCEL_DISAPPROVE_LABEL);
297         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_DISAPPROVED_CD, KEWConstants.ROUTE_HEADER_DISAPPROVED_LABEL);
298         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_ENROUTE_CD, KEWConstants.ROUTE_HEADER_ENROUTE_LABEL);
299         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_EXCEPTION_CD, KEWConstants.ROUTE_HEADER_EXCEPTION_LABEL);
300         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_FINAL_CD, KEWConstants.ROUTE_HEADER_FINAL_LABEL);
301         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_INITIATED_CD, KEWConstants.ROUTE_HEADER_INITIATED_LABEL);
302         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_PROCESSED_CD, KEWConstants.ROUTE_HEADER_PROCESSED_LABEL);
303         DOCUMENT_STATUSES.put(KEWConstants.ROUTE_HEADER_SAVED_CD, KEWConstants.ROUTE_HEADER_SAVED_LABEL);
304     }
305 
306     // below must be negative to be 30 days in the past... positive number will push date into future
307     public static final Integer DOCUMENT_SEARCH_DOC_TITLE_CREATE_DATE_DAYS_AGO = new Integer(-30);
308     public static final Integer DOCUMENT_SEARCH_NO_CRITERIA_CREATE_DATE_DAYS_AGO = new Integer(0);
309 
310     public static final Map<String, String> ACTION_LIST_COLOR_PALETTE;
311     static {
312         ACTION_LIST_COLOR_PALETTE = new HashMap<String, String>();
313         ACTION_LIST_COLOR_PALETTE.put("white", "#FFFFFF");
314         ACTION_LIST_COLOR_PALETTE.put("pink", "#FFDDDE");
315         ACTION_LIST_COLOR_PALETTE.put("orange", "#FFCC99");
316         ACTION_LIST_COLOR_PALETTE.put("red", "#D99394");
317         ACTION_LIST_COLOR_PALETTE.put("yellow", "#FFFF99");
318         ACTION_LIST_COLOR_PALETTE.put("green", "#D4FF94");
319         ACTION_LIST_COLOR_PALETTE.put("blue", "#BDD8F4");
320         ACTION_LIST_COLOR_PALETTE.put("aqua", "#7FFFDF");
321         ACTION_LIST_COLOR_PALETTE.put("slate", "#BDDABD");
322         ACTION_LIST_COLOR_PALETTE.put("purple", "#DFCAFA");
323         ACTION_LIST_COLOR_PALETTE.put("tan", "#E5E5B7");
324     }
325 
326     // This is just the above map, but with the keys in the place of the values and vice versa. This assumes the map above
327     // is a one-to-one correspondence; if it's not, then the static{} block below will need modification.
328     public static final Map<String, String> ACTION_LIST_COLOR_NAMES;
329     static {
330     	ACTION_LIST_COLOR_NAMES = new HashMap<String,String>();
331     	for (Iterator<Map.Entry<String,String>> iterator = ACTION_LIST_COLOR_PALETTE.entrySet().iterator(); iterator.hasNext();) {
332     		Map.Entry<String,String> colorEntry = iterator.next();
333     		ACTION_LIST_COLOR_NAMES.put(colorEntry.getValue(), colorEntry.getKey());
334     	}
335     }
336 
337     public static final String HEADER_TAG = "ROUTE_HEADER";
338     public static final String DOCTYPE_TAG = "DOCTYPE";
339 
340     // order of these is important since this forms a priority according to the codes index into the string
341     public static final String REQUEST_CODES = KEWConstants.ACTION_REQUEST_FYI_REQ + KEWConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ + KEWConstants.ACTION_REQUEST_APPROVE_REQ + KEWConstants.ACTION_REQUEST_COMPLETE_REQ;
342     public static final String ACTION_CODES = KEWConstants.ACTION_TAKEN_ACKNOWLEDGED_CD + KEWConstants.ACTION_TAKEN_APPROVED_CD + KEWConstants.ACTION_TAKEN_COMPLETED_CD + KEWConstants.ACTION_TAKEN_ROUTED;
343     public static final String ROUTE_MANAGER_DRIVER_WRKGRP = "RouteManagerDriverCommandGroup";
344     public static final int ROUTE_HEADER_INITIAL_ROUTE_LEVEL = 0;
345     /** The initial state of a document. Only state in which a delete is allowed. */
346     public static final String ROUTE_HEADER_INITIATED_CD = "I";
347     public static final String ROUTE_HEADER_INITIATED_LABEL = "INITIATED";
348 
349     /**
350      * Default pre-approval policy code. By default pre-approval action requests are not allowed.
351      */
352     public static final boolean ROUTE_HEADER_DEFAULT_PRE_APPROVAL_POLICY = false;
353     /**
354      * Default code for the default auto approval policy code. If a document has not approve action requests and has gone through the route template, then by default the document is auto approved.
355      */
356     public static final boolean ROUTE_HEADER_DEFAULT_AUTO_APPROVAL_POLICY = true;
357     public static final String ROUTE_HEADER_DEFAULT_DISAPPROVE_POLICY_LABEL = "DISAPPROVE-CANCEL";
358     /** Default disapprove action policy code */
359     public static final String ROUTE_HEADER_DEFAULT_DISAPPROVE_POLICY_CD = KEWConstants.ROUTE_HEADER_CANCEL_DISAPPROVE_CD;
360     /** Document sent back to the last approver */
361     public static final String ROUTE_HEADER_LAST_APPROVER_DISAPPROVE_CD = "A";
362     /**
363      * Return the document to the initiator with complete request when the document is disapproved. Document must be explicitly canceled or it will remain en_route under this policy.
364      */
365     public static final String ROUTE_HEADER_RETURN_INIATOR_DISAPPROVE_CD = "I";
366     public static final String ROUTE_HEADER_CANCEL_DISAPPROVE_LABEL = "DISAPPROVE-CANCEL";
367     /** When document disapproved, take same effect as a cancel but with a different action code */
368     public static final String ROUTE_HEADER_CANCEL_DISAPPROVE_CD = "C";
369     public static final String ROUTE_HEADER_DISAPPROVED_DEFAULT_COLOR = "yellow";
370     public static final String ROUTE_HEADER_DISAPPROVED_LABEL = "DISAPPROVED";
371     /** Document has been disapproved */
372     public static final String ROUTE_HEADER_DISAPPROVED_CD = "D";
373     public static final String ROUTE_HEADER_PROCESSED_LABEL = "PROCESSED";
374     /** Document has been processed by the post processor */
375     public static final String ROUTE_HEADER_PROCESSED_CD = "P";
376     public static final String ROUTE_HEADER_EXCEPTION_DEFAULT_COLOR = "red";
377     public static final String ROUTE_HEADER_EXCEPTION_LABEL = "EXCEPTION";
378     /** Document has had an exception in routing and needs to be processed */
379     public static final String ROUTE_HEADER_EXCEPTION_CD = "E";
380     public static final String ROUTE_HEADER_CANCEL_LABEL = "CANCELED";
381     /** Document has been canceled and no further action should be taken on it. */
382     public static final String ROUTE_HEADER_CANCEL_CD = "X";
383     public static final String ROUTE_HEADER_APPROVED_LABEL = "APPROVED";
384     /** Document has been approved and is awaiting post processing */
385     public static final String ROUTE_HEADER_APPROVED_CD = "A";
386     public static final String ROUTE_HEADER_FINAL_LABEL = "FINAL";
387     /** Document has finalized and no changes are allowed to take place to it. */
388     public static final String ROUTE_HEADER_FINAL_CD = "F";
389     public static final String ROUTE_HEADER_SAVED_LABEL = "SAVED";
390     /** The document has been saved, but has not started to route. */
391     public static final String ROUTE_HEADER_SAVED_CD = "S";
392     public static final String ROUTE_HEADER_ENROUTE_LABEL = "ENROUTE";
393     /** The document is currently being routed. */
394     public static final String ROUTE_HEADER_ENROUTE_CD = "R";
395     
396     public static String UNKNOWN_STATUS = "";
397 
398     /** Actions Taken Constants **/
399     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_ACKNOWLEDGED_CD = "k";
400     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_ACKNOWLEDGED = "SUPER USER ACTION REQUEST ACKNOWLEDGED";
401     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_FYI_CD = "f";
402     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_FYI = "SUPER USER ACTION REQUEST FYI";
403     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_COMPLETED_CD = "m";
404     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_COMPLETED = "SUPER USER ACTION REQUEST COMPLETED";
405     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED_CD = "v";
406     public static final String ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED = "SUPER USER ACTION REQUEST APPROVED";
407     public static final String ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED_CD = "r";
408     public static final String ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED = "SUPER USER ROUTE LEVEL APPROVED";
409     public static final String ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS_CD = "z";
410     public static final String ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS = "SUPER USER RETURNED TO PREVIOUS ROUTE LEVEL";
411     public static final String ACTION_TAKEN_SU_DISAPPROVED_CD = "d";
412     public static final String ACTION_TAKEN_SU_DISAPPROVED = "SUPER USER DISAPPROVED";
413     public static final String ACTION_TAKEN_SU_CANCELED_CD = "c";
414     public static final String ACTION_TAKEN_SU_CANCELED = "SUPER USER CANCELED";
415     public static final String ACTION_TAKEN_SU_APPROVED_CD = "a";
416     public static final String ACTION_TAKEN_SU_APPROVED = "SUPER USER APPROVED";
417     public static final String ACTION_TAKEN_BLANKET_APPROVE_CD = "B";
418     public static final String ACTION_TAKEN_BLANKET_APPROVE = "BLANKET APPROVED";
419     public static final String ACTION_TAKEN_FYI_CD = "F";
420     public static final String ACTION_TAKEN_FYI = "FYI";
421     public static final String ACTION_TAKEN_ADHOC_CD = "H";
422     /** User has generated an action request to another user */
423     public static final String ACTION_TAKEN_ADHOC = "ADHOC ROUTED";
424     public static final String ACTION_TAKEN_ADHOC_REVOKED_CD = "V";
425     /** AdHoc Request has been revoked */
426     public static final String ACTION_TAKEN_ADHOC_REVOKED = "ADHOC REVOKED";
427     public static final String ACTION_TAKEN_SAVED_CD = "S";
428     /** Document has been saved by the user for later work */
429     public static final String ACTION_TAKEN_SAVED = "SAVED";
430     public static final String ACTION_TAKEN_CANCELED_CD = "X";
431     /** Document has been canceled. */
432     public static final String ACTION_TAKEN_CANCELED = "CANCELED";
433     public static final String ACTION_TAKEN_DENIED_CD = "D";
434     /** Document has been denied. */
435     public static final String ACTION_TAKEN_DENIED = "DISAPPROVED";
436     public static final String ACTION_TAKEN_ACKNOWLEDGED_CD = "K";
437     /** Document has been opened by the designated recipient. */
438     public static final String ACTION_TAKEN_ACKNOWLEDGED = "ACKNOWLEDGED";
439     public static final String ACTION_TAKEN_COMPLETED_CD = "C";
440     /** Document has been completed as requested. */
441     public static final String ACTION_TAKEN_COMPLETED = "COMPLETED";
442     public static final String ACTION_TAKEN_ROUTED_CD = "O";
443     /** Document has been completed as requested. */
444     public static final String ACTION_TAKEN_ROUTED = "ROUTED";
445     public static final String ACTION_TAKEN_APPROVED_CD = "A";
446     /** The document has been approved. */
447     public static final String ACTION_TAKEN_APPROVED = "APPROVED";
448     /** The document is being returned to a previous routelevel **/
449     public static final String ACTION_TAKEN_RETURNED_TO_PREVIOUS_CD = "Z";
450     public static final String ACTION_TAKEN_RETURNED_TO_PREVIOUS = "RETURNED TO PREVIOUS ROUTE LEVEL";
451     /** The document has non-routed activity against it that is recorded in the route log **/
452     public static final String ACTION_TAKEN_LOG_DOCUMENT_ACTION_CD = "R";
453     public static final String ACTION_TAKEN_LOG_DOCUMENT_ACTION = "LOG MESSAGE";
454     /** The document is routed to a workgroup and a user in the workgroup wants to take authority from the workgroup **/
455     public static final String ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY_CD = "w";
456     public static final String ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY = "WORKGROUP AUTHORITY TAKEN";
457     /** The person who took workgroup authority is releasing it **/
458     public static final String ACTION_TAKEN_RELEASE_WORKGROUP_AUTHORITY_CD = "y";
459     public static final String ACTION_TAKEN_RELEASE_WORKGROUP_AUTHORITY = "WORKGROUP AUTHORITY RELEASED";
460     /** The document is moved **/
461     public static final String ACTION_TAKEN_MOVE_CD = "M";
462     public static final String ACTION_TAKEN_MOVE = "MOVED";
463 
464     /** Route Level type constants FlexRM or Route Module **/
465     public static final String ROUTE_LEVEL_FLEX_RM = "FR";
466     public static final String ROUTE_LEVEL_ROUTE_MODULE = "RM";
467     public static final String ROUTE_LEVEL_METHOD_NAME_ROUTE_MODULE = "Route Module";
468     public static final String ROUTE_LEVEL_METHOD_NAME_FLEX_RM = "Rule Template";
469     /** No route module available for this route level * */
470     public static final String ROUTE_LEVEL_NO_ROUTE_MODULE = "NONE";
471     /**
472      * The route level value for the AdHoc route level. AdHoc like Exception route level does not have a route module and is processed directly be the engine.
473      */
474     public static final int ADHOC_ROUTE_LEVEL = 0;
475     public static final String ADHOC_ROUTE_LEVEL_NAME = "Adhoc Routing";
476     public static final String PARALLEL_ADHOC_ROUTE_MODULE_NAME = "org.kuali.rice.kew.routemodule.ParallelAdHocRouteModule";
477 
478     /**
479      * The route level value for the Exception route level. The Exception route level does not have a route module and the core engine processes these requests since they have special rules, such as an exception request can not itself throw an exception request.
480      */
481     public static final int EXCEPTION_ROUTE_LEVEL = -1;
482     public static final String EXCEPTION_ROUTE_MODULE_NAME = "org.kuali.rice.kew.routemodule.ExceptionRouteModule";
483     public static final String EXCEPTION_ROUTE_LEVEL_NAME = "Exception Routing";
484     public static final int INVALID_ROUTE_LEVEL = -2;
485 
486     /** Routing should process the associated ActionRequests in sequence */
487     public static final String ROUTE_LEVEL_SEQUENCE = "S";
488     public static final String ROUTE_LEVEL_SEQUENTIAL_NAME = "Sequential";
489     public static final String ROUTE_LEVEL_SEQUENCE_LABEL = "SEQUENCE";
490 
491     /** Routing should process the associated ActionRequests in parallel */
492     public static final String ROUTE_LEVEL_PARALLEL = "P";
493     public static final String ROUTE_LEVEL_PARALLEL_NAME = "Parallel";
494     public static final String ROUTE_LEVEL_PARALLEL_LABEL = "PARALLEL";
495 
496     public static final String APPROVE_POLICY_FIRST_APPROVE = "F";
497     public static final String APPROVE_POLICY_ALL_APPROVE = "A";
498 
499     public static final String APPROVE_POLICY_ALL_APPROVE_LABEL = "ALL";
500     public static final String APPROVE_POLICY_FIRST_APPROVE_LABEL = "FIRST";
501 
502     public static final Map<String, String> APPROVE_POLICIES = new HashMap<String, String>();
503     static {
504     	APPROVE_POLICIES.put(APPROVE_POLICY_FIRST_APPROVE, APPROVE_POLICY_FIRST_APPROVE_LABEL);
505     	APPROVE_POLICIES.put(APPROVE_POLICY_ALL_APPROVE, APPROVE_POLICY_ALL_APPROVE_LABEL);
506     }
507 
508     public static final boolean ACTION_REQUEST_FORCE_ACTION = true;
509     public static final boolean ACTION_REQUEST_PREV_ACTION_AWARE = false;
510     /** Action Request is for a workgroup. */
511     public static final String ACTION_REQUEST_GROUP_RECIPIENT_CD = "W";
512     /** Action Request is for a user only */
513     public static final String ACTION_REQUEST_USER_RECIPIENT_CD = "U";
514     /** Action Request is for a role */
515     public static final String ACTION_REQUEST_ROLE_RECIPIENT_CD = "R";
516     /** Priority used if no priority is specified */
517     public static final int ACTION_REQUEST_DEFAULT_PRIORITY = 1;
518 
519     /** Values for Rule template options   */
520     public static final String ACTION_REQUEST_DEFAULT_CD = "D";
521 
522 
523     /**
524      * Priority level that indicates an ad hoc request. If the priority is above this value, then the request is considered an ad hoc request and is processed accordingly. This is used most often when an ad hoc request must follow the end of a route level. For example, if a user wants the ad hoc to happen after all requests at route level 3 have been processed, but before any requests at route level 4. This is also the upper, exclusive bound for normal request priorities.
525      */
526     public static final int ACTION_REQUEST_ADHOC_PRIORITY = 1000;
527     public static final String ACTION_REQUEST_DONE_STATE_LABEL = "DONE";
528     /** code to indicate the request has been satisfied */
529     public static final String ACTION_REQUEST_DONE_STATE = "D";
530     public static final String ACTION_REQUEST_ACTIVATED_LABEL = "ACTIVATED";
531     /** Code to indicate the request is currently active */
532     public static final String ACTION_REQUEST_ACTIVATED = "A";
533     public static final String ACTION_REQUEST_INITIALIZED_LABEL = "INITIALIZED";
534     /** Code to indicate the request has not been activated */
535     public static final String ACTION_REQUEST_INITIALIZED = "I";
536     public static final String ACTION_REQUEST_CANCEL_REQ_LABEL = "CANCEL";
537     /**
538      * Requested action is to Cancel document
539      */
540     public static final String ACTION_REQUEST_CANCEL_REQ = "X";
541     public static final String ACTION_REQUEST_ACKNOWLEDGE_REQ_LABEL = "ACKNOWLEDGE";
542     /**
543      * Requested action is ACKKNOWLEDGE. This action does not hold up routing, but action request will not be marked DONE until an ACKNOWLEDGE actiontaken is recorded.
544      */
545     public static final String ACTION_REQUEST_ACKNOWLEDGE_REQ = "K";
546     public static final String ACTION_REQUEST_FYI_REQ_LABEL = "FYI";
547     /**
548      * The action is an FYI notification only. This action request is marked DONE as soon as it is activated.
549      */
550     public static final String ACTION_REQUEST_FYI_REQ = "F";
551     public static final String ACTION_REQUEST_APPROVE_REQ_LABEL = "APPROVE";
552     /** Requested action is to approve the document. */
553     public static final String ACTION_REQUEST_APPROVE_REQ = "A";
554     public static final String ACTION_REQUEST_COMPLETE_REQ_LABEL = "COMPLETE";
555     /** Requested action is to complete the document, however that is defined by the application. */
556     public static final String ACTION_REQUEST_COMPLETE_REQ = "C";
557     public static final String ACTION_REQUEST_DISAPPROVE_LABEL = "DISAPPROVE";
558 
559     public static final String ACTION_REQUEST_TO_BE_GENERATED = "-1";
560     /** Largest value allowed for a workgroupID. Any value larger is assumed to be a sequenceId of a user */
561     public static final int WORKGROUP_MAX_WORKGROUP_ID = 100000000;
562     /** Last approval taken applies to entire request */
563     //public static final String WORKGROUP_LAST_APPROVAL = "L";
564     /** First action taken applies to entire request */
565     //public static final String WORKGROUP_FIRST_ACTION = "F";
566     /** Personal workgroup code */
567     //public static final String WORKGROUP_PERSONAL = "P";
568 
569     public static final Map<String, String> ACTION_REQUEST_CODES = new HashMap<String, String>();
570     static {
571     	ACTION_REQUEST_CODES.put(ACTION_REQUEST_COMPLETE_REQ, ACTION_REQUEST_COMPLETE_REQ_LABEL);
572     	ACTION_REQUEST_CODES.put(ACTION_REQUEST_APPROVE_REQ, ACTION_REQUEST_APPROVE_REQ_LABEL);
573     	ACTION_REQUEST_CODES.put(ACTION_REQUEST_ACKNOWLEDGE_REQ, ACTION_REQUEST_ACKNOWLEDGE_REQ_LABEL);
574     	ACTION_REQUEST_CODES.put(ACTION_REQUEST_FYI_REQ, ACTION_REQUEST_FYI_REQ_LABEL);
575     }
576 
577     /** Route Queue Priorities */
578     public static final Integer ROUTE_QUEUE_DEFAULT_PRIORITY = new Integer(5);
579     public static final Integer ROUTE_QUEUE_BLANKET_APPROVE_PRIORITY = new Integer(4);
580     public static final Integer ROUTE_QUEUE_RERESOLVE_PRIORITY = new Integer(10);
581     public static final Integer ROUTE_QUEUE_REQUEUE_PRIORITY = new Integer(10);
582     public static final Integer ROUTE_QUEUE_EMAIL_PRIORITY = new Integer(20);
583     public static final Integer ROUTE_QUEUE_RULE_CACHE_PRIORITY = new Integer(0);
584     public static final Integer ROUTE_QUEUE_EXCEPTION_PRIORITY = new Integer(21);
585     public static final Integer ROUTE_QUEUE_UPGRADE_PRIORITY = new Integer(30);
586 
587     public static final String ROUTE_QUEUE_EXCEPTION = "E";
588     public static final String ROUTE_QUEUE_ROUTING = "R";
589     public static final String ROUTE_QUEUE_QUEUED = "Q";
590     public static final String ROUTE_QUEUE_EXCEPTION_LABEL = "EXCEPTION";
591     public static final String ROUTE_QUEUE_ROUTING_LABEL = "ROUTING";
592     public static final String ROUTE_QUEUE_QUEUED_LABEL = "QUEUED";
593 
594     public static final String RULE_RESPONSIBILITY_WORKFLOW_ID = "F";
595     public static final String RULE_RESPONSIBILITY_GROUP_ID = "G";
596     public static final String RULE_RESPONSIBILITY_ROLE_ID = "R";
597 
598     public static final String RULE_RESPONSIBILITY_WORKFLOW_ID_LABEL = "PERSON";
599 	public static final String RULE_RESPONSIBILITY_GROUP_ID_LABEL = "GROUP";
600 	public static final String RULE_RESPONSIBILITY_ROLE_ID_LABEL = "ROLE";
601 
602     public static final Map<String, String> RULE_RESPONSIBILITY_TYPES = new HashMap<String, String>();
603     static {
604     	RULE_RESPONSIBILITY_TYPES.put(RULE_RESPONSIBILITY_WORKFLOW_ID, RULE_RESPONSIBILITY_WORKFLOW_ID_LABEL);
605     	RULE_RESPONSIBILITY_TYPES.put(RULE_RESPONSIBILITY_GROUP_ID, RULE_RESPONSIBILITY_GROUP_ID_LABEL);
606     	RULE_RESPONSIBILITY_TYPES.put(RULE_RESPONSIBILITY_ROLE_ID, RULE_RESPONSIBILITY_ROLE_ID_LABEL);
607     }
608 
609     public static final String DEFAULT_RULE_DOCUMENT_NAME = "RuleDocument";
610 
611     public static class Sorting {
612         public static final String SORT_COLUMN_SEQUENCES = "columnSortSequences";
613         public static final String SORT_SEQUENCE_ASC = "ASCENDING";
614         public static final String SORT_SEQUENCE_DSC = "DESCENDING";
615         public static final String SORT_DOC_ID = "docId";
616         public static final String SORT_DOC_ID_NUMBER = "docIdNumber";
617         public static final String SORT_RULE_ID = "ruleId";
618         public static final String SORT_RULE_ID_NUMBER = "ruleIdNumber";
619         public static final String SORT_DOC_TITLE = "docTitle";
620         public static final String SORT_DOC_TYPE_ID = "docTypeId";
621         public static final String SORT_DOC_TYPE_ID_NUMBER = "docTypeIdNumber";
622         public static final String SORT_DOC_TYPE_NAME = "docTypeName";
623         public static final String SORT_DOC_TYPE_FULL_NAME = "docTypeFullName";
624         public static final String SORT_DOC_TYPE_LABEL = "docTypeLabel";
625         public static final String SORT_ACTION_REQUESTED = "actionRequested";
626         public static final String SORT_ACTION_REQUESTED_LABEL = "actionRequestedLabel";
627         public static final String SORT_CHART = "chart";
628         public static final String SORT_ORG = "org";
629         public static final String SORT_REVIEWERS_ALL_NAMES = "reviewersAllNames";
630         public static final String SORT_REVIEWER_EMPLY_ID = "reviewerEmplyId";
631         public static final String SORT_REVIEWER_NETWORK_ID = "reviewerNetworkId";
632         public static final String SORT_REVIEWER_FULL_NAME = "reviewerFullName";
633         public static final String SORT_ACTIVE_IND = "activeIndicator";
634         public static final String SORT_ACTIVE_IND_LABEL = "activeIndicatorLabel";
635         public static final String SORT_DOC_TYPE_GROUP_ID = "docTypeGroupId";
636         public static final String SORT_DOC_TYPE_GROUP_ID_NUMBER = "docTypeGroupIdNumber";
637         public static final String SORT_DOC_TYPE_GROUP_NAME = "docTypeGroupName";
638         public static final String SORT_DOC_TYPE_GROUP_FULL_NAME = "docTypeGroupFullName";
639         public static final String SORT_DOC_TYPE_GROUP_PARENT_NAME = "docTypeGroupParentName";
640         public static final String SORT_DOC_TYPE_GROUP_PARENT_FULL_NAME = "docTypeGroupParentFullName";
641         public static final String SORT_DOC_TYPE_GROUP_LABEL = "docTypeGroupLabel";
642         public static final String SORT_FISCAL_UPAA = "fiscalUpaa";
643         public static final String SORT_FISCAL_UPAA_LABEL = "fiscalUpaaLabel";
644         public static final String SORT_POSITION_TYPE = "positionType";
645         public static final String SORT_POSITION_TYPE_LABEL = "positionTypeLabel";
646         public static final String SORT_SALARY_PLAN = "salaryPlanSort";
647         public static final String SORT_DELEGATES_ALL = "delegatesAll";
648         public static final String SORT_DELEGATE_EMPLY_ID = "delegateEmplyId";
649         public static final String SORT_DELEGATE_NETWORK_ID = "delegateNetworkId";
650         public static final String SORT_DELEGATE_FULL_NAME = "delegateFullName";
651         public static final String SORT_ROUTE_MODULE_NAME = "routeModuleName";
652         public static final String SORT_WORKGROUP_ID = "workGroupId";
653         public static final String SORT_WORKGROUP_ID_NUMBER = "workGroupIdNumber";
654         public static final String SORT_WORKGROUP_NAME = "workGroupName";
655         public static final String SORT_WORKGROUP_FULL_NAME = "workGroupFullName";
656         public static final String SORT_USER_FULL_NAME = "userFullName";
657         public static final String SORT_USER_NETWORK_ID = "userNetworkId";
658         public static final String SORT_MONITOR_ID_NUMBER = "monitorId";
659         public static final String SORT_MONITOR_DOC_TYPE = "monitorDocType";
660         public static final String SORT_MONITOR_TYPE = "monitorType";
661         public static final String SORT_MONITOR_TIMER = "monitorTimer";
662         public static final String SORT_MONITOR_ACTION_TYPE = "monitorActionType";
663     }
664 
665     public static final String WORKGROUP = "workgroup";
666     public static final String PERSON = "person";
667     public static final String ROLE = "role";
668 
669     public static final String DOC_HANDLER_RETURN_URL = "docHandlerReturnUrl";
670     //document operation constants
671     public static final String ADD = "add";
672     public static final String NOOP = "noop";
673     public static final String UPDATE = "update";
674     public static final String DELETE = "delete";
675     public static final String TIMESTAMP_DATE_FORMAT_PATTERN = "yyyy-mm-dd hh:mm:ss.fffffffff";
676     public static final String TIMESTAMP_DATE_FORMAT_PATTERN2 = "MM/dd/yyyy hh:mm a";
677 
678     public static final Map<String, String> ACTION_REQUEST_RECIPIENT_TYPE;
679     static {
680         ACTION_REQUEST_RECIPIENT_TYPE = new HashMap<String, String>();
681         ACTION_REQUEST_RECIPIENT_TYPE.put(KEWConstants.ACTION_REQUEST_GROUP_RECIPIENT_CD, KEWConstants.WORKGROUP);
682         ACTION_REQUEST_RECIPIENT_TYPE.put(KEWConstants.ACTION_REQUEST_USER_RECIPIENT_CD, KEWConstants.PERSON);
683         ACTION_REQUEST_RECIPIENT_TYPE.put(KEWConstants.ACTION_REQUEST_ROLE_RECIPIENT_CD, KEWConstants.ROLE);
684     }
685 
686     public static final Map<String, String> ACTION_REQUEST_CD;
687     static{
688         ACTION_REQUEST_CD = new HashMap<String, String>();
689         ACTION_REQUEST_CD.put(KEWConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ, KEWConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ_LABEL);
690         ACTION_REQUEST_CD.put(KEWConstants.ACTION_REQUEST_APPROVE_REQ, KEWConstants.ACTION_REQUEST_APPROVE_REQ_LABEL);
691         ACTION_REQUEST_CD.put(KEWConstants.ACTION_REQUEST_COMPLETE_REQ, KEWConstants.ACTION_REQUEST_COMPLETE_REQ_LABEL);
692         ACTION_REQUEST_CD.put(KEWConstants.ACTION_REQUEST_FYI_REQ, KEWConstants.ACTION_REQUEST_FYI_REQ_LABEL);
693     }
694 
695     public static final Map<String, String> ACTION_REQUEST_STATUS;
696     static {
697         ACTION_REQUEST_STATUS = new HashMap<String, String>();
698         ACTION_REQUEST_STATUS.put(KEWConstants.ACTION_REQUEST_ACTIVATED, KEWConstants.ACTIVE_LABEL);
699         ACTION_REQUEST_STATUS.put(KEWConstants.ACTION_REQUEST_INITIALIZED, KEWConstants.ACTION_REQUEST_INITIALIZED_LABEL);
700         ACTION_REQUEST_STATUS.put(KEWConstants.ACTION_REQUEST_DONE_STATE, KEWConstants.ACTION_REQUEST_DONE_STATE_LABEL);
701     }
702 
703     public static final Map<String, String> ACTION_TAKEN_CD;
704     static{
705         ACTION_TAKEN_CD = new HashMap<String, String>();
706         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_ACKNOWLEDGED_CD, KEWConstants.ACTION_TAKEN_ACKNOWLEDGED);
707         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_ADHOC_CD, KEWConstants.ACTION_TAKEN_ADHOC);
708         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_ADHOC_REVOKED_CD, KEWConstants.ACTION_TAKEN_ADHOC_REVOKED);
709         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_APPROVED_CD, KEWConstants.ACTION_TAKEN_APPROVED);
710         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_BLANKET_APPROVE_CD, KEWConstants.ACTION_TAKEN_BLANKET_APPROVE);
711         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_CANCELED_CD, KEWConstants.ACTION_TAKEN_CANCELED);
712         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_COMPLETED_CD, KEWConstants.ACTION_TAKEN_COMPLETED);
713         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_DENIED_CD, KEWConstants.ACTION_TAKEN_DENIED);
714         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_FYI_CD, KEWConstants.ACTION_TAKEN_FYI);
715         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SAVED_CD, KEWConstants.ACTION_TAKEN_SAVED);
716         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_RETURNED_TO_PREVIOUS_CD, KEWConstants.ACTION_TAKEN_RETURNED_TO_PREVIOUS);
717         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_LOG_DOCUMENT_ACTION_CD, KEWConstants.ACTION_TAKEN_LOG_DOCUMENT_ACTION);
718         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_APPROVED_CD, KEWConstants.ACTION_TAKEN_SU_APPROVED);
719         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_CANCELED_CD, KEWConstants.ACTION_TAKEN_SU_CANCELED);
720         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_DISAPPROVED_CD, KEWConstants.ACTION_TAKEN_SU_DISAPPROVED);
721         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED_CD, KEWConstants.ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED);
722         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED_CD, KEWConstants.ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED);
723         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS_CD, KEWConstants.ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS);
724         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY_CD, KEWConstants.ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY);
725         ACTION_TAKEN_CD.put(KEWConstants.ACTION_TAKEN_MOVE_CD, KEWConstants.ACTION_TAKEN_MOVE);
726     }
727 
728     public static final String DOCUMENT_CONTENT_ELEMENT = "documentContent";
729     public static final String ATTRIBUTE_CONTENT_ELEMENT = "attributeContent";
730     public static final String SEARCHABLE_CONTENT_ELEMENT = "searchableContent";
731     public static final String APPLICATION_CONTENT_ELEMENT = "applicationContent";
732     public static final String DEFAULT_DOCUMENT_CONTENT = "<"+DOCUMENT_CONTENT_ELEMENT+"/>";
733     public static final String DEFAULT_DOCUMENT_CONTENT2 = "<"+DOCUMENT_CONTENT_ELEMENT+"></"+DOCUMENT_CONTENT_ELEMENT+">";
734 
735     public static final String DOCUMENT_CONTENT_VERSION_1 = "1";
736     public static final String DOCUMENT_CONTENT_VERSION_2 = "2";
737 
738     public static final String XML_FILE_NOT_FOUND = "general.error.filenotfound";
739     public static final String XML_PARSE_ERROR = "general.error.parsexml";
740 
741 
742 
743     public static final String RULE_ATTRIBUTE_TYPE = "RuleAttribute";
744     public static final String SEARCHABLE_ATTRIBUTE_TYPE = "SearchableAttribute";
745     public static final String RULE_XML_ATTRIBUTE_TYPE = "RuleXmlAttribute";
746     public static final String SEARCHABLE_XML_ATTRIBUTE_TYPE = "SearchableXmlAttribute";
747     public static final String EXTENSION_ATTRIBUTE_TYPE = "ExtensionAttribute";
748     public static final String EMAIL_ATTRIBUTE_TYPE = "EmailAttribute";
749     public static final String NOTE_ATTRIBUTE_TYPE = "NoteAttribute";
750     public static final String ACTION_LIST_ATTRIBUTE_TYPE = "ActionListAttribute";
751     public static final String RULE_VALIDATION_ATTRIBUTE_TYPE = "RuleValidationAttribute";
752     public static final String SEARCH_CRITERIA_PROCESSOR_ATTRIBUTE_TYPE = "DocumentSearchCriteriaProcessorAttribute";
753     public static final String SEARCH_GENERATOR_ATTRIBUTE_TYPE = "DocumentSearchGeneratorAttribute";
754     public static final String SEARCH_RESULT_PROCESSOR_ATTRIBUTE_TYPE = "DocumentSearchResultProcessorAttribute";
755     public static final String SEARCH_RESULT_XML_PROCESSOR_ATTRIBUTE_TYPE = "DocumentSearchXMLResultProcessorAttribute";
756     public static final String DOCUMENT_SEARCH_SECURITY_FILTER_ATTRIBUTE_TYPE = "DocumentSearchSecurityFilterAttribute";
757     public static final String QUALIFIER_RESOLVER_ATTRIBUTE_TYPE = "QualifierResolver";
758 
759     public static final String RULE_ATTRIBUTE_TYPE_LABEL = "Rule Attribute";
760     public static final String SEARCHABLE_ATTRIBUTE_TYPE_LABEL = "Searchable Attribute";
761     public static final String RULE_XML_ATTRIBUTE_TYPE_LABEL = "Rule Xml Attribute";
762     public static final String SEARCHABLE_XML_ATTRIBUTE_TYPE_LABEL = "Searchable Xml Attribute";
763     public static final String EXTENSION_ATTRIBUTE_TYPE_LABEL = "Extension Attribute";
764     public static final String EMAIL_ATTRIBUTE_TYPE_LABEL = "Email Attribute";
765     public static final String NOTE_ATTRIBUTE_TYPE_LABEL = "Note Attribute";
766     public static final String ACTION_LIST_ATTRIBUTE_TYPE_LABEL = "Action List Attribute";
767     public static final String RULE_VALIDATION_ATTRIBUTE_TYPE_LABEL = "Rule Validation Attribute";
768     public static final String SEARCH_CRITERIA_PROCESSOR_ATTRIBUTE_TYPE_LABEL = "Document Search Criteria Processor Attribute";
769     public static final String SEARCH_GENERATOR_ATTRIBUTE_TYPE_LABEL = "Document Search Generator Attribute";
770     public static final String SEARCH_RESULT_PROCESSOR_ATTRIBUTE_TYPE_LABEL = "Document Search Result Processor Attribute";
771     public static final String SEARCH_RESULT_XML_PROCESSOR_ATTRIBUTE_TYPE_LABEL = "Document Search Result Processor XML Attribute";
772     public static final String DOCUMENT_SEARCH_SECURITY_FILTER_ATTRIBUTE_TYPE_LABEL = "Document Search Security Filter Attribute";
773     public static final String QUALIFIER_RESOLVER_ATTRIBUTE_TYPE_LABEL = "Qualifier Resolver";
774 
775     public static final String[] RULE_ATTRIBUTE_TYPES = {
776     	RULE_ATTRIBUTE_TYPE,
777         SEARCHABLE_ATTRIBUTE_TYPE,
778         RULE_XML_ATTRIBUTE_TYPE,
779         SEARCHABLE_XML_ATTRIBUTE_TYPE,
780         EXTENSION_ATTRIBUTE_TYPE,
781         EMAIL_ATTRIBUTE_TYPE,
782         NOTE_ATTRIBUTE_TYPE,
783         ACTION_LIST_ATTRIBUTE_TYPE,
784         RULE_VALIDATION_ATTRIBUTE_TYPE,
785         SEARCH_CRITERIA_PROCESSOR_ATTRIBUTE_TYPE,
786         SEARCH_GENERATOR_ATTRIBUTE_TYPE,
787         SEARCH_RESULT_PROCESSOR_ATTRIBUTE_TYPE,
788         SEARCH_RESULT_XML_PROCESSOR_ATTRIBUTE_TYPE,
789         DOCUMENT_SEARCH_SECURITY_FILTER_ATTRIBUTE_TYPE,
790         QUALIFIER_RESOLVER_ATTRIBUTE_TYPE
791     };
792 
793     public static final Map<String, String> RULE_ATTRIBUTE_TYPE_MAP;
794     static {
795     	RULE_ATTRIBUTE_TYPE_MAP = new HashMap<String, String>();
796     	RULE_ATTRIBUTE_TYPE_MAP.put(RULE_ATTRIBUTE_TYPE, RULE_ATTRIBUTE_TYPE_LABEL);
797         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCHABLE_ATTRIBUTE_TYPE, SEARCHABLE_ATTRIBUTE_TYPE_LABEL);
798         RULE_ATTRIBUTE_TYPE_MAP.put(RULE_XML_ATTRIBUTE_TYPE, RULE_XML_ATTRIBUTE_TYPE_LABEL);
799         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCHABLE_XML_ATTRIBUTE_TYPE, SEARCHABLE_XML_ATTRIBUTE_TYPE_LABEL);
800         RULE_ATTRIBUTE_TYPE_MAP.put(EXTENSION_ATTRIBUTE_TYPE, EXTENSION_ATTRIBUTE_TYPE_LABEL);
801         RULE_ATTRIBUTE_TYPE_MAP.put(EMAIL_ATTRIBUTE_TYPE, EMAIL_ATTRIBUTE_TYPE_LABEL);
802        	RULE_ATTRIBUTE_TYPE_MAP.put(NOTE_ATTRIBUTE_TYPE, NOTE_ATTRIBUTE_TYPE_LABEL);
803         RULE_ATTRIBUTE_TYPE_MAP.put(ACTION_LIST_ATTRIBUTE_TYPE, ACTION_LIST_ATTRIBUTE_TYPE_LABEL);
804         RULE_ATTRIBUTE_TYPE_MAP.put(RULE_VALIDATION_ATTRIBUTE_TYPE, RULE_VALIDATION_ATTRIBUTE_TYPE_LABEL);
805         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCH_CRITERIA_PROCESSOR_ATTRIBUTE_TYPE, SEARCH_CRITERIA_PROCESSOR_ATTRIBUTE_TYPE_LABEL);
806         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCH_GENERATOR_ATTRIBUTE_TYPE, SEARCH_GENERATOR_ATTRIBUTE_TYPE_LABEL);
807         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCH_RESULT_PROCESSOR_ATTRIBUTE_TYPE, SEARCH_RESULT_PROCESSOR_ATTRIBUTE_TYPE_LABEL);
808         RULE_ATTRIBUTE_TYPE_MAP.put(SEARCH_RESULT_XML_PROCESSOR_ATTRIBUTE_TYPE, SEARCH_RESULT_XML_PROCESSOR_ATTRIBUTE_TYPE_LABEL);
809         RULE_ATTRIBUTE_TYPE_MAP.put(DOCUMENT_SEARCH_SECURITY_FILTER_ATTRIBUTE_TYPE, DOCUMENT_SEARCH_SECURITY_FILTER_ATTRIBUTE_TYPE_LABEL);
810         RULE_ATTRIBUTE_TYPE_MAP.put(QUALIFIER_RESOLVER_ATTRIBUTE_TYPE, QUALIFIER_RESOLVER_ATTRIBUTE_TYPE_LABEL);
811     };
812 
813     public static final String DAILY = "daily";
814     public static final String WEEKLY = "weekly";
815     public static final Long EMAIL_QUEUE_ENTRY_ROUTE_HEADER_ID = new Long(-1);
816     public static final int MAX_ANNOTATION_LENGTH = 2000;
817     public static final String XML_FILE_PARSE_ERROR = "general.error.parsexml";
818 
819 
820     public static final Long MACHINE_GENERATED_RESPONSIBILITY_ID = new Long(0);
821     public static final Long ADHOC_REQUEST_RESPONSIBILITY_ID = new Long(-1);
822     public static final Long EXCEPTION_REQUEST_RESPONSIBILITY_ID = new Long(-2);
823     public static final Long SAVED_REQUEST_RESPONSIBILITY_ID = new Long(-3);
824 
825     public static final int DEFAULT_WEB_SERVICE_RETRY = 1;
826 
827     public static final String PRIMARY_PROCESS_NAME = "PRIMARY";
828     public static final String PRIMARY_BRANCH_NAME = "PRIMARY";
829     public static final String DEFAULT_EXCEPTION_PROCESS_NAME = "exception";
830 
831     // Document type versions
832     public static final String ROUTING_VERSION_ROUTE_LEVEL = "1";
833     public static final String ROUTING_VERSION_NODAL = "2";
834     public static final String CURRENT_ROUTING_VERSION = ROUTING_VERSION_NODAL;
835 
836     // Document and Action Request versions
837     public static final int DOCUMENT_VERSION_ROUTE_LEVEL = 0;
838     public static final int DOCUMENT_VERSION_NODAL = 1;
839     public static final int CURRENT_DOCUMENT_VERSION = DOCUMENT_VERSION_NODAL;
840 
841     public static final String EDL_ATTRIBUTE_GLOBAL_ERROR_KEY = "global";
842     public static final String POST_PROCESSOR_FAILURE_MESSAGE = "PostProcessor failed to process document: ";
843 
844     public static final String DEFAULT_CONFIG_LOCATION_PARAM = "default.config.location";
845     public static final String DEFAULT_APPLICATION_CONFIG_LOCATION = "classpath:META-INF/workflow.xml";
846     public static final String DEFAULT_SERVER_CONFIG_LOCATION = "classpath:META-INF/server-workflow.xml";
847     public static final String DEFAULT_GLOBAL_CONFIG_LOCATION = "classpath:META-INF/kew-config-defaults.xml";
848     public static final String ADDITIONAL_CONFIG_LOCATIONS_PARAM = "additional.config.locations";
849 
850     // client protocols
851     public static final String WEBSERVICE_CLIENT_PROTOCOL = "webservice";
852     public static final String LOCAL_CLIENT_PROTOCOL = "local";
853     public static final String EMBEDDED_CLIENT_PROTOCOL = "embedded";
854     public static final String RMI_CLIENT_PROTOCOL = "rmi";
855     public static final String SPRING_INVOKER_CLIENT_PROTOCOL = "springInvoker";
856 
857     public static final Set<String> CLIENT_PROTOCOLS = new HashSet<String>();
858     static {
859     	CLIENT_PROTOCOLS.add(LOCAL_CLIENT_PROTOCOL);
860     	CLIENT_PROTOCOLS.add(EMBEDDED_CLIENT_PROTOCOL);
861     	CLIENT_PROTOCOLS.add(WEBSERVICE_CLIENT_PROTOCOL);
862     	CLIENT_PROTOCOLS.add(RMI_CLIENT_PROTOCOL);
863     }
864 
865     // system branch state keys
866     public static final String POST_PROCESSOR_PROCESSED_KEY = "System.PostProcessorProcessed";
867     public static final String POST_PROCESSOR_FINAL_KEY = "System.PostProcessorFinal";
868     public static final String POST_PROCESSOR_NON_DEFINED_VALUE = "none";
869 
870     // custom http header keys
871     public static final String DIGITAL_SIGNATURE_HEADER = "KEW_DIGITAL_SIGNATURE";
872 	public static final String KEYSTORE_ALIAS_HEADER = "KEW_KEYSTORE_ALIAS";
873 
874 	public static final int DEFAULT_TRANSACTION_TIMEOUT_SECONDS = 3600;
875 
876     public static final String HTML_NON_BREAKING_SPACE = "&nbsp;";
877 
878     public static final String SIMPLE_DOCUMENT_ACTIONS_SECURITY = "simpleDocumentActionsService.security";
879     public static final String DAILY_EMAIL_CRON_EXPRESSION = "dailyEmail.cronExpression";
880     public static final String WEEKLY_EMAIL_CRON_EXPRESSION = "weeklyEmail.cronExpression";
881     public static final String DAILY_EMAIL_ACTIVE = "dailyEmail.active";
882     public static final String WEEKLY_EMAIL_ACTIVE = "weeklyEmail.active";
883 
884     public static final String REMOVE_REPLACE_DOCUMENT_TYPE = "RemoveReplaceUserDocument";
885     public static final String ACTION_LIST_NO_REFRESH = "ActionList.norefresh";
886 
887 
888     // receive future action request contants
889     public static final String RECEIVE_FUTURE_REQUESTS_BRANCH_STATE_KEY = "_receive_future_requests";
890     public static final String DEACTIVATED_FUTURE_REQUESTS_BRANCH_STATE_KEY = "_deactivated_future_requests";
891     public static final String DONT_RECEIVE_FUTURE_REQUESTS_BRANCH_STATE_VALUE = "NO";
892     public static final String RECEIVE_FUTURE_REQUESTS_BRANCH_STATE_VALUE = "YES";
893     public static final String CLEAR_FUTURE_REQUESTS_BRANCH_STATE_VALUE = "CLEAR";
894     public static final String USE_REMOTE_EMAIL_SERVICES = "Email.useRemoteServices";
895 
896     // lookupable column types
897     public static final String LOOKUP_COLUMN_TYPE_TEXT = "text";
898     public static final String LOOKUP_COLUMN_TYPE_INTEGER = "integer";
899     public static final String LOOKUP_COLUMN_TYPE_LONG = "long";
900     public static final String LOOKUP_COLUMN_TYPE_FLOAT = "float";
901     public static final String LOOKUP_COLUMN_TYPE_DATETIME = "datetime";
902 
903     // document search route status qualifiers
904     public static final String DOC_SEARCH_ROUTE_STATUS_QUALIFIER_EXACT = "equal";
905     public static final String DOC_SEARCH_ROUTE_STATUS_QUALIFIER_BEFORE = "before";
906     public static final String DOC_SEARCH_ROUTE_STATUS_QUALIFIER_AFTER = "after";
907     public static final Map<String,String> DOC_SEARCH_ROUTE_STATUS_QUALIFIERS;
908     static {
909         DOC_SEARCH_ROUTE_STATUS_QUALIFIERS = new HashMap<String,String>();
910         DOC_SEARCH_ROUTE_STATUS_QUALIFIERS.put(DOC_SEARCH_ROUTE_STATUS_QUALIFIER_EXACT, "Exactly");
911         DOC_SEARCH_ROUTE_STATUS_QUALIFIERS.put(DOC_SEARCH_ROUTE_STATUS_QUALIFIER_BEFORE, "Before");
912         DOC_SEARCH_ROUTE_STATUS_QUALIFIERS.put(DOC_SEARCH_ROUTE_STATUS_QUALIFIER_AFTER, "After");
913     }
914 
915     // service name constants
916 
917 	public static final String WORKFLOW_UTILITY_SERVICE = "enWorkflowUtilityService";
918 
919 	public static final String WORKFLOW_DOCUMENT_ACTIONS_SERVICE = "enWorkflowDocumentActionsService";
920 
921 	public static final String SIMPLE_DATE_FORMAT_FOR_DATE = RiceConstants.SIMPLE_DATE_FORMAT_FOR_DATE;
922     public static final String SIMPLE_DATE_FORMAT_FOR_TIME = RiceConstants.SIMPLE_DATE_FORMAT_FOR_TIME;
923     public static final String DEFAULT_DATE_FORMAT_PATTERN = RiceConstants.DEFAULT_DATE_FORMAT_PATTERN;
924 
925 	public static final String ACTIONLIST_COMMAND = "displayActionListView";
926 
927 	public static final String ACTIONLIST_INLINE_COMMAND = "displayActionListInlineView";
928 
929 	public static final String EMAIL_COMMAND = "displayEmailView";
930 
931 	public static final String DOCSEARCH_COMMAND = "displayDocSearchView";
932 
933 	public static final String SUPERUSER_COMMAND = "displaySuperUserView";
934 
935 	public static final String HELPDESK_ACTIONLIST_COMMAND = "displayHelpDeskActionListView";
936 
937 	public static final String INITIATE_COMMAND = "initiate";
938 
939 	public static final String COMMAND_PARAMETER = "command";
940 
941 	public static final String ROUTEHEADER_ID_PARAMETER = "docId";
942 
943 	public static final String BACKDOOR_ID_PARAMETER = "backdoorId";
944 
945 	public static final String DOCTYPE_PARAMETER = "docTypeName";
946 
947 	public static final String INITIATE_URL = "initiateURL";
948 
949 	public static final String ADVANCE_SEARCH_URL = "advanceSearchURL";
950 
951 	public static final String DOCHANDLER_METHOD = "dochandlerMethod";
952 
953 	public static final String KEW_NAMESPACE = "KR-WKFLW";
954 
955 	public static final String DEFAULT_RESPONSIBILITY_TEMPLATE_NAME = "Review";
956 
957 	public static final String EXCEPTION_ROUTING_RESPONSIBILITY_TEMPLATE_NAME = "Resolve Exception";
958 
959 	// Permission Details
960 
961 	public static final String DOCUMENT_TYPE_NAME_DETAIL = "documentTypeName";
962 	public static final String ACTION_REQUEST_CD_DETAIL = "actionRequestCd";
963 	public static final String ROUTE_NODE_NAME_DETAIL = "routeNodeName";
964 	public static final String DOCUMENT_STATUS_DETAIL = "routeStatusCode";
965 
966 	// Permissions
967 
968 	public static final String BLANKET_APPROVE_PERMISSION = "Blanket Approve Document";
969 	public static final String AD_HOC_REVIEW_PERMISSION = "Ad Hoc Review Document";
970 	public static final String ADMINISTER_ROUTING_PERMISSION = "Administer Routing for Document";
971 	public static final String CANCEL_PERMISSION = "Cancel Document";
972 	public static final String INITIATE_PERMISSION = "Initiate Document";
973 	public static final String ROUTE_PERMISSION = "Route Document";
974 	public static final String SAVE_PERMISSION = "Save Document";
975 	public static final String ADD_MESSAGE_TO_ROUTE_LOG = "Add Message to Route Log";
976 	
977 
978     // signifies the delimiter character for ingested KIM groups
979     public static final String KIM_GROUP_NAMESPACE_NAME_DELIMITER_CHARACTER = ":";
980 
981     // system parameters
982 	public static final String KIM_PRIORITY_ON_DOC_TYP_PERMS_IND = "KIM_PRIORITY_ON_DOC_TYP_PERMS_IND";
983     public static final String ACTION_LIST_DOCUMENT_POPUP_IND = "ACTION_LIST_DOCUMENT_POPUP_IND";
984     public static final String ACTION_LIST_ROUTE_LOG_POPUP_IND  = "ACTION_LIST_ROUTE_LOG_POPUP_IND";
985     public static final String ACTION_LIST_SEND_EMAIL_NOTIFICATION_IND = "SEND_EMAIL_NOTIFICATION_IND";
986     public static final String SHOW_BACK_DOOR_LOGIN_IND = "SHOW_BACK_DOOR_LOGIN_IND";
987     public static final String RULE_DELEGATE_LIMIT = "DELEGATE_LIMIT";
988     public static final String EMAIL_REMINDER_FROM_ADDRESS = "FROM_ADDRESS";
989     public static final String MAX_NODES_BEFORE_RUNAWAY_PROCESS = "MAXIMUM_NODES_BEFORE_RUNAWAY";
990     public static final String NOTIFICATION_EXCLUDED_USERS_WORKGROUP_NAME_IND = "NOTIFY_EXCLUDED_USERS_IND";
991     public static final String DOC_SEARCH_FETCH_MORE_ITERATION_LIMIT = "FETCH_MORE_ITERATION_LIMIT";
992     public static final String DOCUMENT_SEARCH_DOCUMENT_POPUP_IND = "DOCUMENT_SEARCH_POPUP_IND";
993     public static final String DOCUMENT_SEARCH_ROUTE_LOG_POPUP_IND = "DOCUMENT_SEARCH_ROUTE_LOG_POPUP_IND";
994     public static final String DOC_SEARCH_RESULT_CAP = "RESULT_CAP";
995     public static final String EDL_DEBUG_TRANSFORM_IND = "DEBUG_TRANSFORM_IND";
996     public static final String EDL_USE_XSLTC_IND = "USE_XSLTC_IND";
997     public static final String IS_LAST_APPROVER_ACTIVATE_FIRST_IND = "IS_LAST_APPROVER_ACTIVATE_FIRST_IND";
998     public static final String HELP_DESK_ACTION_LIST = "HELP_DESK_NAME_GROUP";
999     public static final String QUICK_LINKS_RESTRICT_DOCUMENT_TYPES = "RESTRICT_DOCUMENT_TYPES";
1000     public static final String RULE_CUSTOM_DOC_TYPES = "CUSTOM_DOCUMENT_TYPES";
1001     public static final String RULE_GENERATE_ACTION_REQESTS_IND = "GENERATE_ACTION_REQUESTS_IND";
1002     public static final String SHOW_ATTACHMENTS_IND = "SHOW_ATTACHMENTS_IND";
1003     public static final String RULE_CACHE_REQUEUE_DELAY = "RULE_CACHE_REQUEUE_DELAY";
1004     public static final String ACTIONLIST_EMAIL_TEST_ADDRESS = "EMAIL_NOTIFICATION_TEST_ADDRESS";
1005     public static final String SECURE_ATTACHMENTS_PARAM = "SECURED_ATTACHMENT_SERVLET";
1006 
1007     //System parameter value comparisons
1008     public static final String ACTION_LIST_SEND_EMAIL_NOTIFICATION_VALUE = "Y";
1009     public static final String YES_RULE_CHANGE_AR_GENERATION_VALUE = "Y";
1010     public static final String YES_DELEGATE_CHANGE_AR_GENERATION_VALUE = "Y";
1011     public static final String DOCUMENT_SEARCH_ROUTE_LOG_POPUP_VALUE = "Y";
1012     public static final String DOCUMENT_SEARCH_DOCUMENT_POPUP_VALUE = "Y";
1013 
1014     public class PermissionNames {
1015         public static final String VIEW_OTHER_ACTION_LIST = "View Other Action List";
1016         public static final String UNRESTRICTED_DOCUMENT_SEARCH = "Unrestricted Document Search";
1017     }
1018 
1019     // special user used when no other user is available
1020     public static final String SYSTEM_USER = "kr";
1021     public static final String ENABLE_KEN_NOTIFICATION = "rice.kew.enableKENNotification";
1022     
1023 	public static final String ROLEROUTE_QUALIFIER_RESOLVER_ELEMENT = "qualifierResolver";
1024 	public static final String ROLEROUTE_QUALIFIER_RESOLVER_CLASS_ELEMENT = "qualifierResolverClass";
1025 	public static final String ROLEROUTE_RESPONSIBILITY_TEMPLATE_NAME_ELEMENT = "responsibilityTemplateName";
1026 	public static final String ROLEROUTE_NAMESPACE_ELEMENT = "namespace";
1027 }