EKL - BL to manage instance attribute copy

Introduction

Usage : Define which instance attributes are to be copied or not on newly created instance using Manipulate Symbols command

Datasetup Resource Set : 

  • Diagram Resource

Datasetup Resource : Rule to manage instance attribute copy

 

Rule Example 1

Description

 the rule below copies the attributes only on the newly created instance, when the Instantiate option is selected in the Manipulation Options Chooser dialog box. if cut/past option is selected, the attributes values are not copied

Rule

// ThisObject --> LogicalOccurence
Notify ("==> Copy/Forbid Attributes Start ")

let lSelected_Instances (List)   
let lCopied_Instances (List)
let dManipOption(Integer)
let bIsListToForbidAttrs(Boolean)
let oList_Instance_Attributes (List)
let strAttributeName (String)

set lSelected_Instances = Parameters->GetAttributeObject("List_Selected_Instances")
set lCopied_Instances  = Parameters->GetAttributeObject("List_Copied_Instances")
set dManipOption = Parameters->GetAttributeInteger("Network_Manip_Option")

set strAttributeName = "V_description"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "PLM_ExternalID"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "V_PredefinedPartType"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "V_PLE_TagNumber"
oList_Instance_Attributes.Append(strAttributeName)

if (dManipOption == 1)  // Copy attributes in Instantiation option 
{
                Notify ("==> Copy 4 Instance  Attributes ")
                set bIsListToForbidAttrs = FALSE
}
else if (dManipOption == 4)  // Forbid attibutes in Cut-Paste
{
                Notify ("==> Forbid 4 Instance  Attributes ")
                set bIsListToForbidAttrs = TRUE
} 

Parameters.SetAttributeObject("List_Instance_Attributes", oList_Instance_Attributes)
Parameters.SetAttributeBoolean("Is_ListTo_Forbid_Attrs", bIsListToForbidAttrs)

Notify ("==> Copy/Forbid Attributes End")

3DXML

 

Rule Example 2

Description

Attribute Propagation - for Instantiate mode

Rule

This Object = LogicalOccurence
Notify ("==> Copy/Forbid Attributes Start ")

let lSelected_Instances (List)   
let lCopied_Instances (List)
let dManipOption(Integer)
let bIsListToForbidAttrs(Boolean)
let oList_Instance_Attributes (List)
let strAttributeName (String)

set lSelected_Instances = Parameters->GetAttributeObject("List_Selected_Instances")
set lCopied_Instances  = Parameters->GetAttributeObject("List_Copied_Instances")
set dManipOption = Parameters->GetAttributeInteger("Network_Manip_Option")

//List of attribute to process
set strAttributeName = "V_description"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "Attribute2"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "Attribute3"
oList_Instance_Attributes.Append(strAttributeName)
set strAttributeName = "Attribute4"
oList_Instance_Attributes.Append(strAttributeName)

/*
Network manipulation option selected 
1 = Instantiate
2 = Duplicate
3 = Business Rule
4 = Cut-Paste
TRUE means output list List_Instance_Attributes is list of attributes not to be copied on new instance.
FALSE means output list List_Instance_Attributes is list of attributes to be copied on new instance
*/

if (dManipOption == 1)  // Copy attributes in Instantiation option 
{
Notify ("==> Copy 4 Instance  Attributes ")
set bIsListToForbidAttrs = FALSE
}
else if (dManipOption == 4)  // Forbid attibutes in Cut-Paste
{
Notify ("==> Forbid 4 Instance  Attributes ")
set bIsListToForbidAttrs = TRUE
} 

Parameters.SetAttributeObject("List_Instance_Attributes", oList_Instance_Attributes)
Parameters.SetAttributeBoolean("Is_ListTo_Forbid_Attrs", bIsListToForbidAttrs)

Notify ("==> Copy/Forbid Attributes End")

 

Rule Example 3 

Description

Attribute Propagation for BusinessRule Mode – Duplicate EQT

Rule

/* CATRule signature: (ThisObject : #In LogicalOccurrence, Parameters : #In RuleContext) : #Void */
/* Sample rule*/
/* Input parameter is List of PLM Occurrences*/
/* Output parameter is List of integers, which is one to one mapping with List Of PLM Occurrences, 1 means instantiate and 2 means Duplicate*/
/* In this sample rule, we fill 2 in output list for Equipments and 1 for all other objects*/
/* Input parameters read */

let This2DObject (LogicalOccurrence)
let ListPLMOccurrences(LIST)
set ListPLMOccurrences = Parameters.GetAttributeObject ("List_PLM_Occurrences")
let OutputInsDupOptionsList(List)
Let ReferenceObject(RFLVPMLogicalReference)
let OccurrenceObject (LogicalOccurrence)
let sDiscipline (String)

Let j = 1
for j while j<=ListPLMOccurrences->Size()
{
  set OccurrenceObject = ListPLMOccurrences->GetItem(j)
  set ReferenceObject = OccurrenceObject.Reference
  sDiscipline = ReferenceObject.V_discipline

  if(sDiscipline == "EnsLogicalEquipment")
    OutputInsDupOptionsList.Append(2)
  else
    OutputInsDupOptionsList.Append(1)
    j = j+1
}

Parameters.SetAttributeObject("List_Instantiate_Duplicate_Options", OutputInsDupOptionsList)