Transcript
Page 1: Orchestration  d’activités Web  avec  HipHop

Orchestration d’activités Web avec HipHop

Gérard Berry

Chaire Algorithmes, machines et langages

Collège de France

Cours 7, 28 mai 2013

Page 2: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 2

Page 3: Orchestration  d’activités Web  avec  HipHop

3G. Berry, Collège de France 21/05/2013

Page 4: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France

• Avoir une vision logique unifiée des événements à traiter– événements d’IHM chez le client – événements provenant de services– événements provenant d’objets sur le Web– événements temporels– événements engendrés par Hop

• Définir comment réagir au cours du temps à ces événements, en fonction de la mémoire des événements passés

• Eviter tous les problèmes de synchronisation de threads / event-listeners grâce à l’hypothèse synchrone

21/05/2013 4

Que veut dire orchestrer?

Exactement l’objectif d’Esterel, mais en plus ambitieux :intégration dans Hop, récursivité, dynamicité, client / serveur, etc.

Page 5: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 5

Méthode classique, Javascript / HOP

(add-event-listener! ev (lambda (e) ...))

ev (lambda (e) ...)).........

ev

risque d’interférence:listener dans listenersi listener compliqué

seulementsi idle

Page 6: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France

ev1 (lambda (x) ...))ev2 (lambda (x) ...))

21/05/2013 6

L’approche synchrone

ev1

1515

code réactif

ev2

réaction décidée !

machine réactive

séquence, parallélisme, communication, préemptionsynchrone, en temps conceptuellement nul

Page 7: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France

• ReactiveC, F. Boussinot : intégration dans C– successeurs : Junior (Java), SugarCubes, FunLoft, etc.

21/05/2013 7

Précurseurs*

• Reactive ML, L. Mandel : intégration dans CAML– signaux comme valeurs de première classe– récursivité, dynamicité, etc.

• Timed CCP, V. Saraswat : – Intégration dans la programmation par contraintes parallèles– contrôle beaucoup plus implicite*plus exactement : plagiats par anticipation

• Esterel, Lustre, Signal– intégration dans l’environnement non précisée

• Machines d’exécution Esterel (C. André, D. Gaffé)

Page 8: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France

• Status de présence / absence, unique à chaque instant(now& s) ;; expression Hop(pre& s)

21/05/2013 8

Evénements HipHop

(class HipHopEvent ...) ;; similaire aux événements Esterel v7

• valeur de type quelconque, unique à chaque instant(val& s) ;; expression Hop(preval& s)

• fonction de combinaison des valeurs émises simultanément(class CountEvent::HipHopEvent (status (default #f)) (init (default 0)) (op (default +)))

Page 9: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 9

HipHop Noyau : constructeurs d’ASTstmt :

(nothing&) 0

(emit& event hop*) ! s(v)

(atom& hop)

(pause&) 1

(if& hop stmt stmt) s ? p, q

(seq& stmt+) p ; q

(loop& stmt+) p*

(par& stmt+) p | q

(suspend& event stmt+) s p (trap& trap-ident stmt+) { p }

(exit& trap-ident) k, k 0

(local& (local-sig+) stmt+) s \ p

Page 10: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 10

HipHop dérivé – définitions fonctionnelles

(halt&)

(sustain& event hop)

(await& [ :immediate bool ] delay stmt*)

(abort& [ :immediate bool ] delay stmt+)

(until& [ :immediate bool ] delay stmt+) ;; weak abort

(loop-each& delay stmt+)

(every& [ :immediate bool ] delay stmt+)

(define (sustain& event . hop-list) (loop& (emit& (cons event hop-list) (pause&)))

construit en HOPl’AST de sustain&

Page 11: Orchestration  d’activités Web  avec  HipHop

11G. Berry, Collège de France 21/05/2013

(define (repeat& N::int stmt) ;; declare a fresh private Hop counter (let ((count::int N)) ;; install a mark to exit after N steps (trap& end ;; reset the local counter (atom& (set! count 0)) ;; loop forever (loop& ;; execute the user stmt stmt ;; decrement the Hop counter (atom& (set! count (+fx count 1))) (if& (= count 0) ;; the end, escape from the loop (exit& end))))))

Vraie fonction,pas macro !

Page 12: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 12

ABRO paramétrique en HipHop

;; Hop function(define (ABRO& A B R O) (loop-each& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O)))

// Esterel modulemodule ABRO : input A, B, R; output O;

loop { await A || await B }; emit O; each Rend module

Emettre O dès que A et B sont arrivésRéinitialiser le comportement à chaque R

Page 13: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 13

Variante de ABRO

A partir du premier R, émettre O dès que A et B sont arrivésarrêter tout si A et B en même temps

(define (ABRObis& A B R O) (trap& Done (every& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O) (if& (and (now& A) (now& B)) (exit& Done)))))

Page 14: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 14

Modularité héritée de Hop

(let ((s (instantiate::HipHopEvent))) (par& (emitter& s) (receiver& s)))

(define (emitter& s) ... (emit& s) ...)

(define (receiver& s) ... (await& s) ...)

s

Page 15: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 15

Instructions calculées

(define (await-last-of-list& . sig-list) (par& (map await& sig-list)))

(await-last-of-list& A B C)

(par& (await& A) (await& B) (await& C))

Définition dynamique de comportementsgenpar&, dyngenpar& : calculer l’instruction

dynamiquement au moment même de la réaction

Page 16: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 17

Machines d’exécution

• But : gère les événements d’entrée et de sortie• But : déclenche la réaction sur appel externe

(define M (instantiate::HipHopMachine (program P&)))

A

B :: int

MP& : code HipHop

A B val& B

X

Y :: intX Y val& Y

Page 17: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 18

Machines d’exécution – entrées

(hiphop-input! M A)...(hiphop-input! M B 1515)...(hiphop-react!)

(hiphop-input-and-react! M A)

(hiphop-input-and-react! M B 1515)

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

Appel de fonction hiphop-input!dans le code principal ou dans un event-handler

Page 18: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 19

Machines d’exécution - entrées

• Stratégies de gestion des entrées entre deux réactions

A ARRÊT DEMANDÉ : un seul appui suffit à tourner le bit...B Toc : on compte les Toc Toc Toc Toc (hiphop-input! M Toc 3)

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

Page 19: Orchestration  d’activités Web  avec  HipHop

G. Berry, Collège de France 21/05/2013 20

Machines d’exécution

• Définition d’un event-listener pour chaque sortie appelé par M si le signal est émis

A

B :: int

X

Y :: int

MP& : code HipHop

A B val& BX Y val& Y

(hiphop-add-event-listener! M X (lambda () (action) ))

(hiphop-add-event-listener! M Y (lambda (V) (action V) ))

Page 20: Orchestration  d’activités Web  avec  HipHop

21G. Berry, Collège de France 21/05/2013

Retour à Manuel Serrano