Cron tasks are jobs that run automatically on a fixed schedule within Maximo. They include important jobs such as the PM Work Order Generation Cron Task, the Inventory Replenishment Cron Task, and others.

There may be times when you come across some requirements where creating your own Cron Task provides the best solution. In previous releases of Maximo, it was required to write a custom Java class to perform the action of the Cron Task when the schedule came due. Therefore, many times we turned to Escalations to provide solutions where scheduled tasks were required.

In Maximo 7.6, you can now run an Automation Script directly from a Cron Task. This article will walk through how to configure this.

Step 1: Create a new Automation Script

  1. Log into Maximo as an administrative user.
  2. Navigate to the System Configuration > Platform Configuration > Automation Scripts application.
  3. From the Select Action menu, choose the Create > Script option.
  4. Populate the appropriate fields on your new script:
    1. Script: CRONSCRIPT
    2. Description: Automation Script called from a Cron Task
    3. Script Language: python
    4. Log Level: ERROR
    5. Source: print ‘Automation Script called from a Cron Task’
    6. Click the Create button to create the new script
  5. Press the Close button on the ensuing dialog
  6. Locate the new CRONSCRIPT script in the list, and open the script
  7. Update the Script Source as follows, and press the Save button when finished:
#######################
# Script to generate an SR for a monthly equipment audit
#######################
from psdi.server import MXServer

# Get the variables from the cron task arguments
srDesc = 'Monthly Equipment Audit'
srOwner = 'WILSON'
if arg:
    srDesc,srOwner = arg.split(',')

# Create the SR
srSet = None
try:
    srSet = MXServer.getMXServer().getMboSet('SR', runAsUserInfo)
    srMbo = srSet.add()
    srMbo.setValue('DESCRIPTION', srDesc)
    srMbo.setValue('OWNER', srOwner)
    srSet.save()
finally:
    if srSet:
        srSet.close()

#######################
# End of Script
#######################

 

A few things to note with this source code:

  • This script will create a new Service Request and populate the Description and Owner fields
  • Notice that there are a few implicit variables that Maximo creates for use in the script:
    • arg: This is a delimited list of arguments that you wish to pass into the script. We will show below how to populate the arguments when we create our Cron Task.
    • runAsUserInfo: This variable gives the script access to the user profile that the cron task is running as. This will allow you to fetch Mbo Sets or perform other tasks with a set of credentials.
    • instanceName: While this variable is not utilized in the above script, it represents the Cron Task Instance Name that the script is being called from. This could be useful in the cases where you have multiple cron task instances and need to distinguish which one is actively running.
  • You can utilize the MXServer.getMXServer().getMboSet() method to fetch MBO sets of any record set that the runAsUserInfo profile has access to. Please note the strategy for closing MBO sets when you are finished with them. This alerts the JVM that the object is ready to be garbage collected. It’s important to follow this strategy, or a similar strategy, to avoid potential memory leaks with the JVM.

Now that we have a script, we can create a Cron Task to call it.

Step 2: Create a new Cron Task

  1. Log into Maximo as an administrative user.
  2. Navigate to the System Configuration > Platform Configuration > Cron Task Setup application.
  3. Click the New Cron Task Definition button on the toolbar or under the Common Actions menu.
    1. Cron Task: MYCRON (give your cron task an appropriate identifier)
    2. Description: My Cron Task (give your cron task an appropriate description)
    3. Class: com.ibm.tivoli.maximo.script.ScriptCrontask (this is the key to the setup, the value is case sensitive and must be exact)
    4. Click the Save button
  4. Click the New Row button under the Cron Task Instances table
    1. Cron Task Instance Name: MYCRON01 (give your cron task instance an appropriate identifier)
    2. Description: My Cron Task Instance 01 (give your cron task instance an appropriate description)
    3. Schedule: 1M,0,0,0,1,*,*,*,*,* (this will schedule the task to run on the first of every month; use the schedule builder to select the schedule that you want your cron task to run on)
    4. Run as User: MAXADMIN (select the user that you want the cron task to run as)
    5. Active: Yes
    6. Click the Save button
  5. There should be two new parameters in the Cron Task Parameters table at the bottom of the page.
    1. SCRIPTARG: This parameter is used to pass in variables to the script. You can separate variables by a comma or other delimiter in order to pass in more than one variable to the script.
    2. SCRIPTNAME: This parameter tells Maximo which Automation Script to trigger when the cron task runs.
    3. Fill out the above parameters and click the Save button. The SCRIPTNAME parameter is required, but the SCRIPTARG parameter is optional.

At this point, the Cron Task is configured and ready to go. When the cron task runs it will call the script with the arguments specified in the parameters table.

If you have any trouble, or have questions on how this works, please leave feedback in the comments below.