Perspectives SubsystemEx. An Operator is logged in. Based on his/her role, a Perspective removes the Administration menu item, adds a Graph SLA Violations menu item, and adds to the resource tabs. Notables
What it isThe Perspectives Subsystem is an RHQ server side component that provides the ability to integrate custom user interface extensions on top of the Core RHQ UI. This means that a new perspective can define which parts or extension points within the Core UI are to be modified/enhanced and also what new content is to be applied in that area. For example, a perspective could be defined to replace the content of the Configuration tab with a task oriented view of configuration viewing/editing. What it's not.It is helpful to dispel a few misconceptions about perspectives that we've encountered as well:
Goals/Constraints
ScopeAs part of the custom UI enhancement aspect, Perspectives are also meant to allow the RHQ engine to support action/task based or non-resource focused views of the same management data. It is helpful to think of a few stereotypical users and some of the roles that may drive such task/role oriented UI experiences. Users with RolesThe following five users have been identified as stereotypical users/roles that could drive perspective definitions. See Perspective Users/Roles for more details
A few wireframes/mockups of potential perspective UIsImplementation DetailsWith the definition and scope of perspectives outlined, it is important to understand what constraints and formats are available to the perspective developer to define their enhancements.
Requirements and Guiding Principals (Technical & Functional)
Possible Enhancements
Extension PointsTo leverage the Core UI it is necessary to classify existing regions or addressing points where enhancements/customizations can be applied to. These identified regions have been classified as Extension Points and are further detailed at this location. Draft of deployment descriptor User-to-Perspective Association
Explicit AssociationThe proposal is to manage Role-Perspective association analogously to the way groups and users are associated in RHQ today. In short, the installed perspectives will be available to the security manager for association with defined roles. This will be available under Administration. The available perspectives for each of a user's roles will be enabled and their effects will be cumulative for the user. See also Conflict Resolution. In this way the perspective developer does not have or need knowledge of defined roles for an installation. Perspective extensions will define the necessary filters (permissions, trait, etc) that can then be applied to the user's view at runtime to decide whether the particular extension is active. See also Extension Points and Perspective Descriptor. In this way a single, logical perspective can be defined with varying runtime effect, depending on the user's characteristics. It is not thought to be an initial requirement to have users disable perspectives. Instead, users should as much as possible be unconcerned/unaware of perspectives affecting their GUI experience. (thoughts on this?) We will most likely be adding a PerspectiveManagerBean/Local/Remote and the Remote API will be enhanced as needed to allow perspective manipulation as needed. Implicit AssociationThere may not be any benefit to explicit association between roles and perspectives. In fact, there may be specific downside in that the extra step of association would be necessary after perspective deployment. An alternative is to assume that all perspectives are associated with all roles. Initially it may seem that this could enable inappropriate perspectives to users. But, remember that extension points have defined filters to ensure they are applied only if the context is correct (plugin deployed/resource type in inventory/permissions available). This processing is necessary in the explicit model but perhaps renders that model unnecessary. Because that same processing could determine the applicable extension points across all perspectives. One potential weakness is a situation with several global perspectives (i.e. perspectives that take over the start page). In this situation a conflict resolution may need to take place since no applicable filter can be applied at the top level. In this case explicit association could prevent the conflict. Perspective DeploymentPerspective ContextSee Perspective Context. Single Sign-On (SSO)See Perspective Context. Conflict ResolutionAs perspectives can and will be developed by independent groups, the opportunity may arise that two different perspectives would both like to control the rendering for the same extension point. In practice the Administrator of the finished product should be aware of and ensure coordination for consistent and polished user experience. Nevertheless conflict resolution for the Perspective Subsystem are discussed in the following link Glossary/TermsPerspective SubsystemAdds extensibility to the existing user interface (Core UI) of JON. Perspectives applied against the Core UI render a particular user experience. A Perspective describes the deltas from the core UI via hooks called extension points. When applied, perspectives act as a sort of lens, and the result of this is a modified UX. End users should not know about the perspective subsystem and should see a consistent UI experience. Perspective developers can expect that the Perspective Subsystem will provide look-and-feel elements (guidelines, shared stylesheets and potentially provide HTML ids/hooks) with which perspective can reuse existing UI display elements from the Core UI. It is also helpful to discuss here two things that the perspective subsystem is NOT:
PerspectiveA perspective is something defined and applied which will alter the Core UI.
Perspective DescriptorIs an XML document defining the resources, rules, extension points and numerous other elements used by the 'Perspective developer' to create a new view leveraging the Core UI. The perspective descriptor will be consumed by the 'Perspective Subsystem' and must conform to an XSD(Xml Schema Definition) document defining/constraining possible perspective configurations. Core UIThis term refers to the Jon 2.3 UI as being the default interface to RHQ. If no perspectives have been added then all resources will be displayed as they were in Jon 2.3 (with minor flow changes). The Core UI is also the central reference upon which all Extension Points are defined to identifying which areas will be modified by a perspective. Extension pointAn extension point is a spot in the UI where the perspective subsystem can introduce elements to the UI. A tab is an example of an extension point. An extension point may indicate one of three conditions with respect to the core UI - on, off, and replaced. |
