Validate Links Reserving Pins (ELE_ValidateAllocationPin)

An opening ID is an entry point used to customize business logic. The Validate links between reserving pins opening ID is available in the Electrical Logical Resources resource set and it is used to validate the reservation of pins.

Note: For more information about customization by business rules, see Installation and Setup: Customize: Behavior: Data Setup: Customization by Business Rules.

This page discusses:

General Information

This opening ID is invoked during the Managing Pin Allocation command.

This opening ID is used to validate the group of pins to reserved.

The table below provides you with information related to the definition of the Opening ID.

PLM Opening ID: ELE_ValidateAllocationPin
Customization intent: Validation
Execution context:Client

Input Objects

Input objects must be of the following types:

  • ThisObject: electrical component defining pin occurrences
  • Parameters: corresponds to the context object.
  • Validation: parameter to be set to know if the validation succeeded or failed (expected values are true or false). False value is associated with the severity of the action.
  • Severity information:
    • Severity= 0: the treatment is to be continued (no message).
    • Severity= 1: the treatment is to be continued and only a warning raised.
    • Severity= 2: the treatment is supposed to be undone.

Context Object Parameters

Parameter NameTypeRead/WriteComments
ModeString ReadAdd to validate the creation of the link for new content and Remove to validate the deletion of the link for existing content.
ActionListListReadList of content on which Add or Remove are applied on.
ExistingListListReadList of content to help the user defining his business rule.

Sample

The following sample checks whether or not the reservation will contain unique named pins and checks that the reservation must have at least two pins. If not, routing is interrupted and a message issued.

 /* Rule :  ELE_ValidateAllocationPin */
/*
   ThisObject : #In RFLVPMLogicalPort
   Parameters : #In RuleContext
   Validation : #Out Boolean
*/

let sMode (String)            /* "Add" or "Remove" modes    */
let ActionList (List)         /* Ends to validate action on */
let ExistingList (List)       /* Existing ends		*/

let nbActionEnds (Integer)
let nbExistingEnds (Integer)

let ActionEnd (RFLVPMLogicalInstance)
let ExistingEnd (RFLVPMLogicalInstance)

let NetOwner  (RFLVPMLogicalReference)
let WireOwner (RFLVPMLogicalReference)
let ConnectionOwner (RFLVPMLogicalReference)

let i (Integer)
let j (integer)

set Owner = Parameters->GetAttributeObject("Owner")
set sMode = Parameters->GetAttributeString("Mode")
set ActionList = Parameters->GetAttributeObject("ActionList")
set ExistingList = Parameters->GetAttributeObject("ExistingList")

Validation=true

nbActionEnds = ActionList->Size()
nbExistingEnds = ExistingList->Size()

set i = 1
if (sMode == "Add")
{
   for i while i <= nbActionEnds  AND  Validation == true
   {
      ActionEnd  = ActionList.GetItem (i)
      set j = 1
      for j while j <= nbExistingEnds AND Validation == true
      {
            ExistingEnd =  ExistingList.GetItem (j)
            if (ActionEnd.PLM_ExternalID == ExistingEnd.PLM_ExternalID)
            {
               Validation = false
               Parameters.Message = "Pin " + ActionEnd.PLM_ExternalID + " already exists"
               Parameters.Severity = 1
               
            }
      }
   }
}
      
if (sMode == "Remove")
{
   if ((nbExistingEnds - nbActionEnds) < 2)
   {
      Validation = false
      Parameters.Message = "Reservation must have at least 2 pins"
      Parameters.Severity = 2
   }
}