Institut numerique

Les « function »

En procédant de la sorte, nous obtenons un résultat différent, mais au prix d’une requête longue (121
lignes) et complexe à lire.

Nous utiliserons les « functions » ou fonctions proposées par XQuery afin d’alléger le code.

Le bloc suivant calculant la somme des mesurages pour une activité se répète à sept reprises.

Nous le transformons en « function ».

Une « function » comporte les parties suivantes:

– la déclaration de « function » suivie de son nom « declare function local: ici le nom ».

– les paramètres de la « function » et le type retourné par la « function » (entre parenthèses).

– le corps de la « function » contenant les instructions de traitement.

Nous déclarons la « function » que nous nommons : « activite »:

declare function local:activite

Nous avons un seul paramètre qui est « act1 » ou « act2 », …, ou « act7 ».

La variable « $ak » que nous déclarons prendra comme argument un des sept « act… »

Ce paramètre est de type « atomic », et le résultat de la « function » sera également une valeur
« atomic » (un nombre).

La déclaration de « function » complète est:

declare function local:activite($ak as xs:anyAtomicType?)as xs:anyAtomicType?

Le corps de la « function » est la partie de imbriquée dans SUM.

La « function » complète ci-dessous:

Nous pouvons créer une seconde « function » calculant la somme des mesurage par activité pour
une commande précise.

Nous nommons cette « function » « activite2 ».

XQuery permet qu’une « function » se trouve au sein d’un espace mémoire dédié ou bien dans la
requête elle même; nous retenons cette seconde possibilité.

Les deux « functions » se trouvent en préambule de la requête.

Au sein de la requête, pour le calcul relatif à l’activité1, nous appelons la « function » « activite »
par:

local:activite(“act1”)

et lui passons le paramètre « act1 »

et la seconde « function » qui reçoit le meme paramètre par:

local:activite2(“act1”)

La requête complète devient:

La requête est simplifiée, 85 lignes; si nous souhaitons modifier la méthode de calcul des quantités
de mesurage, une seule modification de « function » sera nécessaire, alors qu’il aurait fallu modifier
à sept reprises sans l’usage de « functions ».

Le résultat de cette requête est identique:

Page suivante : Vérification du résultat

Retour au menu : Elaboration d’une application de la méthode Activity Based Costing utilisant les technologies XML