Coverage Report - nextgrid.api.pom.AbstractProcess
 
Classes in this File Line Coverage Branch Coverage Complexity
AbstractProcess
N/A
N/A
0
 
 1  
 /*
 2  
  Copyright (C) 2007 Grid Systems, S.A.
 3  
 
 4  
  This library is free software; you can redistribute it and/or
 5  
  modify it under the terms of the GNU Lesser General Public
 6  
  License as published by the Free Software Foundation; either
 7  
  version 2.1 of the License, or (at your option) any later version.
 8  
 
 9  
  This library is distributed in the hope that it will be useful,
 10  
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 11  
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 12  
  Lesser General Public License for more details.
 13  
 
 14  
  You should have received a copy of the GNU Lesser General Public
 15  
  License along with this library; if not, write to the Free Software
 16  
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 17  
 */
 18  
 package nextgrid.api.pom;
 19  
 
 20  
 import java.util.Collection;
 21  
 import java.util.List;
 22  
 
 23  
 /**
 24  
  * An AbstractProcess represents a process with no implementation binding
 25  
  * details, but only semantic information that can be used to discover compliant
 26  
  * implementations through the grid.
 27  
  * <p>
 28  
  * Such an abstract process must be fulfilled with binding information or
 29  
  * "replaced" by a more specific, yet still abstract, process during enaction.
 30  
  * This replacement is really implemented through a child containment structure
 31  
  * to prevent losing original semantic data: In case of error, the enactor must
 32  
  * be able to revert to the original abstract description and repeat the
 33  
  * discovery phase to reach an alternative service provider.
 34  
  * <p>
 35  
  * The presence of instances of this class within a workflow representation
 36  
  * as leaf nodes marks this workflow as abstract, meaning that it will require
 37  
  * some extra process before being "executable".
 38  
  * <p>
 39  
  * In OWL-WS terms, an AbstractProcessImpl can be mapped to a service that only
 40  
  * contains a profile, but no grounding; that is, it only states service
 41  
  * constraints, but no capabilities.
 42  
  * <p>
 43  
  * During the evaluation of an AbstractProcess, candidates are searched for
 44  
  * its implementation. After that, the process will contain a list of
 45  
  * candidates, all of which link to the abstract process as their parent.
 46  
  * However, unlike ControlProcess, only one of them will be selected at a given
 47  
  * point in time.
 48  
  *
 49  
  * @author Rodrigo Ruiz
 50  
  */
 51  
 public interface AbstractProcess extends Process {
 52  
 
 53  
   /**
 54  
    * Priority value used for processes without an assigned priority.
 55  
    */
 56  
   int UNDEFINED_PRIORITY = -1;
 57  
 
 58  
   //----------------------------------------------------------------------------
 59  
   // Process Hierarchy Management
 60  
   //----------------------------------------------------------------------------
 61  
 
 62  
   /**
 63  
    * Gets the list of candidates for this abstract process.
 64  
    *
 65  
    * @return The list of candidates for this process
 66  
    */
 67  
   List<Process> getCandidates();
 68  
 
 69  
   /**
 70  
    * Sets the list of candidates for this abstract process.
 71  
    *
 72  
    * @param candidates The list of candidates
 73  
    */
 74  
   void setCandidates(Collection<Process> candidates);
 75  
 
 76  
   /**
 77  
    * Gets the currently selected implementation candidate.
 78  
    *
 79  
    * @return The candidate process currently selected
 80  
    */
 81  
   Process getSelected();
 82  
 
 83  
   /**
 84  
    * Selects the specified process as the implementation of this instance.
 85  
    *
 86  
    * @param p The process to select
 87  
    */
 88  
   void setSelected(Process p);
 89  
 
 90  
   //----------------------------------------------------------------------------
 91  
   // Enaction Management
 92  
   //----------------------------------------------------------------------------
 93  
 
 94  
   /**
 95  
    * Gets the current priority of this process.
 96  
    *
 97  
    * @return The process priority
 98  
    */
 99  
   int getPriority();
 100  
 
 101  
   /**
 102  
    * Sets the priority of this process.
 103  
    *
 104  
    * @param priority The process priority
 105  
    */
 106  
   void setPriority(int priority);
 107  
 
 108  
   /**
 109  
    * Gets the profile model associated to this instance.
 110  
    *
 111  
    * @return The profile model
 112  
    */
 113  
   QueryProfile getProfile();
 114  
 
 115  
   /**
 116  
    * Sets the profile model associated to this instance.
 117  
    *
 118  
    * @param profile The profile model
 119  
    */
 120  
   void setProfile(QueryProfile profile);
 121  
 }