IBM Support

Maximo Business Object Development - Best Practices

Technical Blog Post


Abstract

Maximo Business Object Development - Best Practices

Body

If you are an IBM client, business partner, consultant, or even a IBM Maximo developer  follow the Maximo Development Best Practices when customizing Maximo Business Objects (MBOs).  Many customers extend Maximo business objects and make their own customizations.  When extending the MBOs be aware that if done incorrectly, it could lead your users to experience poor performance, out of memory errors and system crashes.  This will lead to user frustration and potential downtime. 

Please note that constructing MBOs is expensive (system resources).  If you have a MBO available to use, do not refetch the MBO, reuse it.  If you use the same relationship from the same MBO, it gets the same MboSet already created.  While using object oriented programming you can pass the MBO as a parameter, in order to be used within a method.  Use the information that already resides in memory whenever possible, and avoid getting new MBOs from the database.  Do not implement a cache that holds on to MBOs because this could prevent the system from releasing the MBOs and can cause out of memory problems.

Another common problem seen in custom code are open MboSets.  When a MboSet is fetched from the database and is then set in memory; you need to make sure that you close the set when you are done using it, otherwise  locking or even dead locking can occur in some databases.  If a MboSet is used for traversing forward only and not to be saved, then you can mark the MboSet as a "DISCARDABLE" set.  Using the discardable flag enables the release of MBOs quicker.  Garbage collection usually cleans up the left over MBOs and MboSets, but it could be slower that what you need, therefore discardable MboSets are recommended.

If two MboSets contain MBOs pointing to the same record in the database and you modify both you will get  "Record has been updated by another user".  This is why you should use the same relationship to obtain the record.

The Best Practices mentioned and more can be found on the IBM Asset and Facilities Management Community.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

UID

ibm11133559