The bulletin board messages are organized by topics to make it easy
for cooperating components to find each other’s messages. Each distinct
job, workflow, and co-simulation group has its own bulletin board. Messages
on different bulletin boards are not visible to each other. Bulletin
board data is deleted when the associated job, workflow, or co-simulation
ends; in other words, the data is not persistent and is not available
in the job results or in postprocessing.
Each message is posted to one of three possible bulletin boards:
-
The job-scope board, which is visible to every component in the job,
even those that might run much later in the simulation flow or in later
iterations of a design driver.
-
The workflow-scope board, which is visible to all components within
a single level of the workflow; for example, all components that are
a direct descendent of the same parent process component. This bulletin
board is “per-execution” of the workflow; each iteration of the workflow
has a separate bulletin board.
-
The cosim-scope board, which is visible to all components within a single
co-simulation group. Like the workflow-scope bulletin board, the cosim-scope
board is “per-execution” of the co-simulation group. If the group
is executed more than once, a separate bulletin board will exist for
each execution.
In addition, each note is associated with a topic that is an arbitrary
string used to group related notes.
The bulletin board functions are available to a running component
through the RuntimeEnv interface. In particular, the
following methods are available to send and retrieve messages:
- getBulletinBoardNoteList(BulletinBoardType scope, String topic)
-
Returns a list of bulletin board notes that match the given scope and
topic that are visible to the currently executing component. Only notes
that are in the given scope and that were posted with the given topic
name will be returned.
- postBulletinBoardNote(BulletinBoardType, bbScope, String topic, String
note)
Posts a note to the given bulletin board with the given topic.
Refer to the Java API documentation (javadocs) installed with Isight
for detailed descriptions of each of these methods.
In addition to the bulletin board service, the RuntimeEnv
interface also provides a count of the co-simulation group size, which
can be used to inform each component of the size of the group.
- getCosimGroupSize()
-
Returns the number of components in the co-simulation group of which
this component is a member. Returns zero if this component is not a member
of a co-simulation group. The value returned includes the current component
(e.g., it is the total number of components in the group). This does
not provide any indication of the execution status of the group members
(e.g., some of they may have not started yet).
Bulletin Board Limitations
Bulletin boards are intended for low-volume, small text messages.
They should not be used as the primary communications mechanism for co-simulation
codes. Instead, the bulletin board should be used to exchange communication
parameters among the co-simulation group members so that they can establish
their own direct communications paths.
Bulletin board messages are limited to 1000 characters; topic names
are limited to 100 characters.