Change Action Approval (ApprovalSchemaInitialization)

An opening ID is an entry point used to customize business logic. The change action approval opening ID lets you define the approval schema for change actions.

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:ApprovalSchemaInitialization

This opening ID is used to customize the approval schema for change actions.

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

Definition Description
PLM Opening ID ApprovalSchemaInitialization
Customization intent Computation
Execution context Server

Input Objects

Input objects must be of the following types:

  • ThisObject: Change action
  • Parameters corresponds to the context object.

Context Object Parameters

Parameter Name Type Read or Write Comments
ChangeAction Object Read The change action for which approval is required.
ImpactedObjects List of objects Read List of objects to be approved.
Approvers List of strings Read List of approvers connected to a change action.
ComputedApprovalSchema Feature Write -

Sample

The following sample describes how to define approval schema for change actions.

/* Define constants */
/* Input elements */
let promotedChangeAction("Change Action")
let impactedObjectsList(List)
let approvalSchema(ChangeApprovalSchema)

/* Elements to be used to create the approval schema */
let approvalSchemaLevel(ChangeApprovalSchemaLevel)

/* Elements to be used to process the logic */
let impactedObjectsListSize(Integer)
let impactedObjectsListIterator(Integer)
let impactedVPMReference(VPMReference)
let impactedPart(Part)

/* Retrieve the elements provided in input */
set promotedChangeAction = Parameters->GetAttributeObject("ChangeAction")
set impactedObjectsList = Parameters->GetAttributeObject("ImpactedObjects")
set approvalSchema = Parameters->GetAttributeObject("ComputedApprovalSchema")

/* Apply the logic based on the inputs */
if(promotedChangeAction.organization == "MyCompany")
{
    set approvalSchemaLevel = approvalSchema.addApprovalSchemaLevel(false)
    set impactedObjectsListSize = impactedObjectsList.Size()
    set impactedObjectsListIterator = 1

    for impactedObjectsListIterator while impactedObjectsListIterator<=impactedObjectsListSize
    {
        set impactedVPMReference = impactedObjectsList->GetItem(impactedObjectsListIterator)
        set impactedPart = impactedObjectsList->GetItem(impactedObjectsListIterator)

        if(impactedVPMReference<>NULL)
        {
            approvalSchemaLevel.addApprovalTask("taskTitle","taskInstructions",false,"User1", false, "Route Start Date", "2")
        }
        if(impactedPart<>NULL)
        {
            approvalSchemaLevel.addApprovalTask("taskTitle","taskInstructions",false,"User2", false,"", "")
        }

        set impactedObjectsListIterator = impactedObjectsListIterator + 1		
    }
}