Replies: 1 comment 1 reply
-
Hi, BT.CPP already improves over the model of the "classical" blackboard providing the concept of Input/Output ports. This is the reason why people MUST not use the blackboard directly. There are certainly way to imorive it, but, to be fair:
I can certainly implement that, but I am not sure how that will improve the cocerns mentioned above. The only advantage of a publish-subscribe model is that the subscriber can access all the publications using a FIFO queue, instead or reading the latest value, only. A preliminary step would be to create an abstract class for the "backend" of Input/Output ports, where the blackboard is only one among multiple implementations. If anyone want to invest time (or money) into investigation this, I will be happy to discuss it further. |
Beta Was this translation helpful? Give feedback.
-
I am currently looking into BT.CPP for a project but am hesitant due to the blackboard model for sharing data. Having a general blackboard for sharing data is like throwing all data as globals into the application. This is generally bad because:
To solve at least some of these issues I would propose that data is piped directly from output ports to input ports. This would show clearly the link from producers to consumers, would also make clear exactly what version of data is used at an action (no in between modifiers).
This in itself doesn't solve the out of date data issue, however for simple downstream use cases, resetting triggers could be achieved (would need to think about more).
I don't necessarily think this will remove the need for the blackboard entirely (there may be a need for a few application wide variables) however the blackboard approach doesn't scale to larger projects and teams.
Beta Was this translation helpful? Give feedback.
All reactions