anchor.diff:  
   toc::[]
   
  +[NOTE]
  +====
  +This SMT is currently in incubating state, i.e. exact semantics, configuration options etc. may change in future revisions, based on the feedback we receive. Please let us know if you encounter any problems while using this filter transformation.
  +====
  +
   With real-life applications, it is often necessary to deliver only a subset of events into the Kafka broker.
   The user might need to filter the events according to different business rules.
   Kafka Connect provides a generic mechanism to do the filtering in the form of link:https://cwiki.apache.org/confluence/display/KAFKA/KIP-66%3A+Single+Message+Transforms+for+Kafka+Connect[Simple Message Transforms] (SMT).
  
positive.code: 
  |`condition`
  |
  |The expression evaluated for every message. Must evaluate to a boolean value where `true` result filters out the message.
  
  
  |`null.handling.mode`
  |`keep`
  
negative.code: This is a very powerful mechanism but has two drawbacks:
  
  * It is necessary to compile the transformation upfront and deploy it to Kafka Connect.
  * Every change needs code recompilation and redeployment, leading to inflexible operations.
  
  To solve this problem, Debezium comes with the Filtering SMT.
  This SMT allows the operator to write an expression that is evaluated for each event and according to the result, it is either filtered out or passed on for further processing.
  The current implementation supports two languages in which the expression can be written: Groovy and JavaScript.
  
  The Filtering SMT can be used like so:
  
  [source]
  ----
  ...
  transforms=filter
  transforms.filter.type=io.debezium.transforms.Filter
  transforms.filter.language=groovy
  transforms.filter.condition=value.op == 'u' && value.before.id == 2
  ...
  ----
  
  In this example we are using `Groovy` as expression language, and we're filtering out all update records with `id` field equal to `2`.
  
  [IMPORTANT]
  ====
  Debezium does not come with the language implementations in its installation packages.
  It is the user's responsibility to provide an implementation of link:https://groovy-lang.org/[Groovy 3] or link:https://github.com/graalvm/graaljs[GraalVM JavaScript] on the classpath.
  In both cases, the support for the JSR-223 scripting API must be provided as well.
  ====
  
  Debezium binds four variables into the evaluation context:
  
  * `key` - a key of the message
  * `value` - a value of the message
  