Bonsoir,
- Il semblerai que la fonction
scenarioExpression::wait($condition,300);
n’accepte pas une chaine de caractère reconstitué. ($condition = "#".$contOpen."#==0"
) - Ensuite dans ton code actuel, tu ne contrôle pas le retour de la fonction wait, donc ta commande
$cmdVolet->execCmd();
sera exécuté dans tous les cas.
Voici un code qui devrait fonctionner :
// récup tags
$tags = $scenario->getTags();
$tagVolet = trim($tags['#tagAction#'],'\"');
$cmdVolet = cmd::byString('#'.$tagVolet.'#');
$contOpen = trim($tags['#tagDo#'],'\"');
$id_contOpen = cmd::byString('#'.$contOpen.'#')->getId(); // id de la commande
// attendre que le DO se ferme...
$condition = '#'.$id_contOpen.'# == 0'; // pour log
$condition_log = '#'.$contOpen.'# == 0'; // pour fonction wait
$scenario->setLog('Attente de '.$condition_log);
if (scenarioExpression::wait($condition,300)) {
$scenario->setLog('[OK] la condition a été remplie, exécution de la commande #'.$tags['#tagAction#'].'#');
$cmdVolet->execCmd();
}
else $scenario->setLog('[NOK] Timeout dépassé !!!');
Dans l’exemple ci-dessus, j’ai contourné le problème (1), en envoyant plutôt l’id que le nom de commande.
if (scenarioExpression::wait($condition,300))
ici j’attend que la fonction renvoie « true » pour exécuter la commande $cmdVolet->execCmd();