Understand MicroStrategy Mobile Architecture for iOS
The MicroStrategy Mobile architecture includes the Mobile Server, Intelligence Server,Certificate Server, database, and client-side devices.
The architecture for the MicroStrategy Mobile application is modeled after the architecture for the Apple iPhone SDK. It is based on the Model–View–Controller (MVC) paradigm, as shown in the diagram below. The Services layer communicates with information stored on the local device and communicates with MicroStrategy Mobile Server using the MicroStrategy Web Task Infrastructure. The Task Infrastructure is discussed in detail in the Web SDK section of the MSDL under Tasks and Service-Oriented Architecture.
A View object—called a visualization or widget—is what users see in the mobile application. The primary function of a View object is to display data from the Data Model object and to allow that data to be edited. View objects communicate with the Controller about changes in the Data Model, both sending and receiving information about these changes.
The Controller acts as an intermediary between the Data Model and the View, allowing them to remain independent of one another and channeling information in both directions. The Controller sends changes from the View to the Data Model, and it also modifies the View based on changes to the Data Model. For example, user actions in the View layer that create or modify data are communicated through the Controller object and result in the creation or updating of the Data Model object. When the Data Model object changes as a result of this communication, it notifies the Controller object, which updates the appropriate View objects.
The Controller sits on top of a Services layer, which communicates with the MicroStrategy Web Task Infrastructure and the preferences and report lists that are stored on the local mobile device. The Task Infrastructure is MicroStrategy Web's Service-Oriented Architecture (SOA). Each MicroStrategy Web task is a discrete chunk of functionality packaged as a web-accessible service that can be called as a service from anywhere using any protocol. These web-accessible services—and the packaged functions they represent—perform actions such as data retrieval, session management, caching, and so on. Examples of tasks include ReportDataService, which gets data for a report, and PromptsService, which answers prompts on a report.
The Data Model holds data and provides it to various Views. The Data
Model object also defines the logic and computation used to manipulate
and process that data. Data Model objects communicate with the Controller
about changes in Views, both sending and receiving information about these
The Data Model holds data and provides it to various Views (that is, widgets displayed in a mobile application). MSIModelData represents the entire data for one report. It provides the list of all MSIHeader objects in the report, as well as methods to access report data row-by-row. Each row in the data is a collection of cells, and each cell is a MSIHeaderValue object.
The grid below shows data for a simple tabular MicroStrategy report.
MSIHeader objects include MSIElementHeader objects and MSIMetricHeader objects. ElementHeader objects, in turn, include MSIAttributeHeader objects, MSICustomGroupHeader objects, and MSIConsolidationHeader objects. MSIHeaderValue objects include DataElement objects and MSIMetricValue objects. DataElement objects, in turn, include MSIAttributeElement objects, MSICustomGroupElement objects, and MSIConsolidationElement objects.
Important objects in the data model include the following:
The MSIHeader represents an object which has data in the form of an element (such as an MSIAttributeElement) or a metric (such as a MSIMetricValue). Header objects include MSIElementHeader objects and MSIMetricHeader objects. ElementHeader objects, in turn, include MSIAttributeHeader objects, MSICustomGroupHeader objects, and MSIConsolidationHeader objects.
A MSIHeaderValue object is what appears in one cell of data.
The DisplayInfo objects are first class objects (that is, objects that directly represent objects in the MicroStrategy metadata), which provide the underlying definitions of the information that is displayed in the widget. The properties of these DisplayInfo objects supply the definitions.