OCLOperators Not
This page was created by Lars.olofsson@mdriven.net on 2021-05-11. Last edited by Edgar on 2025-01-20.

"Not" is the usual Not operator found in most languages.

But there are a few things to point out when writing expressions using True, False, nullable booleans and Not.

Avoid the risk with nullable booleans

Consider xxxx.DisableEditing = false

When you think you want to use "a boolean" with = true/false , don't - It's almost never correct.

The reason is that an nullable boolean is tri-state. False, True and Null.  If an expression is xxxx.DisableEditing that is false for BOTH False and Null.

So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many)

For example

self.ValidTo.notNull and
self.AddedTo.isNull and
(self.Agreement.Facilitator.DisableEditing = false)

If DisableEditing is Null, then "(self.Agreement.Facilitator.DisableEditing = false)" is actually True. (the above false/null problem)

self.ValidTo.notNull and
self.AddedToJournalSearch.isNull and
not self.Agreement.Facilitator.DisableEditing