Téléchargement des produits


Version anglaise


 

XPath est un langage permettant d'adresser des éléments disposés dans un modèle de données arborescent (modèle où les éléments ont une relation d'appartenance parent - enfant).

Un élément (ou noeud) peut être de différente nature :

  • soit un élément final valeur ayant un type primitif (alphanumérique, numérique, booléen),
  • soit un élément attribut.

Dans le cadre d'utilisation dans l'AMBSS, le modèle est constitué d'une arborescence de Java Beans.


XPath est un langage permettant d'adresser des objets disposés dans un modèle de données arborescent (modèle ou les objets ou une relation d'appartenance parent - enfant).

Un objet (ou noeud) peut être de différente nature :

  • soit un noeud final valeur ayant un type primitif (alphanumérique, numérique, booléen, etc.),
  • soit un noeud attribut. Il est composé d'un marqueur (un nom) et d'un noeud valeur affecté à l'attribut. Les nœuds attribut sont considérés comme appartenant à un nœud élément,
  • soit un noeud élément. Il est composé de noeuds attributs (sans notion d'ordre entre ces noeuds),
  • soit un noeud liste. Ces noeuds fils sont ordonnés et il est possible d'accéder à chaque noeud grâce a un index.


La localisation des éléments est effectuée sous la forme de chemins de localisation, à la manière du système de répertoires Unix : Un chemin de localisation est composé de différentes étapes de localisation qui sont séparées par des barres obliques (/), de façon analogue à l'adressage de fichiers dans des systèmes de répertoires.

L'ordre des nœuds est déterminé par le chemin (induit par l'imbrication des noeuds, du parent vers l'enfant). Le premier noeud est le noeud racine du chemin.

Les chemins de localisation sont analysés de gauche à droite.


Dans le cadre d'utilisation dans l'AMBSS, le modèle est constitué d'une arborescence de Java Beans :

  • un noeud final est un type primitif Java,
  • un noeud attribut équivaut au getter d'une propriété d'un Java Bean,
  • un noeud élément est un Java Bean ou une Java Map (une table de hachage),
  • un noeud liste est une collection Java.

Clé standard d'un souscripteur Adélia

Un souscripteur est défini par un modèle objet arborescent en YAML (dans le fichier SubscribersConf.yml) ou en JSON (dans le body d'un requête HTTP d'API REST) :


Souscripteur Adélia YAML
id: mySubcriber
startOnCreation: true
config:
	adeliaPgm:
		objectFileName: EAP_1
		javaPackage: my.package.for.eadelia
		parameters:
		- Bob
		- Brown
		- 38
		customObjectMapper: mapperBean1

	adeliaPoolName: poolLambdaServer

	brokerConfig:
		factory:
			id: company.BrokerSubscriberFactory
			parameters:
				provider: factory.json
				aggregate: false






Souscripteur en JSON
{
  "id": "mySubcriber",
  "startOnCreation": true,
  "config": {
    "adeliaPgm": {
      "objectFileName": "EAP_1",
      "javaPackage": "my.package.for.eadelia",
      "parameters": [
        "Bob",
        "Brown",
        38
      ],
      "customObjectMapper": "mapperBean1"
    },
    "adeliaPoolName": "poolLambdaServer",
    "brokerConfig": {
      "factory": {
        "id": "company.BrokerSubscriberFactory",
        "parameters": {
          "provider": "factory.json",
          "aggregate": false
        }
      }
    }
  }
}



Noeud attribut

Une clé standard est définie par un noeud racine "subconf" qui identifie un souscripteur et stocke les informations le constituant. Les sous-noeuds "id", "startOnCreation" et "config" sont des noeuds attributs.

Les noeuds "id" et "startOnCreation" ont des types primitifs (alphanumérique et booléen). Leur valeurs sont accessibles par les chemins "subconf/id" et "subconf/startOnCreation".

Le noeud "config" est un noeud élément avec comme fils les sous-noeuds "adeliaPgm", "adeliaPoolName" et "brokerConfig".

Noeud liste

Pour récupérer les paramètres du programme EADELIA associé au souscripteur il faut accéder aux éléments du noeud liste 'subconf/config/adeliaPgm/parameters'. Il est possible d'utiliser la notation indexée pour accéder à un élément dans la liste :

'subconf/config/adeliaPgm/parameters[1]' permet d'accéder au premier élément de la liste.


Remarques :

  • L'expression 'subconf/config/adeliaPgm/parameters[<index>]' est un raccourci d'écriture de l'expression XPath utilisant la fonction prédéfinie position() : 'subconf/config/adeliaPgm/parameters[position()=<index>]'
  • L'accès au dernier élément peut se faire en utilisant la fonction prédéfinie last() : 'subconf/config/adeliaPgm/parameters[last()]'


Accès aux propriétés d'une liste

Liste vide

Pour déterminer si un élément liste est vide, il faut utiliser l'attribut "empty" comme suit :

'subconf/config/adeliaPgm/parameters/empty' retourne une valeur booléene.


Taille de liste

La taille d'une liste peut être récupérée grâce à la fonction XPath prédéfinie count :

'count(subconf/config/adeliaPgm/parameters)'


ou par une fonction prédéfinie livrée dans l'AMBSS :

'adelUtils:collectionSize(subconf/config/adeliaPgm/parameters)'

Noeud élément Map

Dans certains cas d'utilisation un noeud élement représente une table de hachage (structure qui permet une association clé-valeur, c'est-à-dire une implémentation du type abstrait tableau associatif). Il s'agit d'un tableau ne comportant pas d'ordre (contrairement à un tableau ordinaire qui est indexé par des entiers). On accède à chaque valeur du tableau par sa clé, qui, transformée par une fonction de hachage en une valeur de hachage (un nombre), indexe les éléments de la table.

Dans ce cas les éléments attributs font office de clé.


Dans un souscripteur Adélia, les paramètres d'instanciation de la fabrique désignés par le chemin XPATH 'subConf/config/brokerConfig/factory/parameters' sont stockés sous la forme d'une Map. Chaque fabrique ayant une signature différente, le nom, la cardinalité et le type des paramètres sont définis par la fabrique.

Accès aux propriétés d'une map

Valeur associée à une clé

Pour accéder à la valeur associée à un nom de clé connu, il faut utiliser l'expression XPath suivante :

'subConf/config/brokerConfig/factory/parameters/provider' qui est un raccourci d'écriture de l'expression :

'subConf/config/brokerConfig/factory/parameters[@name='provider']'


Liste des clés

L'AMBSS fournit une fonction prédéfinie qui permet de retourner la liste des clés d'une table de hachage :

'adelUtils:mapKeys(subConf/config/brokerConfig/factory/parameters)' retourne un élément liste de deux éléments valeur ['provider', 'aggregate']


Liste des valeurs associées aux clés

L'AMBSS fournit une fonction prédéfinie qui permet de retourner la liste des valeurs associées aux clés d'une table de hachage :

'adelUtils:mapValues(subConf/config/brokerConfig/factory/parameters)' retourne un élément liste de deux éléments valeur ['factory.json', false]


Remarque :

L'ordre des éléments des listes retournées par les deux fonctions mapKeys et mapValues correspond (la clé d'index 1 dans la liste mapKeys a une valeur associée qui correspond à l'index 1 dans la liste mapValues).

Clé spécifique d'un souscripteur Adélia

Les clés spécifiques correspondant aux éléments variants 'subconf/config/brokerConfig/brokerConnection' et 'subconf/config/brokerConfig/subscribeTopic' suivent les mêmes principes d'écriture et de syntaxe. Se référer à la documentation liée à chaque courtier pour connaître le modèle de données des éléments variants.


↑ Haut de page

  • Aucune étiquette