View Javadoc
1   package xuml.tools.model.compiler.runtime;
2   
3   import java.io.Serializable;
4   
5   import scala.concurrent.duration.Duration;
6   
7   public interface Entity<T> {
8   
9       Serializable getId();
10  
11      /**
12       * Returns a string that uniquely represents an individual entity in the
13       * database.
14       * 
15       * @return
16       */
17      String uniqueId();
18  
19      /**
20       * Signals the entity with the given event. ThreadLocal will be used to
21       * detect if an event is to self or not. Events to self are queued up to run
22       * synchronously after the on-entry procedure on this entity associated with
23       * the event is run and before the transaction is committed. Only after the
24       * transaction is committed successfully will the signals to other entities
25       * that were made by the on-entry procedure be sent.
26       * 
27       * @param event
28       */
29      T signal(Event<T> event);
30  
31      /**
32       * Signals the entity with the given event after the given delay.
33       * ThreadLocal will be used to detect if an event is to self or not. Events
34       * to self are queued up to run synchronously after the on-entry procedure
35       * on this entity associated with the event is run and before the
36       * transaction is committed. Only after the transaction is committed
37       * successfully will the signals to other entities that were made by the
38       * on-entry procedure be sent.
39       * 
40       * @param event
41       */
42      T signal(Event<T> event, Duration delay);
43  
44      /**
45       * Signals the entity with the given event at the given epoch time in ms.
46       * ThreadLocal will be used to detect if an event is to self or not. Events
47       * to self are queued up to run synchronously after the on-entry procedure
48       * on this entity associated with the event is run and before the
49       * transaction is committed. Only after the transaction is committed
50       * successfully will the signals to other entities that were made by the
51       * on-entry procedure be sent.
52       * 
53       * @param event
54       */
55      T signal(Event<T> event, long time);
56  
57      /**
58       * Runs the on-entry procedure associated with this event. No transaction is
59       * opened around the on-entry procedure. This method should be used for unit
60       * testing purposes only. Please use the signal method instead.
61       * 
62       * @param event
63       */
64      T event(Event<T> event);
65  
66      /**
67       * Returns a helper instance for this entity. The helper keeps track of
68       * calls to self and to other entities during an on-entry procedure and
69       * ensures they are run at the appropriate time.
70       * 
71       * @return
72       */
73      EntityHelper helper();
74  
75  }