Obtention de l'URL via une méthode déclenchée par un CRON

Bonjour,

J’essaye dans une méthode de récupérer l’URL (pour notamment pouvoir identifier l’environnement sur lequel je suis). Pour ce faire j’utilise : “getGrant().getContextURL()”

Cela marche parfaitement lorsque la méthode est lancé “à la main” càd via une action ou bien même avec un “Force immediate execution of task”. De cette manière, aucun problème pour récupérer l’URL

Cependant, lorsque l’action s’exécute via un CRON (de manière automatique),
l’URL n’est pas renvoyer → “getGrant().getContextURL()” renvoi : “”

Cdlt,

Mounir

Bonjour,

Afin de permettre une compréhension détaillée de votre contexte, la description fournie ne suffit malheureusement pas. Merci de fournir a minima les informations suivantes:

  • logs d’intérêt de la console javascript
  • logs d’intérêt Simplicité
  • version Simplicité de votre instance (/health)

Merci

Que ce soit en V4 ou en V5, le getGrant()getContextURL(). ramènera l’url de l’instance uniquement dans le contexte d’une session utilisateur. Dans le contexte de la cron il n’y en a pas.
Vous devez préciser l’url de votre instance dans un paramètre système SERVER_URL qui peut également être un paramètre de déploiement
docker run -e SERVER_URL=<url>
le getContextURL() ramènera la valeur de ce paramètre lorsqu’il n’y a pas de session utilisateur.
Vous pouvez également utiliser un paramètre système applicatif que vous appelez getGrant().getParameter(MY_PARAM).

1 Like

Merci pour ta réponse @nathalie.

Le but serait d’avoir une méthode dynamique, nous souhaiterions pouvoir identifier l’instance dans le code.

Le problème rencontré fait suite à une copie d’instance à partir d’un DUMP.

Nous souhaitons bloquer l’action d’une cron pour les environnements autre que celui souhaité, dans le but de minimiser les actions nécessaires suite à un “restore dump”.

Malheureusement, dans ce contexte, la solution du paramètre système ne marchera pas.

Existe-t-il une autre solution ?

Merci d’avance,

Benoît

1 Like

Oui dans ce cas privilégiez la solution de la variable d’environnement au lancement de l’image docker.
Il y a également la possibilité de surcharger la valeur remplacée d’un paramètre système

docker run -e SYSPARAM_SERVER_URL=<url>

1 Like

Bonjour,
Je suis confrontée au même problème.

De notre côté on utilise le getDirectURL(), mais j’ai le sentiment que c’est la même problématique car lorsque j’exécute le CRON avec une session utilisateur cela fonctionne alors que lorsqu’il est activé automatiquement, le lien n’intègre plus le nom de l’instance.

content = content.replace("{url}", HTMLTool.getDirectURL(getGrant(), "HrNewEmployee", nEmpI.getRowId()));

Notre Docker est géré par un prestataire externe. Je l’ai contacté pour savoir s’il peut charger un paramètre comme vous l’avez conseillé plus haut.
Y’a-t-il d’autres informations que je dois lui transmettre ?

Merci

[Platform]
Status=OK
Version=5.2.5
BuiltOn=2022-05-25 15:54
Git=5.2/ecae3b828f4cb7eda5e0e6f6e018fca9b12483d7
Encoding=UTF-8
EndpointIP=10.201.58.84
EndpointURL=http://siparex-simplicite-dev-5475d8459-n9sg5:8080
TimeZone=Europe/Paris

Re-bonjour,
pour information, notre prestataire a ajouté le paramètre système côté Docker.
Les mails envoyés par CRON renvoi bien la bonne URL :
image

En revanche, effet de bord, l’instance ne se charge plus.

Lorsqu’on retire ce paramètre, tout revient à la normal.
Avez-vous une piste de résolution ?

Merci,
Ophélie

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.