Tags and keywords
The SessionLog
block (on behalf of an owning NetSession
block) carries logs and tracks participating station join/leave member events and relaying of messages by the NCS.
Since logging of station participation and NCS-mediated message relaying are core functions of a Radio Net this diagram necessarily includes some "down in the weeds" descriptions of low-level functionality, but it's a good case for exploring some aspects of low-level graphical Activities modelling vs OpaqueExpressions with scripts.
Modelling and style
SessionLog
BDD is at the size limit of what one might typically show in a single "focus" BDD.A SysML Enumeration MemberEventKind
with literals 'join' and 'leave' is used to track member events. Every MemberLogItem
has a kind:MemberEventKind
. The logJoin(idPS)
and logLeave(idPS)
methods create a corresponding MemberLogItem
via the supporting myLogMemberEvent(idPS,kind)
operation.
Note how the OpaqueBehavior nCurrentlyJoined()
uses a Groovy script to query the difference between the number of 'join' events and the number of 'leave' events. This query approach avoids the need for maintaining an additional counter.
Logging of relaying of a message by the NCS on behalf of an origin station (identified by 'idOgn') and final recipient station (identified by 'idRec') is performed via RelayLogItem
entries.
There are many console "echo" operations used during the final Webel Radio Net simulation. Note that their methods all ultimately just pass a String $msg
to the shared OpaqueBehavior echoSL
for uniform formatting.