View Javadoc

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