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
using namespace std;
int toolRequirement_defined (
const tag_t targetObject,
std::vector
int MaturityReport_ToolRequirementTest(
const int ruleID,
const tag_t objectScope,
const tag_t targetObject,
const std::map<std::string, std::string>& ruleAttributes,
std::vector
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:
- Select the desired folder in which you want to create the dataset.
Use menu option File→ New→ Dataset. This will open New Dataset Dialog.
- 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.
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.
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.
Right-click the desired BOM Line and choose Open With→ Maturity Report.
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