0% found this document useful (0 votes)
17 views5 pages

SCRIPT - Library

Maximo Scripting

Uploaded by

Sayed Saeed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views5 pages

SCRIPT - Library

Maximo Scripting

Uploaded by

Sayed Saeed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

SCRIPTING IN MAXIMO EAM

Automation script
Scripting Library

• Library scripts are good for encapsulating some re-usable logic.

• From Maximo 7.6 onwards, you can write those reusable blocks as library scripts, which are just simple
scripts with no launch points.

• You can then leverage the service variable to invoke those library scripts from another script.

• Library scripts have undergone some improvements over the last few releases. The following simple
example showcases the change in usage:

r=a*b

This is a script that multiplies two variables - a and b and sets the result to another variable r.

Assume that you are invoking this script from another script and you want to pass in a and b and then
get the r value back.
Scripting Library

The following script shows a sample that calls this library script (named CALC):

from java.util import HashMap

map = HashMap()
map.put("a",2)
map.put("b",3)
service.invokeScript("CALC",map)
res = map.get("r")

• The calling script leverages the implicit service variable (available to all scripts) to invoke the
library script named CALC.
• It also passes in the a and b as a Map object to the script.
• The response r is recovered from that same Map object. While this way works, it has a few
downsides.

• It does not allow the library script to have multiple functions, becoming a true utility script.
• In this model you will be forced to create many such library scripts - each for one utility.
• The calling script spends a lot of code to setup the library script call dealing with java imports and
java data structures.
Scripting Library
The following example shows a simpler way to rewrite the CALC script, while helping the library scripts
to be function based:

def mult(a,b):
return a*b

def add(a,b):
return a+b

def sub(a,b):
return a-b

Now it is possible to accommodate multiple utility modules in one library script. The following calling
script can be used:

res = service.invokeScript("CALC","mult",[2,3])
Scripting Library

• This reduces the number of code lines significantly and removes the java Map imports, instead
leveraging the native language (py) to do it all.

• It also helps make the code more readable.

• These are just samples meant to demonstrate the library script concept and how service is leveraged to
invoke those.

• The real life examples would certainly include reusable business logic inside the library scripts.

• For the script, there was no need to import or make any new py/js modules - it is all natively handled by
Maximo.

• The library scripts are no different that any other scripts in terms of storage, caching, compilation, and
other aspects.

You might also like