new method added to Machine, searching for candidate operators. Clean-up in operator

parent 6d3b4df6
...@@ -778,6 +778,18 @@ class Machine(CoreObject): ...@@ -778,6 +778,18 @@ class Machine(CoreObject):
self.inPositionToGet=True self.inPositionToGet=True
if not self.router.isCalled(): if not self.router.isCalled():
self.router.invoke() self.router.invoke()
#===========================================================================
# find candidate operators within the free operators
#===========================================================================
def findCandidateOperator(self):
activeObject=self.getActiveObject()
# TODO: this way no sorting is performed
# find an available operator
candidateOperator=activeObject.operatorPool.findAvailableOperator()
# append the station into its candidateStations
candidateOperator.candidateStations.append(activeObject)
return candidateOperator
# ======================================================================= # =======================================================================
# prepare the machine to be operated # prepare the machine to be operated
......
...@@ -357,31 +357,23 @@ class Router(ObjectInterruption): ...@@ -357,31 +357,23 @@ class Router(ObjectInterruption):
# if we are not dealing with managed entities # if we are not dealing with managed entities
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
if not self.managed: if not self.managed:
# if there are pendingEntities # for each pendingMachine
if self.pendingObjects: for object in self.pendingMachines:
# for each pendingObject # find candidateOperators for each object operator
# for each pendingMachine candidateOperator=object.findCandidateOperator()
for object in self.pendingMachines: # TODO: this way no sorting is performed
# if object in self.pendingMachines: if not candidateOperator in self.candidateOperators:
# find an available operator self.candidateOperators.append(candidateOperator)
candidateOperator=object.operatorPool.findAvailableOperator() # for each pendingQueue
# TODO: this way no sorting is performed for object in self.pendingQueues:
# find available operator for then machines that follow
for nextobject in object.findReceivers():
candidateOperator=nextobject.findCandidateOperator()
if not candidateOperator in self.candidateOperators: if not candidateOperator in self.candidateOperators:
self.candidateOperators.append(candidateOperator) self.candidateOperators.append(candidateOperator)
# for each operator append the station into its candidateStations # update the schedulingRule/multipleCriterionList of the Router
candidateOperator.candidateStations.append(object) if self.sorting:
# for each pendingQueue self.updateSchedulingRule()
for object in self.pendingQueues:
# elif object in self.pendingQueues:
# find available operator for then machines that follow
for nextobject in object.findReceivers():
candidateOperator=nextobject.operatorPool.findAvailableOperator()
if not candidateOperator in self.candidateOperators:
self.candidateOperators.append(candidateOperator)
candidateOperator.candidateStations.append(nextobject)
# update the schedulingRule/multipleCriterionList of the Router
if self.sorting:
self.updateSchedulingRule()
# in case the router deals with managed entities # in case the router deals with managed entities
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
else: else:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment