Webel Radio Net: Focus BDD for block 'SessionLog'

Gallery
Tutorial

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.

Click on the image to view it full size
This 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.

Up next
Notes
Snippets (quotes/extracts)
Visit also
Visit also (backlinks)
Related slides (includes other tutorials)
Related slides (backlinks, includes other tutorials)