Simplifying existing applications
Reposition or remove fields
If you have small changes to out-of-the-box applications, you will probably just make the changes directly within the application.
A best practice is not to remove entire sections or tabs, but rather to hide them with a Signature Option.
When new versions of the out-of-the-box application are released and this application is upgraded, preserving these old sections and tabs allows for the upgrade process to add these new fields. You can then examine these applications after upgrade to determine if you want to expose any of the new fields in your UI. However, hiding these sections with a Signature Option will have performance implications, so for major differences you might consider cloning the application and modifying the cloned application. More information is available on the Asset Management blog. You can also use this approach to hide sections of an application for certain security groups and show sections of the application to others.
Clone an existing application and edit the clone
You might want to clone an existing application if you want a user interface that is very different from the out-of-the-box application. You might also decide that different users should see very different views of the application.
There is an enhanced maintenance cost to maintain this separate application.
Any additional changes that future versions of your products make to the out-of-the-box applications must be manually merged into your cloned applications if you want these additional features. In addition, you will need to manage the security groups and metadata of this new application separately from the original application. For instance, if the product development team adds 3 new dialogs and 3 new menu options to launch these new dialogs in the original application, you will need to manually add all of this metadata to your cloned application if you want your users to use those dialogs as well. Steps on how to duplicate an application are listed in the Maximo Asset Management Information Center.
Conditionally modify fields based on the state of the record
Conditional UI is a powerful tool that can change the behavior of your user interfaces based on the state of the current record. You can highlight key data for your users based on a condition. For instance, you might choose to change the color of the priority field in the list tab if a ticket has a priority value of 1. In the interests of progressive disclosure, you might also choose to hide additional fields from your end users by default and only show them based on the values of other fields. For instance, you might only prompt a user for a back-out plan for a change if it is a high risk change request.
Conditional UI is not a replacement for business logic. For instance, using Conditional UI to make a field required at various aspects of your process is probably a poor decision, since this requirement is enforced only at the user interface level.
Automation scripting, Java programming, or the workflow engine should be used to enforce business logic in your objects. Because the conditional user interface logic is evaluated every time the user interface is rendered, it can be expensive from a performance standpoint. The conditional user interface expressions are also executed each time the value of a field is set by an end user. This can slow down the time it takes to traverse the page. For example, if you write a SQL conditional expression that takes a half second to execute, then it will take 10 extra seconds for an end user to fill in a page of 20 fields.
You should carefully consider the condition expressions you have written to make sure they execute against the MBO data available in memory if possible and do not require additional database invocations to related records to determine the result of the condition.
Enhancing Existing Applications
Sometimes out-of-the-box applications do not meet your business needs, and you need to add information to them.
Add existing fields to an application
It is possible that the data you want to show in your application view already exists in the database and you just need to present it to your users in the user interface. Open the Database Configuration application for the MBO that is being shown in the application. The data that you want to show might be already available as an attribute of this object. If this is the case, adding this attribute to the application user interface is a relatively simple drag and drop operation in Application Designer. Follow this tutorial.
If the data that you wish to show is available on a field on a related object and the parent and child objects are related in a one-to-one relationship, you can follow a similar approach to the tutorial above and add this related field to the user interface setting an attributename with this syntax:
You should not show these related fields in the list tab of your applications because they can cause an additional database query to fire for every record that’s being shown to retrieve the related information. This process can cause significant performance degradation; for instance if you’re listing 200 records in the list tab, 200 extra SQL queries will fire.
You can modify the advanced search dialog for your application to allow searching on this related information using the same related field syntax. When searching on these related fields, you can search on one-to-many relationships. For instance, you can find any work order with a child task that’s assigned to you.
Add existing related information to an application
For instance you might add a table or dialog to the Person application to show the list of work orders this person currently owns. This information already exists in the database and is accessible through a relationship. Refer to this document for more information.
Add new fields to an application
It is a common scenario for customers to find that new types of data must be collected for their business processes. You will need to first add the fields to the underlying MBO using the Database Configuration application.
- Add a new primitive field (for instance adding a new text attribute, or numerical attribute to the Ticket object). The Maximo Asset Management Information Center provides a good example.
- Add a new field that relates to a different object (for instance a new field on the change work order that points to a person). Here are some references: looking up the remote object.
Relate two existing objects in a new relationship
You might want to build a mapping table that relates existing objects in a new way. For instance you might add a list of persons to a change work order. You will use the Database Configuration application to build a new mapping MBO that captures this one-to-many relationship. This blog post captures how best to create a new child object. This new MBO will have one set of fields that points to the primary keys of the parent object and one set of fields that point to the primary keys of the child object. You will then add a new relationship between the parent MBO and the mapping MBO using the Database Configuration application. You’ll then add this relationship to a new table in the application using Application Designer. In this table you will put a lookup to allow the end users to select the child object that they want to relate to the parent object (see information on configuring a lookup above). You might also choose to write a dialog and Bean code to allow them your end users to select multiple “child” objects to relate to the parent object at one time.
Create an entirely new application to capture business information
This is the most expensive option to develop and maintain. Make sure that another existing MBO doesn’t already represent the concept you’re trying to map inside Tivoli's process automation engine. First you must create the new underlying MBO representation in the Database Configuration application. You have to consider what kinds of business logic and validation logic this MBO should apply through Automation Scripting or Java code. Make sure to follow best practices when writing the MBO code. Then you must go to the Application Designer and create a new application and point it to your new MBO.