ManufacturingKnowledge

Authoring manufacturing process plans > Planning part movement – logistics

Customization of maturity reports

Maturity reports can be customized, allowing you to define the custom rules, validation criteria, and display this on the client.

Rule validation

There are many potential rules used for validation.

  • The custom rule is defined in a XML rule definition file.

  • You can implement and register a custom API that validates the rule.

  • You can define validation rules in an XML file using XML tags.

  • The validated rule is displayed on the maturity check report view. One of the results is displayed:

    indicates that a rule validation passed.
    

indicates a rule validation failure. indicates a rule validation error.

Rule validation using a custom API

  • This option requires writing a custom API, registering the API, and specifying the API in the XML rule definition file.

  • Writing custom API

The first step is writing the rule validation API. This is the API that the maturity report feature calls to validate a rule. The only supported programming languages are C/C++. Refer to header file mfg_maturity_rule_interface.hxx on the signature of the API. A sample program using the custom API is specified as follows. Once the custom API is implemented, the program must be built using the Teamcenter documented compiler and linker settings for customization with output as DLL. The generated library must be copied to the Teamcenter server machine at %TC_ROOT%\bin. The variable name in the program must match that available in the user documentation.

  • Example: Material report .hxx

Copy//File: Mat_report.hxx //Custom program: Header file   #include <mfg/mfg_maturity_rule_interface.hxx> #include <algorithm> #include <vector> #include <list> #include <map>   using namespace std;   #ifdef __cplusplus extern "C" { #endif   extern__declspec(dllexport) int MaturityReport_ToolRequirementTest(    const int    ruleID,               const tag_t                                        objectScope,             const tag_t                                        targetObject,            const std::map<std::string, std::string>&          ruleAttributes,    std::vector<MFG_maturity_property_data_t>&         values );   #ifdef __cplusplus } #endif

  • Example: Material report .cxx

Copy`//File: Mat_report.cxx //Custom program: Source file.

#include "Mat_report.h" #include #include #include #include #include #include <mfg/mfg_maturity_rule_interface.hxx> #include <tccore/aom_prop.h> #include <tccore/grm.h> #include <pom/pom/pom.h> #include <base_utils/Mem.h>

using namespace std;

int toolRequirement_defined ( const tag_t targetObject, std::vector& values );

int MaturityReport_ToolRequirementTest( const int ruleID,
const tag_t objectScope,
const tag_t targetObject, const std::map<std::string, std::string>& ruleAttributes, std::vector& values ) { int err = 0; // No error

if(ruleID ==2) //Rule ID defined in XML rule definition file
{
    err = toolRequirement_defined(targetObject,values);
}
else (ruleID == 3 )
{      
// Some implementation 
}
return err;

}`

  • Example: Initialization tool requirement

Copyint toolRequirement_defined ( const tag_t targetObject, std::vector<MFG_maturity_property_data_t>&         values ) { MFG_maturity_property_data_t status, display; std::vector<std::string>     statusValues, displayValues; int count = 0; tag_t *_values = 0; AOM_ask_value_tags(targetObject, "Mfg0tool_requirements", &count, &_values);   status.dataType = "string"; status.propertyName = "status"; display.propertyName = "displayValue";   std::string displayValue =  ""; if (count > 0) { char* tool_name = NULL; int stat = AOM_ask_value_string(_values[0], "Mfg0assignment_name", &tool_name);           if (tool_name != NULL ){             displayValue = tool_name;             status.value.push_back("pass");         } else {             displayValue = "Tool name not defined";             status.value.push_back("fail");     }     }     else     {         display.dataType = "string";         status.value.push_back("fail");         displayValue = "TR Not Defined";     }       display.value.push_back(displayValue);     values.push_back(status);     values.push_back(display);       return 0; }

Registering the custom API

  • The custom API for the maturity report must be registered to allow the maturity report feature to locate the API. Use the install_callback utility to register the API with the tabulated parameters:

Parameter

Value

type

MATURITY_REPORT

library

Name of library that has the API , without dll extension.

function

Name of custom API.

name

Any unique name. It could be the same as the API name. The name must be used as function identifier value in the maturity rule definition file (section XML schema).

  • Sample usage of utility

install_callback -u=Tc-admin-user -p=pasword -g=group -mode=create -type=MATURITY_REPORT -library=Mat_report -function=MaturityReport_ToolRequirementRule -name=MaturityReport_ToolRequirementRuleIdentifier

The value provided in the name must be added to XML rule definition file so that the maturity report feature can identify the API that it is calling.

Rule validation using XML tags

  • The maturity rule can also be validated using the XML tags in the rule definition file. This approach allows you to specify a target object on which the rule needs to be validated. The result must be obtained for the target object and the result checked against a defined value to validate the rule. Refer to the following table of XML tags to define and validate the rule.

  • XML tag

Description

Valid values

MaturityReport

The root element of the XML document.

MaturityReportContext

The structure context of the maturity report. Rules defined under the context are picked and validated. An XML file may have multiple contexts defined.

Mfg0PlantBOP ProductBOP Lgt0LogisticBOP

Rules

Contains rules.

ruleID

The unique rule ID. It must be a positive integer.

1, 2, 3, 4,….

ruleName

The name of the rule that is displayed on the maturity report.

Any string

targetObjectType

The target object type against which rules are evaluated and displayed on the report. A persistent object type name must be used. Example In a process structure, if a rule needs to be validated on the process line, provide the value as Process. All process lines under the scope of the line selected for report is picked as the target object. The rule is validated on this object.

The exact object type name is considered to ignore the subtype. Multiple values can be provided using |.  The valid format is |.

Mfg0ProcArea
Process
Process|OP …

ChildrenType

The children of targetObjectType that are to be picked as part of the rule validation. A persistent object type name must be used. Example The number of children obtained is compared with the defined number as part of validation. The exact object type name is considered and the subtype ignored. However, if propertyName is also specified, the property is evaluated on the first child object and compared with the defined value. Multiple values can be provided using |.  The valid format is |.

The number of children obtained is compared with the defined number as part of validation. The exact object type name is considered and the subtype ignored. However, if the propertyName is also specified, the property is evaluated on the first child object and compared with the defined value. Multiple values can be provided using |.  The valid format is |.

OP
Process
ITEM

ChildrenOccType

Children of targetObjectType are validated against the occurrence type and are relevant for consumed items. Example When ChildrenOccType of Consumed is specified, it is validated  to determine if the targetObject child is available as an Consumed occurrence.

The number of children obtained is compared with the defined number as part of validation. Note that ChildrenType must be specified. If ChildrenType is not specified, ChildrenOccType values are ignored. Multiple values can be provided using |. The valid format is |.

Assigned
Consumed
Assigned|Consumed ...

propertyName

Any valid property to be evaluated on the target object line. Note that the property is on the line that represents the persistent target object type. For instance, if allocated time on Process and OP are to be validated, you must provide the TargetObjectType as Process|OP. If the property on a child is to be evaluated, then provide ChildrenType data. The property is evaluated only on the first child line of TargetObject.

operator

Comparison operators to validate calculated value with defined value (operand) in the XML. For instance, to validate that allocated time on a OP is ≤ 60, use LESS_THAN_EQUAL_TO and provide Operand as 60.

LESS_THAN GREATER_THAN EQUAL_TO LESS_THAN_EQUAL_TO GREATER_THAN_EQUAL_TO NOT_EQUAL_TO

operand

Value to compare against the calculated value using the defined operator. For instance, for a rule, if Operator is LESS_THAN_EQUAL_TO and Operand is 60, for a value > 60, validation fails.

Valid values are in string form that may be a real number, string or Boolean. Valid values for Boolean are true and false.

FunctionIdentifier

Function identifier to call the custom API registered using install_callback utility.    The value must be the same as the name parameter provided in the install_callback utility while registering the custom API.

For example, ToolRequirementDefinedCheck

Sample XML file

Copy


<?xml version="1.0" encoding="UTF-8"?>
    <MaturityReport>
      <MaturityReportContext contextName="Mfg0PlantBOP">
        <Rules>
          <Rule ruleID="1"
                ruleName= "Time
          Rule"
                targetObjectType="Process|OP|Mfg0ProcStatn"
                propertyName="Mfg0allocated_time"
                ChildrenOccType=""
                operator="LESS_THAN_EQUAL_TO"
                operand="60"
          />
    <!-- Empty value will be ignored
        -->
     
          <Rule ruleID="2"
                ruleName="Tool Requirement
          Defined"
                targetObjectType="Process|OP"
                FunctionIdentifier="MaturityReport_ToolRequirementTest"
          />
     
          <Rule ruleID="3"
                ruleName="Tool Requirement
          Resolved"
                targetObjectType="Process|OP"
                FunctionIdentifier="MaturityReport_ToolRequirementTest"
          />
     
          <Rule ruleID="4"
                ruleName= "Operation
          Available"
                targetObjectType="Process|Mfg0ProcStatn"
                ChildrenType="OP"
                operator="GREATER_THAN"
                operand="0"
          />
        </Rules>
      </MaturityReportContext>
    </MaturityReport>

Loading XML rule definition file in Teamcenter

Maturity rule definition file must be loaded to Teamcenter to allow the maturity report feature to read the file. Create a dataset object using the maturity rule definition XML file. Use the following steps to attach a dataset:

  1. Select the desired folder in which you want to create the dataset.

Use menu option File→ New→ Dataset. This will open New Dataset Dialog.

  1. On the New Dataset dialog, perform the following:

Choose Text as dataset type.

Provide dataset name as maturity_report_rules_dataset. This is the exact name that must be used.

Provide your own description. This an optional field.

Click the Import button , browse to and select the rule definition file.

Click OK to create the dataset.

If this dataset is not created or loaded then maturity report will show system defined rules, if available.

  1. Once dataset for rule definition file is created and custom API is registered (if rule is validated using custom API), the maturity report can be run on a line (scope) of a structure. On the line, use menu option Open with →Maturity report on right click mouse button.

  2. Based on the context of the structure and associated rule definition file, rule names are displayed on the rule selection form. Select the rules that need to be validated and click OK.

  3. Right-click the desired BOM Line and choose Open With→ Maturity Report.

  4. The Maturity report is then displayed in a manufacturing view

Related Topics

  • Setting up logistics planning

Source: https://docs.sw.siemens.com/en-US/doc/282219420/PL20251212545240207.mse/xid1309288 · retrieved 2026-07-11

Unofficial, community-maintained reference covering Siemens Teamcenter Manufacturing module by module — Easy Plan, Manufacturing Process Planner (MPP), Part Planner, Multi-BOM & Multi-Structure Management, Resource Manager (Active Workspace & Rich Client), Electronic Work Instructions, and Report Generator — extracted from Siemens Support Center / docs.sw.siemens.com for Teamcenter 2606. Always confirm exact steps against the official documentation for your installed Teamcenter version.

Not affiliated with or endorsed by Siemens Digital Industries Software.