Why it's there a requirement to use RunBase instead of the newer framework, SysOperation?
In SysOperation framework, you'll define a data contract holding a collection of IDs and you'll fill it from the controller class. You'll associate you menu item button with a data source, which will automatically pass the record to the controller class. Then you'll use MultiSelectionHelper class to get selected records and you'll add their IDs to the contract.
You would get the data in the same in RunBase, but than you would have extra work with serializing and deserializing the collection of IDs.