Package jline.lang

Class JobClass

All Implemented Interfaces:
Serializable, Copyable
Direct Known Subclasses:
ClosedClass, DisabledClass, OpenClass, Signal

public class JobClass extends NetworkElement implements Serializable
Superclass representing a class of jobs
See Also:
  • Field Details

    • type

      protected JobClassType type
    • priority

      protected int priority
    • completes

      protected boolean completes
    • refstat

      protected Station refstat
    • isrefclass

      protected boolean isrefclass
    • index

      protected int index
    • deadline

      protected double deadline
  • Constructor Details

    • JobClass

      public JobClass(JobClassType type, String name)
      Creates a new job class with the specified type and name.
      Parameters:
      type - the type of job class (OPEN, CLOSED, etc.)
      name - the name for this job class
  • Method Details

    • getAttribute

      public Integer[] getAttribute()
    • setAttribute

      public void setAttribute(Integer[] attribute)
    • getCompletes

      public boolean getCompletes()
      Checks if jobs in this class complete their service and leave the system.
      Returns:
      true if jobs complete, false if they remain in the system
    • setCompletes

      public void setCompletes(boolean completes)
    • getIndex

      public int getIndex()
    • getJobClassType

      public JobClassType getJobClassType()
      Returns the type of this job class.
      Returns:
      the job class type (OPEN, CLOSED, etc.)
    • getNumberOfJobs

      public double getNumberOfJobs()
      Returns the number of jobs in this class. Default implementation returns infinite (for open classes).
      Returns:
      number of jobs in this class
    • getPriority

      public int getPriority()
      Returns the priority level of this job class. Lower values indicate higher priority (priority 0 is highest).
      Returns:
      the priority level
    • setPriority

      public void setPriority(int p)
      Sets the priority level for this job class.
      Parameters:
      p - the priority level to set
    • getDeadline

      public double getDeadline()
      Returns the relative deadline for jobs in this class. The deadline is specified as time units from job arrival. A value of Double.POSITIVE_INFINITY indicates no deadline constraint.
      Returns:
      the relative deadline in time units, or Double.POSITIVE_INFINITY if no deadline
    • setDeadline

      public void setDeadline(double deadline)
      Sets the relative deadline for jobs in this class. Jobs will be assigned an absolute deadline of arrivalTime + deadline when they enter queues with EDD/EDF scheduling.
      Parameters:
      deadline - the relative deadline in time units (must be > 0), or Double.POSITIVE_INFINITY for no deadline
    • getReferenceStation

      public Station getReferenceStation()
      Returns the reference station for this job class. The reference station is used for normalization in closed networks.
      Returns:
      the reference station, or null if not set
    • setReferenceStation

      public void setReferenceStation(Station ref) throws Exception
      Sets the reference station for this job class.
      Parameters:
      ref - the station to use as reference
      Throws:
      Exception - if the reference station cannot be set
    • isReferenceClass

      public boolean isReferenceClass()
      Checks if this is a reference job class within its chain.
      Returns:
      true if this is a reference class
    • setReferenceClass

      public void setReferenceClass(boolean isrefclass)
      Sets whether this job class is a reference class within its chain.
      Parameters:
      isrefclass - true to make this a reference class
    • isReferenceStation

      public boolean isReferenceStation(Node node)
      Checks if the specified node is the reference station for this class.
      Parameters:
      node - the node to check
      Returns:
      true if the node is the reference station
    • setReplySignalClassIndex

      public void setReplySignalClassIndex(int signalClassIndex)
      Sets the reply signal class index for synchronous call semantics. When a job of this class completes service, the server will block until receiving a REPLY signal from the signal class at the specified index.
      Parameters:
      signalClassIndex - the index of the signal class that will unblock the server
    • getReplySignalClassIndex

      public int getReplySignalClassIndex()
      Gets the index of the reply signal class.
      Returns:
      the index of the reply signal class, or -1 if no reply is expected
    • expectsReply

      public boolean expectsReply()
      Checks if this job class expects a reply signal after processing.
      Returns:
      true if a reply signal is expected, false otherwise
    • setPatience

      public void setPatience(Distribution distribution)
      Sets the global patience distribution for this job class. This applies to all queues unless overridden by a queue-specific patience setting. Defaults to RENEGING patience type for backwards compatibility.
      Parameters:
      distribution - the patience time distribution
      Throws:
      IllegalArgumentException - if distribution is a modulated process or argument is null
    • setPatience

      public void setPatience(ImpatienceType impatienceType, Distribution distribution)
      Sets the global impatience type and distribution for this job class. This applies to all queues unless overridden by a queue-specific patience setting.
      Parameters:
      impatienceType - the type of impatience (RENEGING or BALKING)
      distribution - the patience time distribution
      Throws:
      IllegalArgumentException - if distribution is a modulated process or arguments are null
      UnsupportedOperationException - if BALKING type is used (not yet supported)
    • getPatience

      public Distribution getPatience()
      Gets the global patience distribution for this job class.
      Returns:
      the patience distribution, or null if not set
    • getImpatienceType

      public ImpatienceType getImpatienceType()
      Gets the global impatience type for this job class.
      Returns:
      the impatience type, or null if not set
    • hasPatience

      public boolean hasPatience()
      Checks if this job class has a patience distribution configured.
      Returns:
      true if patience is configured, false otherwise
    • setBalking

      public void setBalking(BalkingStrategy strategy, List<BalkingThreshold> thresholds)
      Sets the global balking configuration for this job class using queue-length thresholds. This applies to all queues unless overridden by a queue-specific balking setting.
      Parameters:
      strategy - the balking strategy to use
      thresholds - list of balking thresholds mapping queue lengths to probabilities
      Throws:
      IllegalArgumentException - if strategy or thresholds are null
    • setBalking

      public void setBalking(BalkingStrategy strategy, int minJobs, double probability)
      Sets the global balking configuration using a single threshold. Convenience method for simple balking configurations.
      Parameters:
      strategy - the balking strategy to use
      minJobs - minimum queue length to trigger balking
      probability - balking probability when queue length >= minJobs
    • getBalkingStrategy

      public BalkingStrategy getBalkingStrategy()
      Gets the global balking strategy for this job class.
      Returns:
      the balking strategy, or null if not configured
    • getBalkingThresholds

      public List<BalkingThreshold> getBalkingThresholds()
      Gets the global balking thresholds for this job class.
      Returns:
      list of balking thresholds, or null if not configured
    • hasBalking

      public boolean hasBalking()
      Checks if this job class has balking configured.
      Returns:
      true if balking is configured, false otherwise
    • setRetrial

      public void setRetrial(Distribution delayDistribution, int maxAttempts)
      Sets the global retrial configuration for this job class. When a customer is rejected due to capacity, they will enter an orbit and retry after a delay drawn from the specified distribution.
      Parameters:
      delayDistribution - the distribution for retrial delay times
      maxAttempts - maximum retry attempts (-1 for unlimited, 0 for no retries)
      Throws:
      IllegalArgumentException - if delayDistribution is null or a modulated process
    • setRetrial

      public void setRetrial(Distribution delayDistribution)
      Sets the global retrial configuration with unlimited retry attempts.
      Parameters:
      delayDistribution - the distribution for retrial delay times
    • getRetrialDelayDistribution

      public Distribution getRetrialDelayDistribution()
      Gets the global retrial delay distribution for this job class.
      Returns:
      the retrial delay distribution, or null if not configured
    • getMaxRetrialAttempts

      public int getMaxRetrialAttempts()
      Gets the maximum number of retrial attempts for this job class.
      Returns:
      maximum attempts (-1 for unlimited)
    • hasRetrial

      public boolean hasRetrial()
      Checks if this job class has retrial configured.
      Returns:
      true if retrial is configured, false otherwise
    • printSummary

      public void printSummary()
      Prints a summary of this job class configuration to the console.
    • setImmediateFeedback

      public void setImmediateFeedback(boolean enabled)
      Enables or disables immediate feedback for this job class globally. When enabled, jobs of this class that self-loop at any station stay in service instead of rejoining the queue.
      Parameters:
      enabled - true to enable immediate feedback, false to disable
    • hasImmediateFeedback

      public boolean hasImmediateFeedback()
      Checks if immediate feedback is enabled for this job class.
      Returns:
      true if immediate feedback is enabled