Lancer un scénario dans... avec des tags

Bonjour,
Je voudrais lancer un scenario dans 1 minutes en transmettant une variable tag. Voici mon code mais le tag n’est pas transmis. Avez-vous une idée ?
Merci,
Philippe.

$Sc = scenario::byId(151);
$Tags = $Sc->getTags();
$MyDate = date();
$MyDate = strtotime('+ ' . '1' . ' min');
$Tags["#sc#"] = "coucou";
$Sc->setTags($Tags);
$Sc->setSchedule(date('i', $MyDate) . ' ' . date('H', $MyDate) . ' ' . date('d', $MyDate) . ' ' . date('m', $MyDate) . ' * ');
$Sc->save();

Salut,

Entoure ton code de la balise faite pour ça, il sera plus facile de le lire.

image

Que donne les logs des 2 scénarios ?

Les log du scénario appelant :

[2021-02-26 15:18:07][SCENARIO] Start : Scenario lance manuellement.
[2021-02-26 15:18:07][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-02-26 15:18:07][SCENARIO] Exécution d'un bloc code
[2021-02-26 15:18:07][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-26 15:18:07][SCENARIO] Fin correcte du scénario

Les log du scénario appelé :

[2021-02-26 15:19:02][SCENARIO] Start : Scenario execute automatiquement sur programmation.
[2021-02-26 15:19:02][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-02-26 15:19:02][SCENARIO] Ajout de l'alerte : OUI ! -> 
[2021-02-26 15:19:02][SCENARIO] Fin correcte du scénario

En fichier joint, le scénario appelé :

N’est ce pas lié au fait que tu aies des doubles quotes? $Tags["#sc#"] essayes avec $Tags[’#sc#’]

Hello ça donne quoi dans cette ordre ?

  • tags d’abord
  • save
  • programmation
  • save (même si déjà fait)

PS, les simples ou doubles quotes, ça marche pareil c’est un tableau

Merci de vos réponses mais rien n’y fait.

C’est indispensable de le faire via un bloc code et à +1m, ou c’est juste pour l’exemple ?

Le faire via un bloc code fait partie d’une automatisation et de le faire une minute après pour l’essai.

la création d’un tag ça fonctionne je le fais souvent comme ça


A voir si en faisant le lancement du scenario avec un bloc DANS ça règle le souci

Attention à la casse, un coup tu utilises « Sc » et un autre coup « sc ».

Non mais rien a voir …
Sc est le nom d une variable php
sc est la clé du tableau

D accord avec @naboleo, je fais pareil ! Mais l utilisation que tu montres est un peu differente de celle que @pbienvault essaie faire.

Le soucis (je pense!) c est que le setTags ne rend pas la donnee persistante => autrement dit elle ne va pas enregistrer le tag dans le scenario #2 pour qu’il soit executer plus tard. Ca ne rend dispo le tag qu’au moment où il est instancié.

L autre solution serait donc de faire comme dans l exemple de nabolea :
Depuis le scenario #1 avoir un bloc DANS +1min (ou un bloc A)
Et comme action l’exécution du scenario #2 avec les tags creer avant

Je partage ton avis c’est pour ça que j’avais demandé à faire un save avant la définition du scheduling.
Ce qui est quand même bizarre c’est qu’en blocs classiques hors code, les tags sont bien propagés (comme les sous tâches mais il faut que je check un cas d’usage réel pour confirmer)

Non pas bizarre !
Ils ont une existance tant que ton scenario courant n est pas finalisé.

Dans le cas de @pbienvault, son scenario planifie l’exécution du scenario #2 et se termine => les tags créés sont donc effacés a la fin de #1.
1 min plus tard, le scenario #2 se lance parce que l heure est arrivee, mais les tags n existent plus , et puisqu ils n ont pas été passés comme arg
par le scenario #1
Il n est donc pas possible de les utiliser comme cela

1 « J'aime »

Effectivement c’est logique. Il y a jamais de duplication du contexte, c’est l’imbrication qui fait le job

@pbienvault … des news …?

@pbienvault ??
C est sympa d essayer d aider mais de ne pas avoir de retour …!

Sympa aussi pour les autres qui pourraient avoir le meme probleme que toi, mais pas de retour…

2 « J'aime »

Bonjour,
Je n’ai pas fait de retour car je n’ai rien trouvé, mille excuses.

Salut tous,

Juste une question probablement bête, mais setSchedule peut prendre un array comme argument :

Est ce qu’il n’y aurait pas moyen de passer les tags en argument ici?

Je n’arrive pas à remonter au dela de la fction schedule qui appelle la class DB, là ça va trop loin