I have a question or two regarding how to prepare a plugin for Blackboard SaaS deployment. In our current plugin, the plugin reads config data when it first lights up. This is stashed in a static variable as a politeness to Blackboard so as not to keep rereading this data every time a user clicks on any of our buttons. In a distributed model, such as Blackboard's SaaS deployment, this obviously won't work if any configuration setting changes are made on-the-fly. There are three obvious approaches to address this issue:
a) Simply don't cache the configuration data. In practice, the computational load associated with reloading the configuration data is likely to be minute.
b) Add a timer to flush the cache periodically.
c) Use some official Blackboard API for in-core cache invalidation.
Option a) is trivial to do, of course, but may not be considered to be best-practices (for all I know).
Option b) is technically simple, but introduces the possibility of some inconsistency within the timer window (depending on the timer settings). I don't see this as a big risk item for our application, but nobody likes to have inconsistent caches, especially if it might increase our collective support burden if users get confused.
I'm not aware of any such API for option c), so I don't even know if it's possible, but would be happy to use it if it were considered the right thing to do. It would presumably be the most technically intrusive change to make, and we'd need to be assured that any such API usage would be a (non-error-inducing) no-op for deployment of our plugin in non-SaaS installations.
My inclination is simply to go with option a). I don't think that anyone will ever notice a performance difference - these events are quick, and likely to happen on a minute-by-minute basis, rather than at the millisecond level. I am, however, game to go with your best advice.
This whole issue may be moot, however, depending on the interpretation of the text in https://community.blackboard.com/docs/DOC-1595?et=watches.email.document saying:
"There is no way to install a Building Block in Learn SaaS, regardless of the User Interface you are using. If you have licensed Learn SaaS Plus or Advantage, you do have the ability to install Building Blocks, but you must work with support to schedule the installation."
Installing our plugin adds a link to the System Admin > Tools and Utilities group that allows the system admin to configure our plugin. Will this button be available to any given institution's admin, or will configuration changes have to be mediated through the SaaS installation's change management process?
In effect, I think I need to know what the multi-tenancy model is for plugins running in the SaaS deployment. If our building block is installed, will if be visible to all tenants? What about configuration? At present, part of our plugin configuration involves telling the plugin our institution ID for the institution hosting Blackboard. This, and other configuration options absolutely need to be set on a per-institution (tenant) basis. I don't see any coverage for this issue in any Blackboard documentation (e.g., https://community.blackboard.com/docs/DOC-1595?et=watches.email.document). Am I missing something?