Context Object Parameters
Parameter Name |
Type |
Read/Write |
Comments |
Mode |
String |
Read |
Add to validate the creation of
the link for new content and Remove to validate the
deletion of the link for existing content. |
ActionList |
List |
Read |
List of content on which Add or
Remove are applied on. |
ExistingList |
List |
Read |
List of content to help the user defining his business
rule. |
Sample
The following example checks whether or not the net/wire belongs to the same owner, and
that the net must be implemented by at least three wires. If not, linking is interrupted
and a message is issued.
/* Rule : ELE_ValidateAllocationNet */
/*
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 LinkOwner (RFLVPMLogicalReference)
let i (Integer)
let j (integer)
set NetOwner = ThisObject.Owner
set LinkOwner = 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)
if ActionEnd <> NULL
{
set WireOwner = ActionEnd.Owner
if WireOwner <> NetOwner
{
Validation = false
Parameters.Message = "End " + ActionEnd.PLM_ExternalID +
" must have the same lin owner"
Parameters.Severity = 2
}
else if WireOwner <> LinkOwner
{
Validation = false
Parameters.Message = "End " + ActionEnd.PLM_ExternalID
+ " must have the same link owner of the connection"
Parameters.Severity = 2
}
}
else
{
WireOwner = NULL
}
}
else
}
Validation = false
Parameters.Message = "Error"
Parameters.Severity = 2
}
}
}
if (sMode == "Remove")
{
if ((nbExistingEnds - nbActionEnds) < 4)
{
Validation = false
Parameters.Message = "Net must be implemented by at least 3 wires"
Parameters.Severity = 2
}
}