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