Hi,
Tom Ford is really the grand master at this but basically you build a process that uses variables that can be set at runtime by building a non-persisted object(s) and calling that(those) objects as part of the process. I.E.: FIND Object1 WHERE NonPersistedObject.Attribute1... (You can provide secondary non persisted objects or dynamically populated secondary fields in the first non persisted object based on the selection of the first field. The first field is dynamically fed with a list of the available objects that you might want to query).
Tom would probably argue that you use fields in system settings in order to retain the last used selections but you can go either way. Once you have the desired objects in context you can use SET or similar methods to manipulate the data. Again, you can limit the SET selections using another non-persisted object to build the SET statement.
I think that the trick is to consider non-persisted business objects or system setting attributes or even LoggedInUser attributes as highly flexible and powerful variables that can be populated in any number of ways and have rules applied to them. With a little bit of thought and planning, you can create very flexible 'generic' or 'all purpose' processes that are easily manipulated at runtime to achieve the desired results.
I'm afraid that I don't have time to put an example together for you but hopefully this may be an approach that will work for you and my explanation makes some kind of sense.
Cheers,
Pete