Class SimulationService
java.lang.Object
fr.ifremer.isisfish.simulator.launcher.SimulationService
Cette classe est responsable de conservation de toutes les simulations faites
ou a faire. Pour ajouter une nouvelle simulation on appelle une des méthodes
submit
.
Cette classe sert aussi de modele pour le moniteur de queue
Il existe une instance unique pour toute l'application
Lors de l'instanciation de la classe, l'ensemble des
SimulatorLauncher
disponible est recherche dans la configuration
et un executor est cree pour chaque.
Si un SimulatorLauncher
genere trop d'erreur (RemoteException)
Il est alors suspendu pour ne plus etre utilise pour les simulations.
- Version:
- $Revision$ Last update : $Date$ By : $Author$
- Author:
- poussin
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
protected Map<SimulatorLauncher,
SimulationExecutor> Tous les types deSimulatorLauncher
disponibles, et leur executors associeContient les identifiants des simulations presentes dansjobs
protected static SimulationService
protected Set<SimulationJob>
La liste des jobs terminesprotected Set<SimulationJob>
La liste des jobs existant (queue + job demarre)protected Map<SimulatorLauncher,
org.apache.commons.lang3.mutable.MutableInt> Le nombre d'erreur pour les SimulatorLauncherprotected org.nuiton.util.ListenerSet<SimulationServiceListener>
static final int
nombre maximal de simulation autoriser pour un planprotected PropertyChangeSupport
protected SimulationQueue
La queue contenant toutes les simulations a fairestatic final String
protected ExecutorService
L'executor utilise pour creer toutes les sous simulations des plans independants -
Constructor Summary
ModifierConstructorDescriptionprotected
Cree une instance et initialise les executors ainsi que le launcherError -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
addPropertyChangeListener
(String propertyName, PropertyChangeListener listener) void
Permet d'ajouter un nouveau SimulatorLauncher.void
protected boolean
cancel
(SimulationJob job) Supprime un job de la queue (annulation d'une simulation).void
Nettoie la liste des jobs faitsprotected void
compileAllFile
(SimulationControl control, File directory) Compile les fichiers présent dans le répertoire passé en parametre, ce répertoire est hiérarchisé en: rules, exports, simulators et scripts.boolean
protected void
fillDesignPlanNominalValue
(org.nuiton.topia.TopiaContext context, DesignPlan designPlan) Explore design plan factor tree, and set factor nominal value for each factor.protected void
Ajoute le job au job en cours previent s'il n'etait pas deja present les listenersSimulationServiceListener.simulationStart(SimulationService, SimulationJob)
.protected void
Supprime le job de la liste des jobs en cours et l'ajoute le job si besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit pas d'une simulation lancer par un plan de simulation).getJobs()
static SimulationService
Retourne l'instance duSimulationService
a utiliserRetour les lanceurs ayant un executor.protected Set<SimulatorLauncher>
Retourne la liste de tous lesSimulatorLauncher
disponible.boolean
prepareSimulationZipFile
(SimulationParameter param, File outputZilFile, SimulationControl control, String xmlDesignPlan, SensitivityScenarios sensitivityScenarios) Prepare les fichiers qui seront utilsé à la simulation: scripts rules resultinfos exports simulators optimisations objectives export de la database de la region simultionplanvoid
void
removePropertyChangeListener
(String propertyName, PropertyChangeListener listener) void
protected void
reportError
(SimulatorLauncher launcher, SimulationJob job) This method must be call in thread simulation Report une erreur pour un launcher, on resoumet le job en supprimant le launcher utilisevoid
restart
(SimulationJob job) Restart a job.protected void
resubmit
(SimulationJob job) Permet de resoumettre un job qui a ete pris par un thread mais qu'il ne peut pas traiter.void
setAutoLaunch
(boolean autoLaunch) protected void
submit
(SimulationJob job) void
submit
(String id, SimulationParameter param, SimulatorLauncher launcher, int priority) Permet d'ajouter une nouvelle simulation a la queue.void
submit
(String id, SimulationParameter param, SimulatorLauncher launcher, int priority, SensitivityAnalysis sensitivityAnalysis, DesignPlan designPlan) Permet d'ajouter une simulation avec des factors a prendre en compte.void
Resoumet une simulation qui a deja été démarrée, mais on ne faisant que du control de monitoring.protected void
Permet de soumettre a la queue un job provenant d'un plan.protected void
Permet de mettre en attente les threads de simulation si l'utilisateur a suspendu la queue
-
Field Details
-
SIMULATION_LAUNCHER
- See Also:
-
MAX_PLAN_SIMULATION
public static final int MAX_PLAN_SIMULATIONnombre maximal de simulation autoriser pour un plan- See Also:
-
instance
-
propertyListeners
-
listeners
-
autoLaunch
protected boolean autoLaunch -
subSimulationComputationExecutor
L'executor utilise pour creer toutes les sous simulations des plans independants -
executors
Tous les types deSimulatorLauncher
disponibles, et leur executors associe -
launcherError
Le nombre d'erreur pour les SimulatorLauncher -
queue
La queue contenant toutes les simulations a faire -
idJobs
Contient les identifiants des simulations presentes dansjobs
-
jobs
La liste des jobs existant (queue + job demarre) -
jobDones
La liste des jobs termines
-
-
Constructor Details
-
SimulationService
protected SimulationService()Cree une instance et initialise les executors ainsi que le launcherError
-
-
Method Details
-
getService
Retourne l'instance duSimulationService
a utiliser- Returns:
- l'instance a utiliser
-
addSimulationLauncher
Permet d'ajouter un nouveau SimulatorLauncher. Cela cree automatiquement un executor pour ce SimulatorLauncher. S'il y avait deja un SimulatorLauncher de ce type un nouveau est ajoute.- Parameters:
sl
- le SimulatorLauncher a ajouter
-
getSimulationLaunchers
Retour les lanceurs ayant un executor.- Returns:
- les SimulatorLauncher
-
getSimulationExecutors
-
getJobs
-
getJobDones
-
getSimulatorLaunchers
Retourne la liste de tous lesSimulatorLauncher
disponible.- Returns:
SimulatorLauncher
s
-
addSimulationServiceListener
-
removeSimulationServiceListener
-
addPropertyChangeListener
-
addPropertyChangeListener
-
removePropertyChangeListener
-
removePropertyChangeListener
-
fireStartEvent
Ajoute le job au job en cours previent s'il n'etait pas deja present les listenersSimulationServiceListener.simulationStart(SimulationService, SimulationJob)
.- Parameters:
job
-
-
fireStopEvent
Supprime le job de la liste des jobs en cours et l'ajoute le job si besoin a la liste des jobs faits (s'il y a une erreur ou qu'il ne sagit pas d'une simulation lancer par un plan de simulation). Les listener sont prevenu par la méthodeSimulationServiceListener.simulationStop(SimulationService, SimulationJob)
.- Parameters:
job
-
-
clearJobDone
public void clearJobDone()Nettoie la liste des jobs faits -
isAutoLaunch
public boolean isAutoLaunch()- Returns:
- Returns the autoLaunch.
-
setAutoLaunch
public void setAutoLaunch(boolean autoLaunch) - Parameters:
autoLaunch
- The autoLaunch to set.
-
waitAutoLaunch
Permet de mettre en attente les threads de simulation si l'utilisateur a suspendu la queue- Parameters:
job
- le job pour lequel on vu savoir s'il faut l'executer ou non
-
submit
Permet d'ajouter une nouvelle simulation a la queue. Si la simulation est simple ou avec un plan d'experience dependant, un nouveau job est cree et directement ajout a la queue de jobs. S'il la simulation est un plan ou les simulations sont independantes, toutes les simulations sont genere et toute ajoute a la queue de simulation. Mais dans ce cas seul la simulation de depart est ajoute au jobs en cours, les simulations generees seront ajoutees lors de leur reel execution- Parameters:
id
- l'identifiant de la simulationparam
- les parametres de la simulationlauncher
- le launcher a utiliser pour lancer la simulationpriority
- la priorite de la simulation
-
submit
public void submit(String id, SimulationParameter param, SimulatorLauncher launcher, int priority, SensitivityAnalysis sensitivityAnalysis, DesignPlan designPlan) Permet d'ajouter une simulation avec des factors a prendre en compte.- Parameters:
id
- l'identifiant de la simulationparam
- les parametres de la simulationlauncher
- le launcher a utiliser pour lancer la simulationpriority
- la priorite de la simulationsensitivityAnalysis
- l'implementation du calculateur de sensibilitedesignPlan
- le design plan qui contient les facteurs
-
fillDesignPlanNominalValue
protected void fillDesignPlanNominalValue(org.nuiton.topia.TopiaContext context, DesignPlan designPlan) Explore design plan factor tree, and set factor nominal value for each factor. Also fix factor name for R (without special chars in name)- Parameters:
context
- opened database contextdesignPlan
- design plan
-
submit
-
resubmit
Permet de resoumettre un job qui a ete pris par un thread mais qu'il ne peut pas traiter. Cela arrive lorsque l'executor est en pause, ou que le launcher de l'executor ne fonctionne plus (il se met en pause tout seul)- Parameters:
job
- l'item a resoumettre
-
submitSubJob
Permet de soumettre a la queue un job provenant d'un plan. Ce plan ne doit pas apparaitre dans la console de queue.- Parameters:
job
-
-
submitForCheckOnly
Resoumet une simulation qui a deja été démarrée, mais on ne faisant que du control de monitoring.- Parameters:
job
- job to submit
-
restart
Restart a job. This method fire "start" event.- Parameters:
job
- job to retstart
-
cancel
Supprime un job de la queue (annulation d'une simulation). Appele depuisSimulationJob.stop()
- Parameters:
job
- le job a annuler- Returns:
- vrai si la simulation a pu etre annulee avant sont lancement (encore presente dans la queue), faux si la simulation a deja ete prise par un thread de simulation ou quelle est terminee
-
exists
-
reportError
This method must be call in thread simulation Report une erreur pour un launcher, on resoumet le job en supprimant le launcher utilise- Parameters:
launcher
- le launcher posant problemejob
- le job qui n'a pas reussi a se faire
-
prepareSimulationZipFile
public File prepareSimulationZipFile(SimulationParameter param, File outputZilFile, SimulationControl control, String xmlDesignPlan, SensitivityScenarios sensitivityScenarios) throws SimulationException Prepare les fichiers qui seront utilsé à la simulation:- scripts
- rules
- resultinfos
- exports
- simulators
- optimisations
- objectives
- export de la database de la region
- simultionplan
Le tout est zippé et le zip est retourné, il peut-être directement importé dans le
SimulationStorage
(en le renommant comme il fautSimulationStorage.importAndRenameZip(File, String)
.Ce zip est automatiquement supprimé à la fin de l'application.
- Parameters:
param
- les paramètre de la simulationoutputZilFile
- output zip file containing simulation (can benull
, temp file will be created)control
- le controleur (can benull
)xmlDesignPlan
- contenu xml des design plan (can benull
)sensitivityScenarios
- used to add some extra files (such as rules) (can benull
)- Returns:
- un zip de simulation pour une simulation pret a être faite
- Throws:
SimulationException
- pour tout problème rencontré (IO,Topia,Script compilation...)
-
compileAllFile
Compile les fichiers présent dans le répertoire passé en parametre, ce répertoire est hiérarchisé en: rules, exports, simulators et scripts. Seuls les fichiers des 3 premiers répertoires sont compilés les fichiers du dernier sont compilé par les dépendances qu'on les autresIl permet donc de compiler facilement tous les fichiers pour une simulation
- Parameters:
control
- le controleur (can benull
)directory
- le répertoire où compiler- Throws:
IOException
-