I had never been a big fan of Maximo SaaS due to my background comes from a market where labour cost is cheap while license cost is outrageous. As such, we consultants prefer to spend some time building customized apps rather than spending lots of money buying more licenses or add-ons. (To give you a bit of perspective, in Australia, one Maximo license is worth about 15 days cost of an average engineer. In Vietnam, it is equivalent to about 1 year. Which means if you give an engineer a Maximo account; after a year, if it helps to save him or her 15 days, it worth the cost. But in Vietnam, it must save the engineer 1 year of labour to break even).
How to modify (almost) any Maximo data with no database access
Being Maximo consultants, we often come into a scene where
the client gives us MAXADMIN access to the system but access to the database is
an absolute No-No. This is usually the case with companies which have a clear
separation of the App Admin and DB Admin roles. This is also one of the key
restrictions with Maximo as a Service.
If you have been doing a bit of admin and
config activities, you will surely understand the limitation of having
no database access. It’s like having to work with tied hands. Luckily, we can
use MXLoader to query/update almost any data tables in Maximo. Below is an
example on how to do it.
Let say we're working with a Maximo SaaS and IBM only
gives us front-end admin access, but no access to the back-end.
OutOfMemory problem when deploying Maximo
For every client I work with, I always keep a copy of the SMP folder if I can. And every time I need a standard demo instance with exactly the same configuration with the client, I simply deploy it on my local Websphere and Oracle DB.
My current websphere version is 8.5.5.3, and I had problem whenever I deploy a Maximo 7.6 instance with lots of add-ons. I gave up the attempt in the last few times as I didn’t really need it. But recently, as I was working with Maximo Flex (on cloud), having a local instance is a must as Maximo on cloud has lots of limitation in term of what you can do. As such, I when I had the same problem deploying Maximo, I had to investigate and fix the issue. Turned out it is an OutOfMemory issue during the deployment process and it took me quite a bit of time to fix it, so I leave the note here as I’m sure many other will have similar problem.
Solving problems with Update DB process when install or upgrade Maximo
When upgrading Maximo or installing new add-ons or fix packs,
new source files will be copied to SMP folder which include Java classes and
DBC (database configuration) script files. After that, the installer will run
the UpdateDB process to update the database, run the BuidMaximoEar process to
build the EAR file, and then deploy the EAR file to Websphere.
The DBC script files contain incremental changes to the
Maximo database which add changes to GUI, update data, and modify DB configuration objects. Most of the problems you get when installing fix packs or
upgrading Maximo come from the UpdateDB process which execute these DBC files in a
set order.
Bulk upload images via Integration Framework
In the previous post, I have provided an example on how we can
customize Object Structure to enable import/export binary data via MIF. In
Maximo 7.6, the automation scripting framework has been greatly extended to
support integration. With this update, we can enable import/export of binary
data by adding a simple script without having to write and deploy custom java
code. Below is an example how we can configure Maximo 7.6 to bulk upload images
to Item Master application:
Step 1: Add an Object
Structure integration script
- Open System Configuration > Platform Configuration > Automation Script application
- On Select Action menu, choose Create > Script for Integration
- On the Create Script for Integration pop-up, enter the following details:
- Select “Object Structure”
- Choose “MXITEM” for Object Structure
- Select “Inbound Processing”
- Language: Python
- Paste the following piece of code to the Source Code text area:
- Click on Create. Then save the script
Creating high performance service using MaximoCache
Sometimes in our application, we need to build custom
services that run when Maximo starts. We can extend the psdi.server.AppService
class and register it with MXServer by inserting a new entry into the MAXSERVICE
table. If the service executes slow running queries, it is a good idea to cache
the data in memory to improve performance. We can implement MaximoCache
interface for this purpose. By doing this, we can initialize the service when
MXServer starts and pre-load all data required by the service into JVM memory.
When the service is called, it will only use cached data to provide instant
response which gives a much better user experience.
Below are the steps to create a sample service that loads
all Location’s description into memory. The service will provide a function to
check if an input string matches with a location’s description or not. We will
call this check when user entering an Item’s description and it will throw an
error whenever the input matches with the description
of any existing Location. This is not a very good use-case. But for the sake of simplicity, I hope it gives you an idea on how it
can be implemented.
MboSet performance, Memory Cache, and DB Call
I recently had to look at ways to improve performance of a custom built operation in Maximo. Essentially, it is one of the many validation operations taken place after a user uploads a PO with a few hundred thousand lines. The team here already built a high performance engine to handle the process, but even with it, this particular operation still take around 15-17 milliseconds to process each line which is too slow to their current standard. Imagine to process 200,000 PO lines, it will take nearly an hour just for this operation alone. There are a few dozen of these operations need to be executed, plus other standard basic Maximo operations like status change or save, the whole process takes up many hours.
With this millisecond operation, many assumptions or standard recommendations on improving performance may not work. In some instances, following the standard recommendations actually make it slower.
Subscribe to:
Posts (Atom)
