Tag Archives: Java

Customizing Maximo: Java vs. Automation Scripts

Maximo 7.5 provides considerable methods to be configured and modified from screens, lookups and integrations. After exhausting the out of box configuration methods it can be extended with custom code in 2 days: Java and Automation scripting. To make things even more interesting, Automation scripts can be done in a variety of languages most commonly (but not limited to) Python and Javascript. Java customization is implemented via dependency injection at runtime. In this article I’m going to examine the pros and cons of each and examine common use cases. Working on different projects with different groups there is a lot of misconception of the capabilities, strengths and weaknesses of different ways to customize Maximo in regards to implementation, support and product upgrades and fix packs. The goal is not to advocate a solution but to educate, inform and spur discussion. Generally Automation Scripts are better for small projects or very basic customizations and Java for everything else. Fortunately both technologies are not mutually exclusive and play well together.

Tools:

  • Java provides mature and flexible tools. The Eclipse platform provides code completion, remote debugging, refactoring, static typing and access to mature build systems and automated testing. Java customizations can be organized into shared libraries and packages
  • Automation Scripts use standard Python development IDEs such as PyCharm. The IDEs will provide limited code completion, error checking and syntax highlighting
  • Java has far more capable, flexible and powerful tooling, but it can require significant effort to setup a project and configure the tools. Complex Maximo projects will benefit greatly from the access to the mature toolset
  • Automation Scripts in contract require virtually zero time to setup. Small projects, prototypes can be built and deployed in short turnaround. Complex or a large number of scripts will conversely be more difficult to implement, maintain and debug without the mature toolsets
  • Java tooling is superior for nearly all but the simplest implementations

Deployment:

  • Java deployment requires registering the custom Java class, compiling, packaging and redeploying the Maximo EAR. Redeploying the Maximo EAR requires taking the system offline
  • Automation Scripts can be deployed online without any outage. Automation scripts can be deployed in a variety of ways such as Migration Manager or manual deployment
  • Automation Scripts are easier, faster and simpler to deploy in nearly all instances than Java

Field Customization:

  • Automation Script (Attribute Point) customization will be triggered after the data in the field changes. Can be used to trigger additional logic such as updating another field or validation
  • Java allows for everything automation scripts in addition to lookups, initialization of non-persistent fields
  • Java allows initializing field classes such as non-persistent lazily, only when shown on screen. To accomplish the same functionality with Automation script the field needs to be initialized in the MBO class which gets called whenever MBO is initialized. This can have a significant performance impact
  • Automation Scripts has one significant feature that Java does not. A single script can be applied to many attributes. The input variables can be modified. To accomplish the same functionality in Java would require customizing many classes if the parent class is not the same

MBO Customization:

  • Java allows significant customization to MBOs and MBOSETs to all aspects of initialization, validation and functionality
  • Automation Scripts allow customization to an individual MBO when it is created, deleted, loaded or saved. Field level initialization should not be performed when MBO is loaded as described in field customization

Workflow Customization:

  • Java allows customizing all aspects of workflows such as Actions, Roles and custom dialogs
  • Automation Scripts allow customizing workflow Actions. Within Action customization there is little difference

Support and Maintenance:

  •  There is no difference between support of Automation Scripts and Java. Both require experienced developers familiar with the Maximo API
  • Both Automation Scripts and Java provide full access to the Maximo API and give you equal amount of leverage to extend and improve the product to meet your needs or rope to hang yourself
  • Well designed customizations in either Java or Automation Script will not cause any issues with upgrades. Poorly designed Java/Automation Script customizations can create bugs, upgrade, poor performance or cause the system to crash