Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 5.87 KB

XM-GUI.adoc

File metadata and controls

33 lines (27 loc) · 5.87 KB

XM-GUI

Interface graphique permettant d’éditer des problèmes de théorie de la décision et d’envoyer ces problèmes à des services web.

Contexte

Une série de services web ouverts permet d’utiliser les méthodes d’aide multicritère à la décision. Ils reposent sur le format XMCDA et sur le logiciel diviz, qui permet l’invocation des services sans devoir programmer. L’utilisateur doit cependant fabriquer à la main les fichiers XML d’entrée (ou convertir du CSV), et plus généralement il n’existe pas d’intégration des outils dans un logiciel très simple d’emploi.

Pour comprendre l’usage actuel de ces services, suivez le tutoriel diviz. Pour comprendre le format de données utilisé, examinez l’exemple Six real cars au format XMCDA v2 (X2).

On repartira d’un projet existant, qui permet de manipuler des alternatives, des critères, des évaluations à l’aide d’une interface graphique et de les enregistrer au format X2, et d’appeler un service web à l’aide de ces données.

À envisager

  • Création en ligne de commande d’un rangement de m alternatives numérotées de 1 à m, sauvegardé au format XMCDA-modular (XM, utiliser la bibliothèque JAXB). Voir code existant, classe AlternativesRanking, mais utiliser plutôt une ImmutableLinearPreference du projet J-Voting.

  • Création en ligne de commande de m alternatives et n critères avec des évaluations aléatoires, sauvegardés au format XM.

  • GUI pour créer un AlternativesRanking contenant un ensemble d’alternatives et un rang associé à chaque alternative (voir code existant ; améliorer classe AlternativesRanking). Le GUI sauvegarde au format XM, au fur et à mesure de l’édition.

  • Nouveau GUI pour éditer des évaluations, l’ensemble des alternatives et des critères étant fixé à m et n (donnés en paramètres au lancement). S’inspirer de l’approche de J-Voting.

  • Pouvoir convertir en ligne de commande un rangement d’alternatives au format XM vers un même rangement au format X2

  • Pouvoir, en ligne de commande, appeler le service web wsd-rankAlternativesValues-RXMCDA (voir test-call-xmcda-ws et code existant) et obtenir le numéro de ticket à partir d’une instance de AlternativesRanking (écrit sur disque)

  • Pouvoir obtenir le résultat à partir du ticket.

  • Génération d’un descripteur d’entrée (ou de sortie) de service web en JSON à partir de la ligne de commande. Le programme reçoit en paramètre l’URL d’un fichier descripteur diviz description.xml (exemple). Créer pour ce faire une classe XMCDASubSchema. Une instance de cette classe décrit les informations nécessaires pour appeler un service web XMCDA donné. Les données consistent en une association entre des noms (String représentant le nom de l’entrée) et des types XMCDA (le "xmcda main tag"). Les types XMCDA possibles sont représentés à l’aide d’un Enum XMCDAType (inutile de prévoir toutes les possibilités, incluez un certain nombre de types possibles pour illustrer). Exemple : Alternative, Value, AlternativesValues, etc. La documentation autre présente dans le fichier descripteur n’est pas reprise dans la classe.

  • Programme qui génère dans le répertoire courant des descripteurs d’entrée de service web en JSON à partir du site de Decision Deck.

  • GUI pour éditer directement un ensemble d’alternatives, de critères, et leurs évaluations.

  • Génération de GUI dynamique : le programme lit les fichiers XM dans le répertoire courant au démarrage et crée un onglet par fichier, du nom du fichier. Quand on clique sur cet onglet, on édite le contenu du fichier correspondant.

  • Pouvoir ajouter un onglet au GUI dynamique (ce qui ajoute un fichier).

  • Pouvoir renommer un onglet (ce qui renomme le fichier).

  • GUI qui montre le résultat de l’appel au service web rankAlternativesValues (ou le ticket en cours) et se rafraichit automatiquement lorsque l’entrée change. Il permet également de sélectionner l’entrée adéquate s’il y en a plusieurs

  • Mécanisme général à base de XMCDAProducer, un XMCDAProducer ayant un nom et consommant et produisant une liste de types, parmi Alternatives, Criteria, Evaluations, AlternativesRanking, et étant associé à un GUI. Par exemple le XMCDAProducer performances consomme Alternatives et Criteria et produit Evaluations. Au démarrage on fournit une liste de XMCDAProducer possibles. L’utilisatrice peut afficher autant de XMCDAProducer qu’elle souhaite.

  • L’appel au service web est aussi un XMCDAProducer.

  • Classe XMCDAData dont une instance contient une List de Node, décrivant un ensemble de données XMCDA.

  • Classe XMCDAServiceCaller permettant d’appeler un service web XMCDA. On lui envoie l’url et le XMCDASubSchema d’un service web et un XMCDAData décrivant les données, et elle renvoie un numéro de ticket. Une autre méthode permet, étant donné le ticket, de récupérer un XMCDAData contenant le résultat de l’appel.

  • Classe XMCDASimpleServiceCaller à laquelle on envoie une url, un XMCDASubSchema et un XMCDAData, et qui renvoie un Future permettant d’obtenir le résultat attendu. La tâche créée interroge le service web (pour savoir si le travail est terminé) d’abord toutes les deux secondes pendant les premières dix secondes, puis toutes les dix secondes pendant la première minute, puis toutes les minutes.

  • Serveur web (facade) permettant d’appeler un service web existant à partir de données XM.