After some productive discussions with Thales about the best ways to filter events, we finally decided on an interesting filtering mechanism. We will be using a separate filter object for each condition. This allows us greater flexibility in composing our filtering conditions. An event must pass a chain of filters, if any of them rejects the event then it doesn't get processed. ORing of conditions would be possible via a higher level OR filter that takes as its parameters the filters to OR, this feature is not yet need though.
Our first concrete filter was implemented and tested, it will filter entities based on their Instance IDs.