SYMPTOM:
Users writing a custom applications using the Strategy Web SDK may find that a call to populate a WebUserGroup object from the Intelligence Server may take a long time to complete. This may be most apparent when the group contains a large number of users as members. The following code demonstrates this behaviour - first the "Everyone" is searched for, since this group always has the largest number of members.
When this operation is completed, an attempt to populate the group is made, and this task may take a long time:
WebSearch search = wof.getObjectSource().getNewSearchObject();
search.setNamePattern("Everyone");
search.setSearchFlags(search.getSearchFlags() | EnumDSSXMLSearchFlags.DssXmlSearchNameWildCard);
search.types().add(EnumDSSXMLObjectTypes.DssXmlTypeUser);
search.types().add(EnumDSSXMLObjectSubTypes.DssXmlSubTypeUserGroup);
search.setAsync(false);
search.setDomain(EnumDSSXMLSearchDomain.DssXmlSearchDomainRepository);
search.setMaxObjects(1);
search.submit();
WebFolder folder = search.getResults();
if (folder.size() > 0) {
WebUserGroup object = (WebUserGroup) folder.get(0);
object.populate();
}A timeout may also occur in some operations.
CAUSE:By default, when an attempt is made to populate a WebUserGroup object, the Intelligence Server returns not only the object definition (in accordance with the current flags), but also the information about the users who are members of this group. If the number of users is large, a considerable amount of time is spent on the Intelligence Server, searching for, and retrieving the user defintions to return as part of the group. This behaviour is per design.
ACTION:The WebUserGroup interface extends the com.Strategy.web.objects.Scrollable interface. This interface allows users to set the number of incrementally fetched results that must be returned to the client. Users wishing to only retrieve the WebUserGroup definition without the user members can set the block size for the interface to 0 as shown below:
WebUserGroup object = (WebUserGroup) folder.get(0);
try {
object.setBlockSize(0);
}
catch(MSTRCheckedException e) {
e.printStackTrace();
}
object.populate();The example provided in this document is provided “as-is” and user has read the following customization warning:ADDITIONAL INFORMATION:The Strategy SDK allows you to customize several Strategy products and extend and integrate the Strategy business intelligence functionality into other applications. However, before changing the way Strategy products look or behave, it is helpful to understand how the application is built. For more information regarding the Strategy products or the process of customizing Strategy products, please refer to Strategy Developer Zone (
https://developer.microstrategy.com).
To access the Strategy Developer Zone, you must have access to the Strategy Knowledge Base, you must have purchased the Strategy SDK, and you must be current on your Strategy maintenance agreement. If you are a US-based business and believe that you satisfy all three of these conditions but you do not have access to the Strategy Developer Zone, please contact Strategy Technical Support at
support@microstrategy.com or at (703) 848-8700. If you are an international business, please contact Strategy Technical Support at the appropriate email address or phone number found at
https://www.microstrategy.com/us/services/support/contact.
CUSTOMIZATION WARNING:This customization is provided as a convenience to Strategy users and is only directly applicable to the version stated. While this code may apply to other releases directly, Strategy Technical Support makes no guarantees that the code provided will apply to any future or previous builds. In the event of a code change in future builds, Strategy Technical Support makes no guarantee that an updated version of this particular customization will be provided. In the event of a code change in future builds, Strategy may not be able to provide additional code on this matter even though this customization is provided at this time for this specific build. For enhancements to this customization or to incorporate similar functionality into other versions, contact your Account Executive to inquire about Strategy Consulting assistance.