001    /*
002     * file Task.java
003     *
004     * Licensed Materials - Property of IBM
005     * Restricted Materials of IBM
006     *
007     * (c) Copyright IBM Corporation 2004, 2008.  All Rights Reserved. 
008     * Note to U.S. Government Users Restricted Rights:  Use, duplication or  
009     * disclosure restricted by GSA ADP  Schedule Contract with IBM Corp. 
010     */
011    
012    package javax.wvcm;
013    
014    import javax.wvcm.PropertyNameList.PropertyName;
015    import javax.wvcm.WvcmException.ReasonCode;
016    
017    /**
018     * A proxy for a task resource.
019     * 
020     * A task resource provides the motivation for the logical change performed by an activity.
021     * A variety of terms are used in various systems for a task, including change request,
022     * modification request, change order, and workitem.
023     * 
024     * @since 1.0
025     */
026    public interface Task extends Resource {
027    
028        /**
029         * Create a new persistent task, where the provider can allocate the location for the
030         * new task.
031         * The provider should use the client-specified location if it is valid,
032         * but can select a different location if the location is not valid
033         * or already identifies a task.
034         * <p>
035         * Postconditions:
036         * <li>(initialize-resource): A new task resource exists at the location of this Resource.
037         * 
038         * @param feedback Specifies optional feedback to the caller.
039         * @return A proxy for this new resource, whose properties are specified by feedback.
040         * @throws WvcmException ReasonCode:
041         * <li>{@link ReasonCode#CANNOT_CREATE_AT_THIS_LOCATION}:
042         *  If the location of this Task does not identify a repository that supports
043         *  the creation of tasks, the request MUST fail.
044         */
045        public Task doCreateGeneratedResource(Feedback feedback) throws WvcmException;
046    
047        /**
048         * The activities that are performing this task.
049         * This is the inverse of the {@link Activity#TASK_LIST} property.
050         */
051        public static final PropertyName<ResourceList<Activity>> ACTIVITY_LIST =
052            new PropertyName<ResourceList<Activity>>("activity-list"); //$NON-NLS-1$
053    
054        /**
055         * Get the {@link #ACTIVITY_LIST} property.
056         * 
057         * @return the {@link #ACTIVITY_LIST} property.
058         * @throws WvcmException if this Task was not created with
059         * {@link #ACTIVITY_LIST} as a wanted property.
060         */
061        public ResourceList<Activity> getActivityList() throws WvcmException;
062    
063    }