Ocelet

Scenario

Un scenario contient la série d'instructions à exécuter lors d'une simulation. Ces instructions seront exécutées l'une après l'autre dans l'ordre où elles sont placées.

Syntaxe

Définition d'un scénario scenario nom du scenario { série d'instructions }

Le nom d'un scenario doit impérativement commencer par une lettre (majuscule de préférence) mais peut éventuellement être suivi par des chiffres, et ne pas contenir d'espace ni de caractère spéciaux.

Dans la version actuelle d'Ocelet on n'écrit qu'un seul scénario qui contient toutes les instructions d'une simulation. Ce scenario porte le nom du projet. D'ailleurs l'OMP génère automatiquement un scénario minimal correctement nommé quand on crée un nouveau projet.

Exemples

scenario HelloW {

  println("Hello world !")

}

L'exécution de ce scénario provoque simplement l'affichage du texte : Hello world !

jar et ligne de commande

Il peut être nécessaire de lancer le modèle à partir de la ligne de commande, comme lors d'une étude de sensibilité. Pour cela il existe la fonction Export to jar accessible à partir du menu File.

Quand on a exporté un modèle au format jar, si ce modèle contient une définition de paramètres dans un bloc metadata {...} il est possible de passer des valeurs pour ces paramètres sur la ligne commande.

Il faut respecter quelques contraintes :

  • Il faut fournir tous les paramètres dans l'ordre où ils ont été déclarés dans le bloc metadata {...}. Si le nombre de paramètres donnés sur la ligne de commande est différent, ce sont les valeurs par défaut qui seront utilisés.
  • Les paramètres sont séparés par un espace sur la ligne de commande. Si on doit fournir un texte qui contient des espaces il faut le mettre entre guillemets.
  • Il faut s'assurer que les valeurs fournies sur la ligne de commande correspondent au type des paramètres déclarés. Par exemple si on déclare un paramètre de type Integer et qu'on donne une valeur 4.5 ce paramètre ne sera pas valide et c'est sa valeur par défaut qui sera utilisée. Il y a un message qui s'affiche dans cette situation pour signaler qu'il y a eu un souci pour convertir le type.
    • Un nombre limité de types est reconnu pour cette conversion automatique : Boolean, Byte, Double, Float ,Integer, Long, Short, String
    • Si vous avez besoin de déclarer un paramètre avec un type qui n'est pas automatiquement reconnu, une solution consiste à déclarer ce paramètre en String puis d'effectuer sois-même une conversion du paramètre dans un autre type dans le modèle Ocelet.

Exemple

Prenons un modèle Ocelet Mymodel.oclt qui est écrit comme ceci :

metadata {
    parameter Integer p1 {default 0}
    parameter Double  p2 {default 0.0}
    parameter String  p3 {default "nothing"}
    parameter Boolean p4 {default false}
}

scenario Mymodel {

  println("Model Mymodel")

  println("p1: "+p1)
  println("p2: "+p2)
  println("p3: "+p3)
  println("p4: "+p4)

  println("Done.")
}

que l'on a exporté en mymodel.jar

On peut l'exécuter sans paramètre :

> java -jar mymodel.jar 
Model Mymodel
p1: 0
p2: 0.0
p3: rien
p4: false
Done.

On peut lui donner de nouvelles valeurs :

> java -jar mymodel.jar 42 3.14159 demo true
Model Mymodel
p1: 42
p2: 3.14159
p3: demo
p4: true
Done.

Si on veut fournir un texte contenant des espace pour p3 on ajoute des guillements :

> java -jar mymodel.jar 42 3.14159 "Eat at Joe's" true
Model Mymodel
p1: 42
p2: 3.14159
p3: Eat at Joe's
p4: true
Done.

Si on fait une erreur de typage sur un paramètre on obtient un message mais cela n'est pas bloquant :

> java -jar mymodel.jar douze 3.14159 "Eat at Joe's" true
Warning: could not convert the argument "douze" into an Integer value
         for the parameter p1. The default value will be used instead.
Model Mymodel
p1: 0
p2: 3.14159
p3: Eat at Joe's
p4: true
Done.

Si on ne met pas le bon nombre de paramètres ils sont ignorés :

> java -jar mymodel.jar 42 3.14159 "Eat at Joe's" true 100
Model Mymodel
p1: 0
p2: 0.0
p3: rien
p4: false
Done.