Building your own BMC Remedy AR System v7 Applications Maruthi Dogiparthi
Agenda Introduction New Goodies Navigation, tree widgets Data Visualization Plug-in framework Development Guidelines Tools BMC Remedy Developer Plus Prefetch Profiler References Q&A
Navigation Bar What is the Navigation Bar in BMC Remedy Action Request System (AR System ) v7? A new control field for presenting navigation menus horizontally or vertically Key functionality Look and feel is fully customizable using style sheets, even on the User Tool. Displays rounded corners and rollover styles for modern look. Provides standard workflow support to hide/disable/highlight nodes. A vertical navigation bar can be multiple levels deep. Horizontal navigation bars support only single level. A developer can add separators for logical separation of nodes. The separator has no visual clue - just a blank space. A developer can easily add or convert existing control buttons to navigation bar nodes. Node labels can be localized.
Navigation Bar - Setup and Creation Horizontal Navigation Field Properties Since Horizontal fields can have only one level, only Menu Items can be added. The Add Menu button is disabled. Select item on click option is unchecked by default Fire workflow again on selected item option is set to Do not fire workflow by default.
Navigation Bar - Setup and Creation Vertical Navigation Field Properties Field can have any level menu. Select item on click option is checked by default. Fire workflow again on selected item option is set to Do not fire workflow by default. Navigation Initial State (explained on next slide)
Navigation Bar - Setup and Creation Navigation Initial State property defines which item is selected on Form Load. Attach Orphaned Items Lets the user add navigation items that have been orphaned Orphaning typically occurs when the parent Navigation items or other control fields like Menus or Buttons are deleted.
Navigation Bar - Workflow Workflow Capability All the workflow features for a button or menu field will work with Nav Bars. New Run Process command added to highlight specific item. PERFORM-ACTION-NAV-FIELD-SET-SELECTED-ITEM This will not fire workflow attached on that item. It will just select the item. Every navigation item is a new control field. All the relevant workflow (hide/disable etc) can be applied to individual Navigation item. Keyboard navigation is defined using Tab key to move from item to item (just like move from button to button). Enter will select the item.
Navigation Bar - Gotchas The height of Horizontal Navigation fields cannot be shrunk to less than 30 pixels. When deleting parent field, the Admin Tool will not delete the navigation item children fields. Instead, AR System marks their type as Menu. So when the user goes the Edit Menu Bar dialog, the children fields will be available there. The Attach Orphaned Items dialog will show these orphaned items as well. If there is not enough space to show the whole field, then Vertical field will have scroll bars and the Horizontal field will clip the items (i.e. no scroll bar will be available). In the Admin Tool, the preview always shows all the items expanded for a Vertical field.
Tree New Tree Control field allows graphical selection and manipulation of application data similar to in Windows Explorer. Allows users to drill down into data Enables user selection to drive custom-built workflow
Data Visualization Plug-in Framework Plug-in architecture for custom UI applications extensions Services handled by Mid-Tier Authentication and permissions Deployment Locale support Session support Event signaling for communicating with AR System (can be used to build workflows) From Client plug-in to Mid-Tier From Client plug-in to parent AR Form From parent AR Form to Client plug-in Drill down from Client plug-in to AR Form Services handled by Server Import/Export as part of applications Access rights on definitions
Plug-in Framework: How Does It Work? General Configuration Configure Plug-in Server(s) for a Mid-Tier Point Admin/User tool to a proper Mid-Tier Deployment Forms Data Visualization Module: To register a new Module (plug-in) Allows version control Data Visualization Definition To create instances of a module (plug-in) To specify behavioral definitions To specify access control Creation of a Data Visualization Field A Data Visualization Field is now used by BMC Remedy Flashboards, as well as other features found in BMC Remedy IT Service Management applications Add a data visualization field to an AR Form, select the definition
Server Forms for Plug-in Plug-in jar file Definition/Instance of a Plug-in
Configuring Plug-in with Admin Tool
Plug-in Framework: Architecture Client Data Visualization Field 1. Request 6. Return the graph/image with code for interactions 3. Redirect Request along with login context Mid-Tier Plug-in Container 4. Get definition(s) for request Plug-in 2.Download And Instantiate Plug-in 5. Validate permissions and return the definition(s) AR System Plug-in Code in Data Visualization Module form Plug-in Definitions in Data Visualization Definition form
Plug-in Framework: Summary Accelerates creating out-of-the-box solutions with easy integration through Mid-Tier Feature is intended for use by advanced AR System developers with Java skills
Development Guidelines What kind of applications are you developing? Customizing out-of-the-box applications vs. new applications Mashups Requirements, Design, Test, and Deploy Where are you spending most of your time? Bottlenecks Tool support Details
Build Business Logic in Filters Don t build business logic on the client build it in filters This best practice helps: Design Performance/scalability Integrations Security Take advantage of plug-ins: Use filter plug-ins over run process Use view forms or ARDBC to access data from other sources Use the Mid-Tier plug-in framework Share, re-use, and recycle
Organize Forms Based on Usage, Data Models Do you really need 1,000 fields on that form? If a field is never visible, don t put it in view. Use temporary fields wisely, and don t be afraid of re-use. Use display only fields whenever data is not being saved. Data may be better accessed as a popup or elsewhere rather than being on the base form. Consider usability as well
Client Logic Client workflow (active links) often executes much more slowly than business logic because active links: Are further from the database and server Latency concerns Bandwidth concerns Use a less optimal interpreter (e.g. JS in a Web browser) Client performance has a high perceived impact to the user
Client Form Design and Layout Table field proliferation Page holders within page holders within page holders Unnecessarily common use of images (esp. BMP) May be able to use image swap on Web to help out Too many states on the same view Multiple field permission states, applied by hand Excessively large number of Change Fields on mode changes Don t pull unrelated information now if it s only used later Table/Flashboard/graphical plug-in field loads Data retrieval
Menus Large query style menus are a problem Large quantity of data Too much data displayed at the same level is hard to navigate and displays slowly (thousands of items) on the Web. Limit menus that load on open to ones that are truly dynamic Be especially careful moving from development into production to flip the switch back again. Most of the time, fairly static items (people, products, groups, versions, etc.) are safe to be loaded once only.
Queries Have the indexes correctly defined Check for any inefficient queries Look for unqualified queries Can result in a table scan
Table, View, and Tree Fields Table fields More than a few hundred rows of table data should be chunked instead (especially with AR System v6.3+). Load tables as late as possible and refresh as infrequently as possible. Table loop guides that change lots of data can run slowly in the native client. Beware of queries that execute badly. Refresh tables only that are needed to be refreshed. If you are on a certain tab, refresh the tables only on that tab. Defer loading Flashboards where appropriate Tree fields Minimize total nodes to <1,000 for optimal performance Chunking is not available; consider using tree and table combinations to improve usability and performance
Active Links Fetch related info in one go Use on get entry filters to pull related data for display Use hidden table columns to prepopulate other fields, other windows, or dialog boxes Use global fields Store small, simple bits of data (e.g. configuration) that will be accessed frequently to cache information Don t read the same record multiple times
Active Links In addition to efficiently fetching data, defer work A responsive UI to accomplish the task with a pause at the end is better than a sluggish UI throughout the whole process. Modify can be better than push field Modify only transmits values that have changed More maintainability Undoing and then redoing the same work (hiding/showing fields, changing background colours, etc.) Deeply nested guides
Things Not to Do in a Web Browser Don t disable built-in optimizations They show up in the Mid-Tier performance log. These are documented. The key ones are below. Never Use an indirect change field action to make a field visible Always try to avoid Using PERFORM-ACTION-ACTIVE-LINK Using browsers with compression disabled Clearing out Mid-Tier cache on a production system Prefetch can help you in most of the cases though
Remove Obsolete Objects It s fine to delete rather than disable workflow. Remove forms that are no longer appropriate. Remove old, unused menus. If something isn t called, it probably isn t needed.
Testing for Performance Use lots of data (where appropriate) Use slow machine (e.g. 266MHz Pentium) Use tools for example: Load testing tools Measurement tools Application explorer for simple optimisation suggestions Test over LAN, cable/isdn, modem Test within the customer environment Or a reasonable recreation of it
Use Logging to Review Efficiency The problem may not be where you thought is was. It could be lurking in a different tier. It could be because of the test scenario. Use the logs to diagnose problems, narrowing by tier: Mid-Tier performance log tells you Mid-Tier time and server API time. Server logs tell you server processing time and database (SQL) time. The profiler tool helps in advanced scenarios.
Tools BMC Remedy Developer Plus
BMC Remedy Developer Plus: Analyze This Analyze application
BMC Remedy Developer Plus: Drill Down Execution view: Is there redundant workflow?
Prefetch > Form-load time is high for the first user. > Configuring Prefetch Find <mid-tier-installation-dir>/web-inf/classes/prefetchconfig.xml. Edit prefetchconfig.xml. You can refer to XML Schema definition at <midtier-installation-dir>/documentation/prefetchconfig.xsd Restart your Mid-Tier server. > Using Prefetch <prefetch-server> <server-name>servername</server-name> <prefetchapp> <app-name>appname</app-name> <prefetch-form> <formname>formname</form-name> </prefetch-form> </prefetch-app> </prefetch-server> Per User group <perfetch-user>
Profiler > Setup for Profiling in the Mid-Tier Configuration
Profiler > Show Profile and Clear Profile buttons
More References Custom login.jsp SSO Performance and scalability benchmarks Differences in Windows\Web Clients Section 508 (Accessibility standard) support
Summary New widgets and features to help you further Best practices for maintainability, performance Tools
Q&A