For more detail about CRM content management, please go to my wiki page CRM Content Management.
I tried to use them to perform the search and I expected only the attachment instances belonging to the given product I specified in INSTID are returned.
To my surprise, the query result includes not only the attachments for the given product, but also returns lots of attachments belonging to other products created by me.
Through debugging, I found the parameter CATID, TYPEID and INSTID is not passed into main search function module in line 61, which means they are not considered during search at all.
Instead the search result are filtered by the three parameters in post processing, according to the attribute value “CRM_SEARCH_VISIBILITY” of each attachment instance:
In Attachment Property UI, we can assign three kinds of value for “Visible in Search”:
It is defined as instance attribute in Document model workbench:
according to the filtering logic in code below, the attribute would work as below in CMAdvDocumentFinder implementation:
No Restriction: the attachments with such attribute will not be filtered.
1 – In Business Objects of the Same Object Type Only: the attachments whose host business object type not equal to search parameter TYPEID will be filtered out.
2- Only in the Same Business Object: the attachments whose host business object instance not equal to the instance specified by search parameter TYPEID and INSTID will be filtered out.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":