• DoctypeDeclaration{http://etl.sf.net/etl/doctype/0.2.1}:
    • systemId: "events.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 "events.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 { 
    12:   doorOpened;
    13: };
    14: 
    15: commands {
    16:   unlockPanel PNUL;
    17:   lockPanel   PNLK;
    18:   lockDoor    D1LK;
    19:   unlockDoor  D1UL;
    20: };
    21: 
    22: state idle {
    23:   actions {unlockDoor; lockPanel;};
    24:   on doorClosed => active;
    25: };
    26: 
    27: 
    28: state active {
    29:   on drawOpened => waitingForLight;
    30:   on lightOn    => waitingForDraw;
    31: };
    32: 
    33: state waitingForLight {
    34:   on lightOn => unlockedPanel;
    35: };
    36: 
    37: state waitingForDraw {
    38:   on drawOpened => unlockedPanel;
    39: };
    40: 
    41: 
    42: state unlockedPanel {
    43:   actions {unlockPanel; lockDoor;};
    44:   on panelClosed => idle;
    45: };
    46: