This sounds like a perfect example of the XY Problem where you are asking how to do X, when you really want to do Y…
I would NOT enable/disable a BPM… but instead put a condition in the BPM that would cause it to enable itself based on the conditions within the system… for example, if you are attempting to have the BPM enabled only when running Physical inventory, there is a field in the inventory tables that tells you if you have an open inventory…
OR you could have one BPM turn on/off a BPMHold (one when you initialize PI, and another when you post it)… BPM holds can then be checked from anywhere. If the BPM hold is on, then you can prohibit (or warn).
OR you can have the BPM always run based on a certain date parameter… There are multiple options here.
I personally do not like the idea of BPMs being turned on/off by the system. The reason is that when you turn on a BPM, it actually creates code, and compiles it. I would rather have an efficient BPM always turned on, but with an IF statement at the beginning to decide if you want it on or not.