J’inaugure par ce premier article “Actualité en vrac” une nouvelle catégorie de publication où je vous présente les quelques actualités du moment sur les sujets qui me tiennent à cœur . On retrouveras bien entendu la gestion des exigences et la gestion de projets mais aussi des sujets sur l’actualité high-tech en générale.
Bien que peu pratiqué par les consultants Planisware, le langage interne de l’application (OJS) permet de développer en utilisant une logique objet. Malgré l’utilisation du Javascript comme base du langage OJS, les méthodes traditionnellement utilisées pour déclarer des classes et des méthodes n’ont pas été implémentée de la même façon.
Les traces permettent d’historiser les modifications apportées à un objet d’une classe Planisware.
En d’autres termes ce mécanisme vous permet de visualiser l’auteur, la date et les différentes modifications réalisées sur une classe donnée.
L’ensemble des informations historisées peut être affiché depuis le menu Historique / Afficher les traces depuis Planisware Pro. Vous pouvez bien entendu créer un rapport afin d’afficher ces informations directement aux utilisateurs.
J’ai dernièrement utilisé cette méthode pour tracer les changements sur les propriétés d’un projet. L’ensemble des modifications réalisées depuis le formulaire de définition d’un projet était tracé et affiché dans un nouvel onglet du même formulaire.
Les attributs dynamiques sont des champs supplémentaires « évoluées ».
N’ayant pas de définition exacte de la part de Planisware, il faudra simplement retenir qu’un champ dynamique ou DA (dynamic attribute) est un attribut supplémentaire dont la valeur n’est pas sauvegardé en base et est créé depuis un script OJS dans lequel on a remplace son accesseur et mutateur.
En d’autres termes, la valeur retournée par ce champ dépendra d’un script OJS, et la valeur saisie dans ce champ sera traité là aussi par un script.
Nous avons régulièrement besoin de vérifier ou d’identifier les doublons présent dans une table. En SQL plusieurs possibilités s’offrent à nous pour résoudre ce problème :
select i.id_project, i.name_project, i.id_origin, count(*)
from chronos_prom_link i
group by i.id_project, i.name_project, i.id_origin
HAVING count(*) > 1
ORDER BY count(*) DESC
ou sans utiliser le mot clé HAVING :Bug ou pas bug ?
En souhaitant rejeter une feuille de temps Timecard depuis un script Planisware, j’ai utilisé naturellement la macro “reject” sur la classe OpxTimeCard.
var res = OpxResource.get(2387346655);
var tc_start = new Date("12/09/2011", "MM/DD/YYYY");
fromObject (res) {
for (var tc in OpxTimecard where tc.startDate == tc_start) {
tc.callMacro("Reject");
}
}
Malheureusement, ce code n'a pas eu l'effet escompté, la feuille de temps n'a pas été rejeté. Après quelques investigations dans les profondeurs de Planisware, il faut non pas appeler la macro "Reject" mais "REJECT-TIME-CARD-USER-TOOL" pour résoudre ce problème...