Dans cet article


Offres d'emploi

Tags

OJS : réaliser un fromobject sur plusieurs projets grâce aux virtual datasets

Introduction

En OJS (OPX2 JavaScript) l’instruction fromobject permet de réduire le périmètre des traitements réalisés aux objets en relation avec l’objet de départ.

Par exemple si l’on souhaite afficher l’ID des activités de niveau 2 du projet nommé “PROJET_DEVELOPPEMENT_2013” on pourra utiliser la syntaxe suivante :

var my_project = "OpxProject".get("PROJET_DEVELOPPEMENT_2013");
fromobject(my_project) 
{
    for (var each_act in "OpxActivity" where each_act.LEVEL == 2)
    {
        alert(each_act.ID);
    }
}

Ici on n’a pas besoin de rajouter une condition du type “each_act.FILE == my_project” dans la boucle “for” car l’instruction fromobject() va limiter le périmètre de recherche aux objets en relation avec le projet 

Réaliser un fromobject() sur plusieurs projets

On peut remarquer que l’instruction fromobject n’accepte qu’un seul argument. Or on pourrait avoir besoin d’utiliser cette instruction sur plusieurs projets en même temps : c’est à dire limiter le périmètre des traitements à plusieurs projets (et non un seul). 

:

//Define 2 projects for the example
var my_project1 = "OpxProject".get("PROJET_001");
var my_project2 = "OpxProject".get("PROJET_002");

//Define new virtual dataset
var Virtualdataset= new OpxVirtualDataset();
    
//Define a vector of projects to create the virtual dataset
var project_vector = new vector();
project_vector.push(my_project1);
project_vector.push(my_project2);
Virtualdataset.selectedDatasets = project_vector;

//Use virtual dataset in a fromobject instruction
fromobject(Virtualdataset) 
{
    for (var each_act in "OpxActivity" where each_act.LEVEL == 2)
    {
        alert(each_act.ID);
    }
}

Le script précédent va donc afficher dans un message de type alerte la liste des activités (Tâches et Sous-projets) de niveau 2 situés dans les projets 

Limite du fromobject sur des fichiers communs

Attention il n’est pas judicieux d’utiliser un fromobject sur des fichiers communs car ceux-ci sont liés entre eux et à des projets. Le fromobject ne va pas limiter les traitements au fichier indiqué mais à tous les éléments en relation avec le fichier indiqué. La plupart du temps comme les fichiers communs sont liés aux projets le fromobject n’aura aucun effet.

L'équipe AXOPEN

Voir aussi les articles suivants

Planisware : utilisation de variables LISP

Le 26/04/2013 par Thibault Gonin

Les variables d’environnement LISP Il peut être utile de définir dans les fichiers *.ini des variables qui seront évaluées au démarrage des services. Dans ce cas on peut utiliser des variables LISP. Ces variables sont très pratiques pour initialiser de variables dont la valeur dépendra de l’environnement sur lequel l’application sera démarrée (Production, Intégration, Formation etc…). Utilisation d’une variable LISP Pour déclarer une variable LISP dans le *.ini il faut ajouter la commande suivante dans un des fichiers *.
Lire l'article

Problème Comment modifier à chaud la valeur d’une variable LISP (contenue dans un fichier *.ini) ? Une fonction OJS très pratique permet de modifier la valeur d’une variable LISP sans redémarrer les services Planisware (Intranet Server ou Client lourd). Il s’agit de la fonction “lispeval()”. Cela peut être très utile notamment en développement pour gagner du temps lorsque l’on veut changer la valeur d’une telle variable. Evaluation de la fonction lispeval()​ Prenons l’exemple d’une variable nommée “ modifier le fichier *.
Lire l'article

Planisware 5 : gestion des timeouts lors des traitements longs en client léger
Description du problème Même s'il est en général déconseillé de lancer des traitements trop longs directement en client léger il peut arriver que certaines actions longues (plusieurs minutes) soient quand même réalisées en client léger. Dans certains cas le traitement peut échouer à cause des timeouts. Piste de résolution n°1 : améliorer les performance du traitement C'est la première piste à creuser lorsqu'un traitement est long. Il arrive fréquemment que le traitement réalisé ne soit pas optimisé.
Lire l'article