This document is intended to provide a detailed guide and examples on how to customize a Business Rule for opening id DELSSEListCustomizedAttributes_ID. Using this business rule we can customize the spreadsheet editor adding the column to display any additional information.
Introduction
There is no command to list out the Resulting Product for all Mfg. Item or Capable Resource and their usages for all Operations in the entire tree structure, and this becomes an issue when there are a lot of items in the tree and we want to see the data for all of them together.
In order to retrieve the Resulting Product or Capable Resource easily we can customize the spreadsheet editor adding a specific columns for the particular items information. This can be achieved using the example Business Rules provided below.
Version – 2024x FD06 (FP2205), 2025x FD04+ (FP2205) and 2026x GA.
Pre-requisites:
Licenses –
- PPL(Process Engineer): required to create Manufacturing and Process Planning related objects.
Disclaimer: Licenses mentioned above are as per 2024x, 2025x and 2026x documentation.
PLM Opening ID | DELSSEListCustomizedAttributes_ID |
Customization intent | Execution |
Execution context | Client |
Usage | Using this BL we can add the columns to display additional information in PPR spreadsheet editor |
Example 1: Display Resulting Product(s) in PPR Spreadsheet Editor
In this example the OOTB Business Rule DELSSEListCustomizedAttributesOcc.CATRule is customized to display the Resulting Product name and EIN in the custom column added in the spreadsheet editor. If the data is configured resulting Product for all configurations will be displayed. A separate column named Enterprise Item Number will be present which will show the EIN of the Mfg. Item, and if the item does not have an EIN, then the EIN of the resulting product will be displayed.
Example 1: Logical Flow
Example 1: Business Rule
Detail Description:
This business rule gets invoked when we select a row/ multiple rows in a PPR Spreadsheet Editor and do a refresh by a click on
sign in the PPR Spreadsheet Editor.
The output has two columns, the first one displays the information related to configuration filter in the following format :-
When the MBOM is configured :-
: [ ]; : [ ]; When the MBOM is not configured:-
[ ]; A second column which display the Enterprise Item Number(EIN) of the Mfg. Item when it is present, otherwise the EIN of the Resulting Product.
Logic to get all the configurations for that MBOM object
set lFilters = Input_MfgItemRef.GetConfigurationFilters()Logic to get the Resulting Product for any particular configuration of MBOM object
oResultingProduct = Input_MfgItemOcc.GetResultingProductForFilter(currentConfig)In the Parameter we have to pass the configuration which is of type Product Configuration and we will get the resulting product of that Mfg. Item for that particular configuration.
Logic to get the Resulting Product for all the configuration of MBOM object
if(lFilters.Size()>0 AND currentConfig ==NULL)// Scenario where data is configured but filter is not applied
{
strConsAltProcRef = "Non-Filtered | "
for config inside lFilters
{
oResultingProduct = Input_MfgItemOcc.GetResultingProductForFilter(config)
If oResultingProduct <> NULL
{
count = count + 1
strConsAltProcRef =strConsAltProcRef + config.Name + ": " + oResultingProduct.V_Name
set EINnumber = oResultingProduct.GetEnterpriseItemNumber()
strConsAltProcRef = strConsAltProcRef + "[" + EINnumber +"]; "
EINNumberList = EINNumberList + EINnumber + "; "
}
}Logic to get Resulting Product of an object which is not configured
Set oResultingProduct = Input_MfgItemOcc.ProcessOutputLogic to set title of column
AttributesTitles.Append("Resulting _Product")
AttributesTitles.Append("Final_Enterprise_Item_Number")
Parameters.SetAttributeObject("AttributesTitles", AttributesTitles)Logic to set if the attribute value in the column is editable or not
AttributesEditable.Append(false)
AttributesEditable.Append(false)
Parameters.SetAttributeObject("AttributesEditable", AttributesEditable)Example 1: Scenario
Consider an Eng. Structure, Mfg. structure for a Gearbox.
Select the Spreadsheet Editor command from the Authoring tab and select the root Mfg. item.
We can see two columns ‘Resulting _Product’ and 'Final_Enterprise_Item_Number' are added at the right.
The
symbol at the right end indicates that there is a Business Rule present for that column in the PPR spreadsheet. We need to refresh the PPR spreadsheet editor to see the column valuated by business rule.
We need to select the row and click on the
symbol to refresh the editor in order to see the values in the column. If no row is selected when clicking the refresh button then values for all the rows get updated, which has been done in the scenario below.
All the data related to the configuration, resulting product and EIN number of the object can be seen in the two rightmost columns of the PPR spreadsheet.
Example 2: Display Capable Resources in PPR Spreadsheet Editor
In this example the OOTB Business Rule DELSSEListCustomizedAttributesOcc.CATRule is customized to display the Capable Resources assigned to Operations and their usage in Operation steps in the custom column added in the spreadsheet editor.
Example 2: Logical Flow
Example 2: Business Rule
Detail Description:
This business rule gets invoked when we select a row/ multiple rows in a PPR Spreadsheet Editor and do a refresh by a click on
sign in the PPR Spreadsheet Editor.
The output is displayed in the following format
If the object is of type Header Workplan, then nothing is displayed in the Capable_Resource column
If the object is of any other type, the Capable Resource data is displayed in the following format
Primary:
( ), ( ); Secondary: , ; If the object is an Operation but no Header Operation the resource step usage is displayed in following format
- ; - ;
The keywords indicate the following information :
- StepOnly - This indicates that the resource is used in that operation
- Reserved - This indicates that the resource is reserved from that operation for all the operations under it untill it is released.
- Released - This is shown in the UI as "Liberated". When a resource is released it is not reserved for this or any of the below operations.
- Undefined - This keyword indicates that the function has returned no information regarding the resource usage.
Note: If a resource is reserved that means it is reserved for all the operations below, but the function will not return any value so we declare it as undefined, but it is actually reserved for all the operations after the Reserved tag comes until it is released/liberated which is indicated by the Released tag.
This is the OperationStep usage panel. Here all the green colored tabs indicate that the resource is Reserved for that Operation Step and all the grey colored tabs indicate that the resource usage is not defined.
Furthermore, in the screenshot above, the checkbox “Is reserved from first step” (highlighted in red) is selected. This indicates that the resource is reserved from the very first operation and remains reserved until it is explicitly released. As shown, all resource rows beginning with the first operation appear in green, reflecting their reserved status.
However, in the PPR spreadsheet, data is displayed only for the tiles in the OperationStep Resource Usage table that contain written values. For all other operations, the tag “Undefined” is used.. In these cases, the user must determine the resource’s usage mode by verifying whether the resource is reserved from the first step and whether it has been reserved or released prior to that operation.
Logic to get all the Primary Capable Resources
SourceRef->GetCapablePrimaryResources(ListSrcResourceReference, ListSrcProcessCanUseCnx)// API used to get Primary Capable Resources
for cnt while cnt <= ListSrcResourceReference.Size()
{
SrcResourceRef = ListSrcResourceReference.GetItem(cnt)
SrcProcessLink = ListSrcProcessCanUseCnx.GetItem(cnt)
if(SrcProcessLink.V_IsReservedFromFirstStep)
{
resStr = resStr+SrcResourceRef.V_Name +"(Is reserved from first step)"
}
else
{
resStr = resStr+SrcResourceRef.V_Name +"(Is not reserved from first step)"
}
}Logic to find whether whether the resource is reserved from first step or not
SrcProcessLink = ListSrcProcessCanUseCnx.GetItem(cnt)
if(SrcProcessLink.V_IsReservedFromFirstStep)
{
resStr = resStr+SrcResourceRef.V_Name +"(Is reserved from first step)"
}
else
{
resStr = resStr+SrcResourceRef.V_Name +"(Is not reserved from first step)"
}The V_IsReservedFromFirstStep is an attribute on type DELAsmProcessCanUseCnx of Boolean type which returns true if resource is reserved from first step for the child operations.
Logic to get all the Secondary Capable Resources
SourceRef->GetSecondaryCapableResourceLink(ListSecLinks, ListSecRes, ListSecStatus, ListSecAlias)
for cnt while cnt <= ListSecRes.Size() {
SrcResourceRef = ListSecRes.GetItem(cnt)
resStr = resStr+SrcResourceRef.V_Name
}Logic to get the Primary Capable Resource step usage
ParentRef->GetCapablePrimaryResources(ListSrcResourceReference, ListSrcProcessCanUseCnx)
for cnt while cnt <= ListSrcResourceReference.Size()
{
set SrcProcessCanUseCnx = ListSrcProcessCanUseCnx.GetItem(cnt)
set PrimaryRsc = ListSrcResourceReference.GetItem(cnt)
GetRscLinkDetailsFromCapableRsc (SrcProcessCanUseCnx, ThisObject, ListRscLinkDetail)
//PopupMessage("",ListRscLinkDetail.Size())
if(ListRscLinkDetail.Size()>0)
{
set RscLinkDetail = ListRscLinkDetail.GetItem(1)
resStr = resStr + PrimaryRsc.V_Name + " - " + RscLinkDetail.V_AvailabilityMode +"; "
}
else
{
resStr = resStr + PrimaryRsc.V_Name + " - Undefined; "
}
}Logic to get the Secondary Capable Resource step usage
ParentRef->GetSecondaryCapableResourceLink(ListSecLinks, ListSecRes, ListSecStatus, ListSecAlias)
cnt =1
for cnt while cnt <= ListSecRes.Size()
{
set SrcProcessCanUseCnx = ListSecLinks.GetItem(cnt)
set SecondaryRsc = ListSecRes.GetItem(cnt)
GetRscLinkDetailsFromCapableRsc (SrcProcessCanUseCnx, ThisObject, ListRscLinkDetail)
if(ListRscLinkDetail.Size()>0)
{
set RscLinkDetail1 = ListRscLinkDetail.GetItem(1)
resStr = resStr + SecondaryRsc.V_Name + " - " + RscLinkDetail1.V_AvailabilityMode +"; "
}
else
{
resStr = resStr + SecondaryRsc.V_Name + " - Undefined; "
}
}Logic to set title of column
AttributesTitles.Append("Capable_Resource")
Parameters.SetAttributeObject("AttributesTitles", AttributesTitles)Logic to set if the attribute value in the column is editable or not
AttributesEditable.Append(false)
Parameters.SetAttributeObject("AttributesEditable", AttributesEditable)Example 2: Scenario
Consider an Workplan Structure for a Gearbox.
Select the Spreadsheet Editor command from the Authoring tab and select the root Mfg. item.
We can see a column named ‘Capable_Resource' added at the right.
The
symbol at the right end indicates that there is a Business Rule present for that column in the PPR spreadsheet. We need to refresh the PPR spreadsheet editor to see the column valuated by business rule.
We need to select the row and click on the
symbol to refresh the editor in order to see the values in the column.
All the data related to the Primary and Secondary Capable Resources and their Operation Step Usages of the objects can be seen in the column of the PPR spreadsheet.
Business Rule Deployment
The below page can be referred for Business Rule deployment.
For deployment using Data Setup app following Resource set and Opening needs to be used.
Resource Set:
Opening:
Example 1:
Fact Type:
Deploy the BL using Data Setup for "Fact type" = "FProcessOccurrence"
Example 2:
Fact Type:
Deploy the BL using Data Setup for "Fact type" = "ProdSystemOccurrence"
Reference:
Documentation: To Add Attributes in the Spread Sheet Editor (DELSSEListCustomizedAttributes_ID)
Author
Person of Contact - @SC
