Hi all,<br><br>I just added the possibility to enable/disable PropertySpecific as on option inside the KnowledgeBuilderConfiguration. In particular this new PropertySpecificOption can have 3 values at the moment:<br><br>- DISABLED =&gt; the feature is turned off and all the other related annotations are just ignored<br>
- ALLOWED =&gt; this is the default behavior: types are not property specific unless they are not annotated with @PropertySpecific<br>- ALWAYS =&gt; all types are property specific by default<br><br>While using this last option you may want sometimes to make a particular type not property specific. My first thought to allow that was to add a boolean argument to the @PropertySpecific annotation so you could write @PropertySpecific(true) (or just @PropertySpecific since true would be the default value) when you want to make a type property specific while using the ALLOWED option (or no option at all) and @PropertySpecific(false) when you want a type not being property specific while using the option ALWAYS.<br>
<br>As pointed out by Mark this would have the unpleasant side effect that the default value for @PropertySpecific is actually the unwanted (and useless) one while using the ALWAYS option. For this reason, instead of adding a boolean argument to @PropertySpecific, I introduced a second annotation @NotPropertySpecific having the meaning of @PropertySpecific(false). To be honest I am not very happy with this last name so I am looking for a better name for the @PropertySpecific/@NotPropertySpecific pair. Other possibilities could be: @Watchable/@Unwatchable and @Fine/@Coarse but I cannot decide between them. Any preference or even better any good alternative idea?<br>
<br>On a different note, I have a few doubts on how to infer the bit mask of the watched properties of a type for 2 specific patterns:<br><br>1. Person ( this == $child.father )<br>at the moment while pattern matching on &#39;this&#39; the Long.MAX_VALUE mask (meaning watch for changes on ALL the type&#39;s properties) is inferred. Despite this choice is not formally wrong, probably it could be refined a bit more. In reality I don&#39;t think I could do something different if Person is a JavaBean, but if it is defined as a type declaration in the DRL maybe I could watch only the properties annotated with @key (if any). Any thought?<br>
<br>2. Person ( )<br>currently also in this case the inferred mask is Long.MAX_VALUE. I am not sure this is neither the correct behavior nor the most intuitive one, but in this case I cannot think to a better strategy. Any suggestion?<br>
<br>Thanks for your feedback,<br>Mario<br>