001/**
002 * Copyright 2005-2014 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 */
016package org.kuali.rice.kew.api.action;
017
018import org.apache.commons.lang.StringUtils;
019import org.joda.time.DateTime;
020import org.kuali.rice.core.api.CoreConstants;
021import org.kuali.rice.core.api.delegation.DelegationType;
022import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
023import org.kuali.rice.core.api.mo.ModelBuilder;
024import org.kuali.rice.core.api.util.jaxb.DateTimeAdapter;
025import org.kuali.rice.kew.api.KewApiConstants;
026import org.w3c.dom.Element;
027
028import javax.xml.bind.annotation.XmlAccessType;
029import javax.xml.bind.annotation.XmlAccessorType;
030import javax.xml.bind.annotation.XmlAnyElement;
031import javax.xml.bind.annotation.XmlElement;
032import javax.xml.bind.annotation.XmlElementWrapper;
033import javax.xml.bind.annotation.XmlRootElement;
034import javax.xml.bind.annotation.XmlType;
035import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
036import java.io.Serializable;
037import java.util.ArrayList;
038import java.util.Collection;
039import java.util.Collections;
040import java.util.List;
041
042@XmlRootElement(name = ActionRequest.Constants.ROOT_ELEMENT_NAME)
043@XmlAccessorType(XmlAccessType.NONE)
044@XmlType(name = ActionRequest.Constants.TYPE_NAME, propOrder = {
045                ActionRequest.Elements.ID,
046            ActionRequest.Elements.ACTION_REQUESTED_CODE,
047            ActionRequest.Elements.STATUS_CODE,
048            ActionRequest.Elements.CURRENT,
049            ActionRequest.Elements.DATE_CREATED,
050            ActionRequest.Elements.RESPONSIBILITY_ID,
051            ActionRequest.Elements.DOCUMENT_ID,
052                ActionRequest.Elements.PRIORITY,
053        ActionRequest.Elements.ROUTE_LEVEL,
054                ActionRequest.Elements.ANNOTATION,
055                ActionRequest.Elements.RECIPIENT_TYPE_CODE,
056                ActionRequest.Elements.PRINCIPAL_ID,
057                ActionRequest.Elements.GROUP_ID,
058                ActionRequest.Elements.REQUEST_POLICY_CODE,
059                ActionRequest.Elements.RESPONSIBILITY_DESCRIPTION,
060                ActionRequest.Elements.FORCE_ACTION,
061                ActionRequest.Elements.DELEGATION_TYPE_CODE,
062                ActionRequest.Elements.ROLE_NAME,
063                ActionRequest.Elements.QUALIFIED_ROLE_NAME,
064                ActionRequest.Elements.QUALIFIED_ROLE_NAME_LABEL,
065                ActionRequest.Elements.ROUTE_NODE_INSTANCE_ID,
066                ActionRequest.Elements.NODE_NAME,
067                ActionRequest.Elements.REQUEST_LABEL,
068                ActionRequest.Elements.PARENT_ACTION_REQUEST_ID,
069                ActionRequest.Elements.ACTION_TAKEN,
070                ActionRequest.Elements.CHILD_REQUESTS,
071                CoreConstants.CommonElements.FUTURE_ELEMENTS
072})
073public final class ActionRequest extends AbstractDataTransferObject implements ActionRequestContract {
074
075        private static final long serialVersionUID = -7581089059447119201L;
076
077        @XmlElement(name = Elements.ID, required = true)
078    private final String id;
079    
080    @XmlElement(name = Elements.ACTION_REQUESTED_CODE, required = true)
081    private final String actionRequestedCode;
082    
083    @XmlElement(name = Elements.STATUS_CODE, required = true)
084    private final String statusCode;
085    
086    @XmlElement(name = Elements.CURRENT, required = true)
087    private final boolean current;
088    
089    @XmlElement(name = Elements.DATE_CREATED, required = true)
090    @XmlJavaTypeAdapter(DateTimeAdapter.class)
091    private final DateTime dateCreated;
092    
093    @XmlElement(name = Elements.RESPONSIBILITY_ID, required = true)
094    private final String responsibilityId;
095    
096    @XmlElement(name = Elements.DOCUMENT_ID, required = true)
097    private final String documentId;
098        
099    @XmlElement(name = Elements.PRIORITY, required = true)
100    private final int priority;
101
102    @XmlElement(name = Elements.ROUTE_LEVEL, required = true)
103    private final int routeLevel;
104
105    @XmlElement(name = Elements.ANNOTATION, required = false)
106    private final String annotation;
107    
108    @XmlElement(name = Elements.RECIPIENT_TYPE_CODE, required = true)
109    private final String recipientTypeCode;
110    
111    @XmlElement(name = Elements.PRINCIPAL_ID, required = false)
112    private final String principalId;
113    
114    @XmlElement(name = Elements.GROUP_ID, required = false)
115    private final String groupId;
116    
117    @XmlElement(name = Elements.REQUEST_POLICY_CODE, required = false)
118    private final String requestPolicyCode;
119    
120    @XmlElement(name = Elements.RESPONSIBILITY_DESCRIPTION, required = false)
121    private final String responsibilityDescription;
122    
123    @XmlElement(name = Elements.FORCE_ACTION, required = true)
124    private final boolean forceAction;
125    
126    @XmlElement(name = Elements.DELEGATION_TYPE_CODE, required = false)
127    private final String delegationTypeCode;
128    
129    @XmlElement(name = Elements.ROLE_NAME, required = false)
130    private final String roleName;
131    
132    @XmlElement(name = Elements.QUALIFIED_ROLE_NAME, required = false)
133    private final String qualifiedRoleName;
134    
135    @XmlElement(name = Elements.QUALIFIED_ROLE_NAME_LABEL, required = false)
136    private final String qualifiedRoleNameLabel;
137    
138    @XmlElement(name = Elements.ROUTE_NODE_INSTANCE_ID, required = false)
139    private final String routeNodeInstanceId;
140    
141    @XmlElement(name = Elements.NODE_NAME, required = false)
142    private final String nodeName;
143    
144    @XmlElement(name = Elements.REQUEST_LABEL, required = false)
145    private final String requestLabel;
146    
147    @XmlElement(name = Elements.PARENT_ACTION_REQUEST_ID, required = false)
148    private final String parentActionRequestId;
149    
150    @XmlElement(name = Elements.ACTION_TAKEN, required = false)
151    private final ActionTaken actionTaken;
152    
153    @XmlElementWrapper(name = Elements.CHILD_REQUESTS, required = false)
154    @XmlElement(name = Elements.CHILD_REQUEST, required = false)
155    private final List<ActionRequest> childRequests;
156    
157    @SuppressWarnings("unused")
158    @XmlAnyElement
159    private final Collection<Element> _futureElements = null;
160
161    /**
162     * Private constructor used only by JAXB.
163     */
164    private ActionRequest() {
165        this.id = null;
166        this.actionRequestedCode = null;
167        this.statusCode = null;
168        this.current = false;
169        this.dateCreated = null;
170        this.responsibilityId = null;
171        this.documentId = null;
172        this.priority = 0;
173        this.routeLevel = 0;
174        this.annotation = null;
175        this.recipientTypeCode = null;
176        this.principalId = null;
177        this.groupId = null;
178        this.requestPolicyCode = null;
179        this.responsibilityDescription = null;
180        this.forceAction = false;
181        this.delegationTypeCode = null;
182        this.roleName = null;
183        this.qualifiedRoleName = null;
184        this.qualifiedRoleNameLabel = null;
185        this.routeNodeInstanceId = null;
186        this.nodeName = null;
187        this.requestLabel = null;
188        this.parentActionRequestId = null;
189        this.actionTaken = null;
190        this.childRequests = null;
191    }
192
193    private ActionRequest(Builder builder) {
194        this.id = builder.getId();
195        this.actionRequestedCode = builder.getActionRequested().getCode();
196        this.statusCode = builder.getStatus().getCode();
197        this.current = builder.isCurrent();
198        this.dateCreated = builder.getDateCreated();
199        this.responsibilityId = builder.getResponsibilityId();
200        this.documentId = builder.getDocumentId();
201        this.priority = builder.getPriority();
202        this.routeLevel = builder.getRouteLevel();
203        this.annotation = builder.getAnnotation();
204        this.recipientTypeCode = builder.getRecipientType().getCode();
205        this.principalId = builder.getPrincipalId();
206        this.groupId = builder.getGroupId();
207        if (builder.getRequestPolicy() == null) {
208                this.requestPolicyCode = null;
209        } else {
210                this.requestPolicyCode = builder.getRequestPolicy().getCode();
211        }
212        this.responsibilityDescription = builder.getResponsibilityDescription();
213        this.forceAction = builder.isForceAction();
214        if (builder.getDelegationType() == null) {
215                this.delegationTypeCode = null;
216        } else {
217                this.delegationTypeCode = builder.getDelegationType().getCode();
218        }
219        this.roleName = builder.getRoleName();
220        this.qualifiedRoleName = builder.getQualifiedRoleName();
221        this.qualifiedRoleNameLabel = builder.getQualifiedRoleNameLabel();
222        this.routeNodeInstanceId = builder.getRouteNodeInstanceId();
223        this.nodeName = builder.getNodeName();
224        this.requestLabel = builder.getRequestLabel();
225        this.parentActionRequestId = builder.getParentActionRequestId();
226        ActionTaken.Builder actionTakenBuilder = builder.getActionTaken();
227        if (actionTakenBuilder == null) {
228                this.actionTaken = null;
229        } else {
230                this.actionTaken = actionTakenBuilder.build();
231        }
232        this.childRequests = new ArrayList<ActionRequest>();
233        List<ActionRequest.Builder> childRequestBuilders = builder.getChildRequests();
234        if (childRequestBuilders != null) {
235                for (ActionRequest.Builder childRequestBuilder : childRequestBuilders) {
236                        this.childRequests.add(childRequestBuilder.build());
237                }
238        }
239    }
240
241    @Override
242    public String getAnnotation() {
243        return this.annotation;
244    }
245
246    @Override
247    public int getPriority() {
248        return this.priority;
249    }
250
251    @Override
252    public int getRouteLevel() {
253        return this.routeLevel;
254    }
255
256    @Override
257    public String getId() {
258        return this.id;
259    }
260
261    @Override
262    public ActionRequestType getActionRequested() {
263        return ActionRequestType.fromCode(this.actionRequestedCode);
264    }
265
266    @Override
267    public ActionRequestStatus getStatus() {
268        return ActionRequestStatus.fromCode(this.statusCode);
269    }
270
271    @Override
272    public boolean isCurrent() {
273        return this.current;
274    }
275
276    @Override
277    public DateTime getDateCreated() {
278        return this.dateCreated;
279    }
280
281    @Override
282    public String getResponsibilityId() {
283        return this.responsibilityId;
284    }
285
286    @Override
287    public String getDocumentId() {
288        return this.documentId;
289    }
290
291    @Override
292    public RecipientType getRecipientType() {
293        return RecipientType.fromCode(this.recipientTypeCode);
294    }
295
296    @Override
297    public String getPrincipalId() {
298        return this.principalId;
299    }
300
301    @Override
302    public String getGroupId() {
303        return this.groupId;
304    }
305
306    @Override
307    public ActionRequestPolicy getRequestPolicy() {
308        if (this.requestPolicyCode == null) {
309                return null;
310        }
311        return ActionRequestPolicy.fromCode(this.requestPolicyCode);
312    }
313
314    @Override
315    public String getResponsibilityDescription() {
316        return this.responsibilityDescription;
317    }
318
319    @Override
320    public boolean isForceAction() {
321        return this.forceAction;
322    }
323
324    @Override
325    public DelegationType getDelegationType() {
326        if (this.delegationTypeCode == null) {
327                return null;
328        }
329        return DelegationType.fromCode(this.delegationTypeCode);
330    }
331
332    @Override
333    public String getRoleName() {
334        return this.roleName;
335    }
336
337    @Override
338    public String getQualifiedRoleName() {
339        return this.qualifiedRoleName;
340    }
341
342    @Override
343    public String getQualifiedRoleNameLabel() {
344        return this.qualifiedRoleNameLabel;
345    }
346
347    @Override
348    public String getRouteNodeInstanceId() {
349        return this.routeNodeInstanceId;
350    }
351    
352    @Override
353    public String getNodeName() {
354        return this.nodeName;
355    }
356
357    @Override
358    public String getRequestLabel() {
359        return this.requestLabel;
360    }
361
362    @Override
363    public String getParentActionRequestId() {
364        return this.parentActionRequestId;
365    }
366
367    @Override
368    public ActionTaken getActionTaken() {
369        return this.actionTaken;
370    }
371    
372    @Override
373    public List<ActionRequest> getChildRequests() {
374        if (this.childRequests == null) {
375                return Collections.emptyList();
376        } else {
377                return Collections.unmodifiableList(this.childRequests);
378        }
379    }
380
381    public boolean isAdHocRequest() {
382        return KewApiConstants.ADHOC_REQUEST_RESPONSIBILITY_ID.equals(getResponsibilityId());
383    }
384
385    public boolean isGeneratedRequest() {
386        return KewApiConstants.MACHINE_GENERATED_RESPONSIBILITY_ID.equals(getResponsibilityId());
387    }
388
389    public boolean isExceptionRequest() {
390        return KewApiConstants.EXCEPTION_REQUEST_RESPONSIBILITY_ID.equals(getResponsibilityId());
391    }
392
393    public boolean isRouteModuleRequest() {
394        return getResponsibilityId() != null && Long.parseLong(getResponsibilityId()) > 0;
395    }
396    
397    public boolean isNotificationRequest() {
398        return isAcknowledgeRequest() || isFyiRequest();
399    }
400
401    public boolean isApprovalRequest() {
402        return ActionRequestType.APPROVE == getActionRequested() || ActionRequestType.COMPLETE == getActionRequested();
403    }
404
405    public boolean isAcknowledgeRequest() {
406        return ActionRequestType.ACKNOWLEDGE == getActionRequested();
407    }
408
409    public boolean isFyiRequest() {
410        return ActionRequestType.FYI == getActionRequested();
411    }
412
413    public boolean isPending() {
414        return isInitialized() || isActivated();
415    }
416
417    public boolean isCompleteRequest() {
418        return ActionRequestType.COMPLETE == getActionRequested();
419    }
420
421    public boolean isInitialized() {
422        return ActionRequestStatus.INITIALIZED == getStatus();
423    }
424
425    public boolean isActivated() {
426        return ActionRequestStatus.ACTIVATED == getStatus();
427    }
428
429    public boolean isDone() {
430        return ActionRequestStatus.DONE == getStatus();
431    }
432
433    public boolean isUserRequest() {
434        return RecipientType.PRINCIPAL == getRecipientType();
435    }
436
437    public boolean isGroupRequest() {
438        return RecipientType.GROUP == getRecipientType();
439    }
440
441    public boolean isRoleRequest() {
442        return RecipientType.ROLE == getRecipientType();
443    }
444    
445    public List<ActionRequest> flatten() {
446        List<ActionRequest> flattenedRequests = new ArrayList<ActionRequest>();
447        flattenedRequests.add(this);
448        for (ActionRequest childRequest : getChildRequests()) {
449                flattenedRequests.addAll(childRequest.flatten());
450        }
451        return Collections.unmodifiableList(flattenedRequests);
452    }
453
454    /**
455     * A builder which can be used to construct {@link ActionRequest} instances.  Enforces the constraints of the {@link ActionRequestContract}.
456     */
457    public final static class Builder implements Serializable, ModelBuilder, ActionRequestContract {
458
459                private static final long serialVersionUID = -1354211147778354091L;
460
461                private String id;
462        private ActionRequestType actionRequested;
463        private ActionRequestStatus status;
464        private boolean current;
465        private DateTime dateCreated;
466        private String responsibilityId;
467        private String documentId;
468        private int priority;
469        private int routeLevel;
470        private String annotation;
471        private RecipientType recipientType;
472        private String principalId;
473        private String groupId;
474        private ActionRequestPolicy requestPolicy;
475        private String responsibilityDescription;
476        private boolean forceAction;
477        private DelegationType delegationType;
478        private String roleName;
479        private String qualifiedRoleName;
480        private String qualifiedRoleNameLabel;
481        private String routeNodeInstanceId;
482        private String nodeName;
483        private String requestLabel;
484        private String parentActionRequestId;
485        private ActionTaken.Builder actionTaken;
486        private List<ActionRequest.Builder> childRequests;
487
488        private Builder(String id, ActionRequestType actionRequested, ActionRequestStatus status, String responsibilityId, String documentId, RecipientType recipientType) {
489            setId(id);
490            setActionRequested(actionRequested);
491            setStatus(status);
492            setResponsibilityId(responsibilityId);
493            setDocumentId(documentId);
494            setRecipientType(recipientType);
495            setCurrent(true);
496            setDateCreated(new DateTime());
497        }
498
499        public static Builder create(String id, ActionRequestType actionRequested, ActionRequestStatus status, String responsibilityId, String documentId, RecipientType recipientType) {
500            return new Builder(id, actionRequested, status, responsibilityId, documentId, recipientType);
501        }
502
503        public static Builder create(ActionRequestContract contract) {
504            if (contract == null) {
505                throw new IllegalArgumentException("contract was null");
506            }
507            // TODO if create() is modified to accept required parameters, this will need to be modified
508            Builder builder = create(contract.getId(), contract.getActionRequested(), contract.getStatus(), contract.getResponsibilityId(), contract.getDocumentId(), contract.getRecipientType());
509            builder.setCurrent(contract.isCurrent());
510            builder.setDateCreated(contract.getDateCreated());
511            builder.setPriority(contract.getPriority());
512            builder.setRouteLevel(contract.getRouteLevel());
513            builder.setAnnotation(contract.getAnnotation());
514            builder.setPrincipalId(contract.getPrincipalId());
515            builder.setGroupId(contract.getGroupId());
516            builder.setRequestPolicy(contract.getRequestPolicy());
517            builder.setResponsibilityDescription(contract.getResponsibilityDescription());
518            builder.setForceAction(contract.isForceAction());
519            builder.setDelegationType(contract.getDelegationType());
520            builder.setRoleName(contract.getRoleName());
521            builder.setQualifiedRoleName(contract.getQualifiedRoleName());
522            builder.setQualifiedRoleNameLabel(contract.getQualifiedRoleNameLabel());
523            builder.setNodeName(contract.getNodeName());
524            builder.setRequestLabel(contract.getRequestLabel());
525            builder.setParentActionRequestId(contract.getParentActionRequestId());
526            if (contract.getActionTaken() != null) {
527                builder.setActionTaken(ActionTaken.Builder.create(contract.getActionTaken()));
528            }
529            List<ActionRequest.Builder> actionRequestBuilders = new ArrayList<ActionRequest.Builder>();
530            for (ActionRequestContract actionRequest : contract.getChildRequests()) {
531                actionRequestBuilders.add(ActionRequest.Builder.create(actionRequest));
532            }
533            builder.setChildRequests(actionRequestBuilders);
534            return builder;
535        }
536
537        public ActionRequest build() {
538            return new ActionRequest(this);
539        }
540
541        @Override
542        public String getId() {
543            return this.id;
544        }
545
546        @Override
547        public ActionRequestType getActionRequested() {
548            return this.actionRequested;
549        }
550
551        @Override
552        public ActionRequestStatus getStatus() {
553            return this.status;
554        }
555
556        @Override
557        public boolean isCurrent() {
558            return this.current;
559        }
560
561        @Override
562        public DateTime getDateCreated() {
563            return this.dateCreated;
564        }
565
566        @Override
567        public String getResponsibilityId() {
568            return this.responsibilityId;
569        }
570
571        @Override
572        public String getDocumentId() {
573            return this.documentId;
574        }
575
576        @Override
577        public int getPriority() {
578            return this.priority;
579        }
580
581        @Override
582        public int getRouteLevel() {
583            return this.routeLevel;
584        }
585
586        @Override
587        public String getAnnotation() {
588            return this.annotation;
589        }
590        
591        @Override
592        public RecipientType getRecipientType() {
593            return this.recipientType;
594        }
595
596        @Override
597        public String getPrincipalId() {
598            return this.principalId;
599        }
600
601        @Override
602        public String getGroupId() {
603            return this.groupId;
604        }
605
606        @Override
607        public ActionRequestPolicy getRequestPolicy() {
608            return this.requestPolicy;
609        }
610
611        @Override
612        public String getResponsibilityDescription() {
613            return this.responsibilityDescription;
614        }
615
616        @Override
617        public boolean isForceAction() {
618            return this.forceAction;
619        }
620
621        @Override
622        public DelegationType getDelegationType() {
623            return this.delegationType;
624        }
625
626        @Override
627        public String getRoleName() {
628            return this.roleName;
629        }
630
631        @Override
632        public String getQualifiedRoleName() {
633            return this.qualifiedRoleName;
634        }
635
636        @Override
637        public String getQualifiedRoleNameLabel() {
638            return this.qualifiedRoleNameLabel;
639        }
640
641        @Override
642        public String getRouteNodeInstanceId() {
643                return this.routeNodeInstanceId;
644        }
645        
646        @Override
647        public String getNodeName() {
648            return this.nodeName;
649        }
650
651        @Override
652        public String getRequestLabel() {
653            return this.requestLabel;
654        }
655
656        @Override
657        public String getParentActionRequestId() {
658            return this.parentActionRequestId;
659        }
660
661        @Override
662        public ActionTaken.Builder getActionTaken() {
663            return this.actionTaken;
664        }
665
666        @Override
667        public List<ActionRequest.Builder> getChildRequests() {
668            return this.childRequests;
669        }
670
671        public void setId(String id) {
672            if (StringUtils.isWhitespace(id)) {
673                throw new IllegalArgumentException("id was null or blank");
674            }
675            this.id = id;
676        }
677
678        public void setActionRequested(ActionRequestType actionRequested) {
679            if (actionRequested == null) {
680                throw new IllegalArgumentException("actionRequested was null");
681            }
682            this.actionRequested = actionRequested;
683        }
684
685        public void setStatus(ActionRequestStatus status) {
686            if (status == null) {
687                throw new IllegalArgumentException("status was null");
688            }
689            this.status = status;
690        }
691
692        public void setCurrent(boolean current) {
693            this.current = current;
694        }
695
696        public void setDateCreated(DateTime dateCreated) {
697                if (dateCreated == null) {
698                        throw new IllegalArgumentException("dateCreated was null");
699                }
700            this.dateCreated = dateCreated;
701        }
702
703        public void setResponsibilityId(String responsibilityId) {
704                if (StringUtils.isBlank(responsibilityId)) {
705                        throw new IllegalArgumentException("responsibilityId was null or blank");
706                }
707            this.responsibilityId = responsibilityId;
708        }
709
710        public void setDocumentId(String documentId) {
711            if (StringUtils.isBlank(documentId)) {
712                throw new IllegalArgumentException("documentId was null or blank");
713            }
714            this.documentId = documentId;
715        }
716
717        public void setPriority(int priority) {
718            this.priority = priority;
719        }
720
721        public void setRouteLevel(int routeLevel) {
722            this.routeLevel = routeLevel;
723        }
724
725        public void setAnnotation(String annotation) {
726            this.annotation = annotation;
727        }
728
729        public void setRecipientType(RecipientType recipientType) {
730                if (recipientType == null) {
731                        throw new IllegalArgumentException("recipientType was null");
732                }
733            this.recipientType = recipientType;
734        }
735
736        public void setPrincipalId(String principalId) {
737            this.principalId = principalId;
738        }
739
740        public void setGroupId(String groupId) {
741            this.groupId = groupId;
742        }
743
744        public void setRequestPolicy(ActionRequestPolicy requestPolicy) {
745            this.requestPolicy = requestPolicy;
746        }
747
748        public void setResponsibilityDescription(String responsibilityDescription) {
749            this.responsibilityDescription = responsibilityDescription;
750        }
751
752        public void setForceAction(boolean forceAction) {
753            this.forceAction = forceAction;
754        }
755
756        public void setDelegationType(DelegationType delegationType) {
757            this.delegationType = delegationType;
758        }
759
760        public void setRoleName(String roleName) {
761            this.roleName = roleName;
762        }
763
764        public void setQualifiedRoleName(String qualifiedRoleName) {
765            this.qualifiedRoleName = qualifiedRoleName;
766        }
767
768        public void setQualifiedRoleNameLabel(String qualifiedRoleNameLabel) {
769            this.qualifiedRoleNameLabel = qualifiedRoleNameLabel;
770        }
771        
772        public void setRouteNodeInstanceId(String routeNodeInstanceId) {
773                this.routeNodeInstanceId = routeNodeInstanceId;
774        }
775
776        public void setNodeName(String nodeName) {
777            this.nodeName = nodeName;
778        }
779
780        public void setRequestLabel(String requestLabel) {
781            this.requestLabel = requestLabel;
782        }
783
784        public void setParentActionRequestId(String parentActionRequestId) {
785            this.parentActionRequestId = parentActionRequestId;
786        }
787
788        public void setActionTaken(ActionTaken.Builder actionTaken) {
789            this.actionTaken = actionTaken;
790        }
791
792        public void setChildRequests(List<ActionRequest.Builder> childRequests) {
793            this.childRequests = childRequests;
794        }
795
796    }
797
798
799    /**
800     * Defines some internal constants used on this class.
801     * 
802     */
803    static class Constants {
804        final static String ROOT_ELEMENT_NAME = "actionRequest";
805        final static String TYPE_NAME = "ActionRequestType";
806    }
807
808
809    /**
810     * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML.
811     * 
812     */
813    static class Elements {
814        final static String ANNOTATION = "annotation";
815        final static String PRIORITY = "priority";
816        final static String ID = "id";
817        final static String ACTION_REQUESTED_CODE = "actionRequestedCode";
818        final static String STATUS_CODE = "statusCode";
819        final static String CURRENT = "current";
820        final static String ROUTE_LEVEL = "routeLevel";
821        final static String DATE_CREATED = "dateCreated";
822        final static String RESPONSIBILITY_ID = "responsibilityId";
823        final static String DOCUMENT_ID = "documentId";
824        final static String RECIPIENT_TYPE_CODE = "recipientTypeCode";
825        final static String PRINCIPAL_ID = "principalId";
826        final static String GROUP_ID = "groupId";
827        final static String REQUEST_POLICY_CODE = "requestPolicyCode";
828        final static String RESPONSIBILITY_DESCRIPTION = "responsibilityDescription";
829        final static String FORCE_ACTION = "forceAction";
830        final static String DELEGATION_TYPE_CODE = "delegationTypeCode";
831        final static String ROLE_NAME = "roleName";
832        final static String QUALIFIED_ROLE_NAME = "qualifiedRoleName";
833        final static String QUALIFIED_ROLE_NAME_LABEL = "qualifiedRoleNameLabel";
834        final static String ROUTE_NODE_INSTANCE_ID = "routeNodeInstanceId";
835        final static String NODE_NAME = "nodeName";
836        final static String REQUEST_LABEL = "requestLabel";
837        final static String PARENT_ACTION_REQUEST_ID = "parentActionRequestId";
838        final static String ACTION_TAKEN = "actionTaken";
839        final static String CHILD_REQUESTS = "childRequests";
840        final static String CHILD_REQUEST = "childRequest";
841    }
842
843}
844