Technical Blog Post
Abstract
Maximo Calibration allows entry of incorrectly specified Calibration Input and/or Output values ,is this working as designed?
Body
When entering a calibration point "As Found Input Value", Maximo allows users to enter an "incorrectly" specified value without warning the user that their entry is under-specified and / or preventing their entry from being saved.
Maximo then automatically interprets their entry, and compensates for the deficiency by adding missing decimal values.
Maximo Calibration is currently working like this as per design.
To reproduce this scenario follow these steps:
1)Login to Calibration 7500 or 7510 with MAM 7.5.x or 7.6.0.x
2)Go to Work Order tracking > Create an arbitrary open work order. > DataSheet tab > Calibration Points sub tab.
3)Edit the fields in the Calibration Point Sub-tab
E.g.
Set a Nominal Input as 0.000 degrees Celsius.
set Range limit from -2.000 to +2.000
Set As = EU.
4)Now go to > As Found Values > Input field > Enter a single digit '1' > Tab out of field.
Note!: Maximo accepts this value without warning the user that it is under-specified.
Furthermore, it appends three decimal zeroes, leaving the entry to be saved as '1.000'.
This could be perceived as incorrect as (in the world of calibration), '1' is not the same as '1.000',however per Maximo design this currently is wroking as it should.
Note: List of database fields in the Calibration Points tab where this same behaviour could occur:
PLUSCWODSPOINT.ASFOUNDINPUT - Field label "Input" (used in the above example)
PLUSCWODSPOINT.ASFOUNDOUTPUT - Field label "Output"
PLUSCWODSPOINT.ASLEFTINPUT - Field label "As Left Input"
PLUSCWODSPOINT.ASLEFTOUTPUT - Field label "As Left Output"
The following Automation Script will correct this behaviour, however be advised that as this is an Automation Script , it is not supported by IBM Iot Support as such:
In the following instructions, if the value for a field is not specified, please leave the default value.
Step 1: Create a custom error message.
1. Go To > System Configuration > Platform Configuration > Database Configuration
2. Click More Actions > Messages
3. Click New Row and create a message with the following values:
Message Group = validation
Message Key = minfldresvalidation
Display method = MSGBOX
Message ID Prefix = BMXAA
Message ID Suffix = E
Value = Value is under-specified. Please enter a value meeting minimum field resolution requirements.
OK? = Y
4. Click OK to close the dialog
Step 2: Create Automation Script with Attribute Launch Point
1. Go To > System Configuration > Platform Configuration > Automation Scripts
2. Click More Actions > Create > Create Script with Attribute Launch Point
3. Create a Launch Point with the following values:
Launch Point: RESVAL-AFI
Description: Minimum Field Resolution Validation for As Found Input Field
Object = PLUSCWODSPOINT
Attribute = ASFOUNDINPUT_NP
Events = Validate
New = Y
4. Click Next to continue
5. On Step 2 of the dialog, enter the following values:
Script = MINFLDRESVAL
Description = Minimum Field Resolution Validation
Script Language = python
6. Click New Row on the Variables table and create a variable with the following values:
Variable = val
Variable Type = IN
Launch Point Attribute = ASFOUNDINPUT_NP
7. Click New Row on the Variables table and create a variable with the following values:
Variable = minfldres
Variable Type = IN
Launch Point Attribute = PLUSCWODSPOINTSINSTR.INPUTPRECISION
8. Click Next button on dialog to continue
9. Add the following text to the Source Code field. Please note that the indents (three spaces) are important.
def setError():
global errorkey,errorgroup
errorkey='minfldresvalidation'
errorgroup='validation'
if val is not None:
decDigits = 0
pos = max(val.find('.'),val.find(','))
if pos >= 0:
decDigits = len(val) - pos - 1
if decDigits < minfldres:
setError()
val = ''
10. Click Create button on dialog. You should receive confirmation message, "BMXAA7989I - The launch point was created successfully."
Step 3: Create additional Launch Points for validation on additional fields
The script above adds validation to the As Found Input field. Adding additional Launch Points allows us to apply the same validation to the As Left Input field, As Found Output field, and As Left Output fields.
1. Still in the Automation Scripts application, again click More Actions > Create > Create Script with Attribute Launch Point.
2. Create a Launch Point with the following values:
Launch Point: RESVAL-ALI
Description: Minimum Field Resolution Validation for As Left Input Field
Object = PLUSCWODSPOINT
Attribute = ASLEFTINPUT_NP
Events = Validate
Existing = Y
Script = MINFLDRESVAL
4. Click Next to continue
5. In the Variables table, populate the Launch Point Attribute for each variable as follows:
val: Launch Point Attribute = ASLEFTINPUT_NP
minfldres: Launch Point Attribute = PLUSCWODSPOINTSINSTR.INPUTPRECISION
6. Click Next to continue. Do not modify the script Source Code. Click Create. You should receive confirmation message, "BMXAA7989I - The launch point was created successfully."
7. Repeat the steps above to create an additional launch point:
Launch Point: RESVAL-AFO
Description: Minimum Field Resolution Validation for As Found Output Field
Object = PLUSCWODSPOINT
Attribute = ASFOUNDOUTPUT_NP
Events = Validate
Existing = Y
Script = MINFLDRESVAL
val: Launch Point Attribute = ASFOUNDOUTPUT_NP
minfldres: Launch Point Attribute = PLUSCWODSPOINTSINSTR.OUTPUTPRECISION
8. Repeat the steps above to create the final launch point:
Launch Point: RESVAL-ALO
Description: Minimum Field Resolution Validation for As Left Output Field
Object = PLUSCWODSPOINT
Attribute = Attribute = ASLEFTOUTPUT_NP
Events = Validate
Existing = Y
Script = MINFLDRESVAL
val: Launch Point Attribute = ASLEFTOUTPUT_NP
minfldres: Launch Point Attribute = PLUSCWODSPOINTSINSTR.OUTPUTPRECISION
9. Note that the complete list of launch points can be examined and modified after creation by opening the MINFLDRESVAL script record in the Automation Scripts app, and navigating to the Launch Points tab, and clicking the Edit Launch Point Detail icon at the beginning of any row.
If you find this AS (Automation Script ) useful for this particular situation , please click the "Like" button to show your appreciation and follow me here --> Follow me and my blogs on DevWorks here!
UID
ibm11130949