通常,当CIM对象被以任何方式修改后,都会导致对象的图形被刷新(如果有图形表达的话),与此同时,针对此对象的改变通知也会被触发,从而导致此对象引用者上的通知函数会被调用,继而引发网状形式的修改通知传递。在多数情况下,这正是我们所期望的情形。但在某些特殊情况下,我们可能会希望能只修改对象而不触发其上的修改通知,比如: 仅修改对象的显示属性(颜色、线宽、线形等)时就不希望触发修改通知,因为这种通知对于响应者而言通常无意义的,或者说并不是响应者通常都会关心的。
为此,系统提供了一些方法及机制,以允许用户显式指定是否需要在对象被修改时触发通知,主要包括:
- 在CimRoot中绝大多数的修改类方法上,都提供了可选的doNotify参数用于控制是否允许触发通知,具备此参数的常见方法有:
- AddReference
- RemoveReference
- RemoveAllReferences
- SetValue
- SetValues
- SetArray
- Touch
- Delete
- AddToModel
- CommitChanges
- CimRoot::ProcessNotify: 此方法用于主动触发那些先前未被允许触发的改变通知;
- CimRoot::EnableNotify: 此方法用于在全局显式的启用或关闭改变通知的触发,它的控制将影响全局所有改变通知的触发;
- CimRoot::Touch: 此方法,可在并不实际修改对象的情况下触发对象修改通知,并可选的更新对象图形;