• DoctypeDeclaration{http://etl.sf.net/etl/doctype/0.2.1}:
    • systemId: "events2.g.etl"
  • Events{urn:x-etl:samples:events}:
    • events:
      • Def{urn:x-etl:samples:events}:
        • name: doorClosed
        • code: D1CL
      • Def{urn:x-etl:samples:events}:
        • name: drawOpened
        • code: D2OP
      • Def{urn:x-etl:samples:events}:
        • name: lightOn
        • code: L1ON
      • Def{urn:x-etl:samples:events}:
        • name: doorOpened
        • code: D1OP
      • Def{urn:x-etl:samples:events}:
        • name: panelClosed
        • code: PNCL
  • ResetEvents{urn:x-etl:samples:events}:
    • events:
      • ResetEvent{urn:x-etl:samples:events}:
        • name: doorOpened
  • Commands{urn:x-etl:samples:events}:
    • commands:
      • Def{urn:x-etl:samples:events}:
        • name: unlockPanel
        • code: PNUL
      • Def{urn:x-etl:samples:events}:
        • name: lockPanel
        • code: PNLK
      • Def{urn:x-etl:samples:events}:
        • name: lockDoor
        • code: D1LK
      • Def{urn:x-etl:samples:events}:
        • name: unlockDoor
        • code: D1UL
  • State{urn:x-etl:samples:events}:
    • name: idle
    • contents:
      • Actions{urn:x-etl:samples:events}:
        • commands:
          • Action{urn:x-etl:samples:events}:
            • name: unlockDoor
          • Action{urn:x-etl:samples:events}:
            • name: lockPanel
      • Transtion{urn:x-etl:samples:events}:
        • event: doorClosed
        • target: active
  • State{urn:x-etl:samples:events}:
    • name: active
    • contents:
      • Transtion{urn:x-etl:samples:events}:
        • event: drawOpened
        • target: waitingForLight
      • Transtion{urn:x-etl:samples:events}:
        • event: lightOn
        • target: waitingForDraw
  • State{urn:x-etl:samples:events}:
    • name: waitingForLight
    • contents:
      • Transtion{urn:x-etl:samples:events}:
        • event: lightOn
        • target: unlockedPanel
  • State{urn:x-etl:samples:events}:
    • name: waitingForDraw
    • contents:
      • Transtion{urn:x-etl:samples:events}:
        • event: drawOpened
        • target: unlockedPanel
  • State{urn:x-etl:samples:events}:
    • name: unlockedPanel
    • contents:
      • Actions{urn:x-etl:samples:events}:
        • commands:
          • Action{urn:x-etl:samples:events}:
            • name: unlockPanel
          • Action{urn:x-etl:samples:events}:
            • name: lockDoor
      • Transtion{urn:x-etl:samples:events}:
        • event: panelClosed
        • target: idle
     1: doctype "events2.g.etl";
     2: // reimplementation of events sample in http://martinfowler.com/dslwip/Intro.html
     3: events {
     4:   doorClosed  D1CL;
     5:   drawOpened  D2OP;
     6:   lightOn     L1ON;
     7:   doorOpened  D1OP;
     8:   panelClosed PNCL;
     9: };
    10: 
    11: resetEvents doorOpened;
    12: 
    13: commands {
    14:   unlockPanel PNUL;
    15:   lockPanel   PNLK;
    16:   lockDoor    D1LK;
    17:   unlockDoor  D1UL;
    18: };
    19: 
    20: state idle {
    21:   actions unlockDoor, lockPanel;
    22:   on doorClosed => active;
    23: };
    24: 
    25: state active {
    26:   on drawOpened => waitingForLight;
    27:   on lightOn    => waitingForDraw;
    28: };
    29: 
    30: state waitingForLight {
    31:   on lightOn => unlockedPanel;
    32: };
    33: 
    34: state waitingForDraw {
    35:   on drawOpened => unlockedPanel;
    36: };
    37: 
    38: state unlockedPanel {
    39:   actions unlockPanel,lockDoor;
    40:   on panelClosed => idle;
    41: };
    42: