Updated: Feb 25
Maximo Classification are structured in the form of hierarchy and displayed hierarchically in Maximo UI. It is one of the most powerful yet under-used, to its full potential, features of Maximo.
What is Classification?
Classifications allows classifying different objects and assigning “Attributes” to further detail the classification in what Maximo refers to as Specifications.
Other systems may refer to Maximo Classifications as “Classes” and refer to Maximo Specifications as “Characteristics”. I am not sure which naming terminologies sounds more descriptive! for me, both are as clear and as vague as they could be.
Classification is organized in hierarchical structure, which gives the user more control to organize and optimize. The following terms are common terminologies used when handling classifications:
Parent: The next higher level in a classification hierarchy.
Child: The next lower level in the classification hierarchy.
Ancestor: All of the classifications that come before a classification within a hierarchy. Although a classification can have several ancestors, it can have only one parent.
Descendent: All of the classifications that come after a classification within a hierarchy.
For practical reasons, you will probably construct a Classification hierarchy in Maximo. Never the less, you always need to construct similar structure from the database for many reasons such as reporting, analysis, integration, audit, integrity check, and so on.
… and the Code
If you are on Oracle DB, you can utilize Hierarchical Queries to do just that.
Keep in mind that Hierarchical queries are “heavy” query! The burn substantial amount of memory and processing power. Of course, you are on the most optimized side of the spectrum if you are using “built-in” function (… that’s what are doing).
WITH CLASSSTRUCTURE_SET AS ( SELECT CS.* FROM CLASSSTRUCTURE CS ,CLASSUSEWITH CUW WHERE CS.CLASSSTRUCTUREID=CUW.CLASSSTRUCTUREID AND CUW.OBJECTNAME='ASSET' ) , CLASSSTRUCTURE_HIERARCHY AS ( SELECT DISTINCT LS.* ,LEVEL AS HIERARCHY_LEVEL ,SUBSTR(SYS_CONNECT_BY_PATH(CLASSIFICATIONID ||':'||LS.DESCRIPTION, ' -> '), 4) AS HIERARCHY_PATH FROM CLASSSTRUCTURE_SET LS START WITH LS.PARENT IS NULL CONNECT BY NOCYCLE PRIOR LS.CLASSSTRUCTUREID=LS.PARENT ) SELECT * FROM CLASSSTRUCTURE_HIERARCHY ORDER BY HIERARCHY_PATH