Conga Product Documentation

Welcome to the new doc site. Some of your old bookmarks will no longer work. Please use the search bar to find your desired topic.

Sample Code

The following sample code shows how to use seven APIs to create, read, update, and retrieve ad hoc approval runtime process info and to add comments and attachments to it.

/**
 *  Apttus Approvals Management
 *  ApprovalsWebServiceTestSample
 *   
 *  @2019 Apttus Inc. All rights reserved.
 */
public with sharing class AdhocApprovalsWebServiceTestSample {
    
    /**
     * Class Constructor
     */
    public AdhocApprovalsWebServiceTestSample() {
    }
    
    // test webservice API calls by running as anonymous apex from developer console
    //AdhocApprovalsWebServiceTestSample.TestCreateRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestUpdateRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestGetRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestAddCommentToRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestAddAttachmentsToRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestDeleteAttachmentsFromRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    //AdhocApprovalsWebServiceTestSample.TestDeleteRuntimeAdhocApprovalProcess('Apttus__APTS_Agreement__c','a07q000000EZfki');
    /**
     * Create a runtime ad hoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return the runtime adhoc approval process structure for the created process
     */
    public static void TestCreateRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        // create insert structure
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTO = new Apttus_Approval.AdhocApprovalProcessDTO();
        
        // get users to add as approvers
        List<User> users = [SELECT Id,Name
                            FROM User 
                            WHERE UserType != 'AutomatedProcess' 
                            LIMIT 2];
        User userSO1 = users[0];
        User userSO2 = users[1];
        
        // add process
        Apttus_Approval__AdhocApprovalProcess__c adhocProcessSO = new Apttus_Approval__AdhocApprovalProcess__c(
            Id = null,
            Apttus_Approval__AttachmentIds__c = null,
            Apttus_Approval__BusinessObjectId__c = sObjectId,
            Apttus_Approval__BusinessObjectType__c = sObjectType,
            Apttus_Approval__DisplayFields__c = null,
            Apttus_Approval__DisplayHeaderFields__c = null,
            Apttus_Approval__ProcessComments__c = null
        );
        adhocProcessDTO.setAdhocApprovalProcessSO(adhocProcessSO);
        // create group 1
        Apttus_Approval__AdhocApprovalGroup__c adhocGroupSO1 = new Apttus_Approval__AdhocApprovalGroup__c(
            Apttus_Approval__AdhocApprovalProcessId__c = null,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__GroupName__c = 'Group 1',
            Apttus_Approval__GroupSequence__c = 1
        );
        // add group 1 to process
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO adhocGroupDTO1 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO(adhocGroupSO1);
        adhocProcessDTO.addAdhocApprovalGroup(adhocGroupDTO1);
        // create group 1 approver 1
        Apttus_Approval__AdhocApprover__c adhocApproverSO1 = new Apttus_Approval__AdhocApprover__c(
            Apttus_Approval__AdhocApprovalGroupId__c = null,
            Apttus_Approval__ApproverSequence__c = 1,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__AssigneeId__c = userSO1.Id,
            Apttus_Approval__AssigneeType__c = 'User',
            Apttus_Approval__AssigneeValue__c = userSO1.Name,
            Apttus_Approval__AutoReapprovalEnabled__c = true,      
            Apttus_Approval__IsReviewer__c = false       
        );
        // add group 1 approver 1
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO adhocApproverDTO1 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO1);
        adhocGroupDTO1.addAdhocApprover(adhocApproverDTO1);
        // create group 1 approver 2
        Apttus_Approval__AdhocApprover__c adhocApproverSO2 = new Apttus_Approval__AdhocApprover__c(
            Apttus_Approval__AdhocApprovalGroupId__c = null,
            Apttus_Approval__ApproverSequence__c = 2,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__AssigneeId__c = userSO2.Id,
            Apttus_Approval__AssigneeType__c = 'User',
            Apttus_Approval__AssigneeValue__c = userSO2.Name,
            Apttus_Approval__AutoReapprovalEnabled__c = true,      
            Apttus_Approval__IsReviewer__c = false       
        );
        // add group 1 approver 2
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO adhocApproverDTO2 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO2);
        adhocGroupDTO1.addAdhocApprover(adhocApproverDTO2);
        // create group 2
        Apttus_Approval__AdhocApprovalGroup__c adhocGroupSO2 = new Apttus_Approval__AdhocApprovalGroup__c(
            Apttus_Approval__AdhocApprovalProcessId__c = null,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__GroupName__c = 'Group 2',
            Apttus_Approval__GroupSequence__c = 2
        );
        // add group 2 to process
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO adhocGroupDTO2 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO(adhocGroupSO2);
        adhocProcessDTO.addAdhocApprovalGroup(adhocGroupDTO2);
        // create group 2 approver 1
        adhocApproverSO1 = new Apttus_Approval__AdhocApprover__c(
            Apttus_Approval__AdhocApprovalGroupId__c = null,
            Apttus_Approval__ApproverSequence__c = 1,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__AssigneeId__c = userSO1.Id,
            Apttus_Approval__AssigneeType__c = 'User',
            Apttus_Approval__AssigneeValue__c = userSO1.Name,
            Apttus_Approval__AutoReapprovalEnabled__c = true,      
            Apttus_Approval__IsReviewer__c = false       
        );
        // add group 2 approver 1
        adhocApproverDTO1 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO1);
        adhocGroupDTO2.addAdhocApprover(adhocApproverDTO1);
        // create group 2 approver 2
        adhocApproverSO2 = new Apttus_Approval__AdhocApprover__c(
            Apttus_Approval__AdhocApprovalGroupId__c = null,
            Apttus_Approval__ApproverSequence__c = 2,
            Apttus_Approval__DependsOn__c = null,
            Apttus_Approval__AssigneeId__c = userSO2.Id,
            Apttus_Approval__AssigneeType__c = 'User',
            Apttus_Approval__AssigneeValue__c = userSO2.Name,
            Apttus_Approval__AutoReapprovalEnabled__c = true,      
            Apttus_Approval__IsReviewer__c = false       
        );
        // add group 2 approver 2
         adhocApproverDTO2 = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO2);
        adhocGroupDTO2.addAdhocApprover(adhocApproverDTO2);
        // call API to create process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.CreateRuntimeAdhocApprovalProcess(adhocProcessDTO);
        system.debug('adhocProcessDTOResult='+adhocProcessDTOResult);
        
    }
    /**
     * Update a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return the runtime adhoc approval process structure for the edited process
     */
    public static void TestUpdateRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        // create update structures
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTO = new Apttus_Approval.AdhocApprovalProcessDTO();
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO adhocGroupDTO = null;
        Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO adhocApproverDTO = null;
        
        // get users to add as approvers
        List<User> users = [SELECT Id,Name
                            FROM User 
                            WHERE UserType != 'AutomatedProcess' 
                            LIMIT 5];
        User userSO1 = users[0];
        User userSO2 = users[1];
        User userSO3 = users[2];
        User userSO4 = users[3];
        User userSO5 = users[4];
        
        // get process
        Apttus_Approval__AdhocApprovalProcess__c processSO = [SELECT Id,Name,
                                                Apttus_Approval__BusinessObjectType__c,
                                                Apttus_Approval__BusinessObjectId__c
                                             FROM Apttus_Approval__AdhocApprovalProcess__c
                                             WHERE Apttus_Approval__BusinessObjectType__c = :sObjectType AND
                                                   Apttus_Approval__BusinessObjectId__c = :sObjectId 
                                             LIMIT 1];
        system.assert(processSO != null);
        // update process
        Apttus_Approval__AdhocApprovalProcess__c adhocProcessSO = new Apttus_Approval__AdhocApprovalProcess__c(
            Id = processSO.Id,
            Apttus_Approval__AttachmentIds__c = null,
            Apttus_Approval__BusinessObjectId__c = processSO.Apttus_Approval__BusinessObjectId__c,
            Apttus_Approval__BusinessObjectType__c = processSO.Apttus_Approval__BusinessObjectType__c,
            Apttus_Approval__DisplayFields__c = null,
            Apttus_Approval__DisplayHeaderFields__c = 'Apttus__Total_Contract_Value__c',
            Apttus_Approval__ProcessComments__c = 'new comment added'
        );
        adhocProcessDTO.setAdhocApprovalProcessSO(adhocProcessSO);
        
        // get groups and approvers
        List<Apttus_Approval__AdhocApprovalGroup__c> groups = [SELECT Id,
                                                     Name,
                                                     Apttus_Approval__AdhocApprovalProcessId__c,
                                                     Apttus_Approval__AdhocApprovalProcessId__r.Apttus_Approval__BusinessObjectId__c,
                                                     Apttus_Approval__GroupName__c,
                                                     Apttus_Approval__GroupSequence__c,
                                                     Apttus_Approval__DependsOn__c,
                                                     (SELECT Id,
                                                             Name,
                                                             Apttus_Approval__AdhocApprovalGroupId__c,
                                                             Apttus_Approval__ApproverSequence__c,
                                                             Apttus_Approval__DependsOn__c,
                                                             Apttus_Approval__AssigneeId__c,
                                                             Apttus_Approval__AssigneeType__c,
                                                             Apttus_Approval__AssigneeValue__c,
                                                             Apttus_Approval__AutoReapprovalEnabled__c,
                                                             Apttus_Approval__IsReviewer__c,
                                                             Apttus_Approval__SendEmail__c
                                                      FROM Apttus_Approval__AdhocApprovers__r
                                                      ORDER BY Apttus_Approval__ApproverSequence__c)
                                              FROM Apttus_Approval__AdhocApprovalGroup__c
                                              WHERE Apttus_Approval__AdhocApprovalProcessId__c = :processSO.Id 
                                              ORDER BY Apttus_Approval__GroupSequence__c 
                                              LIMIT 100];
        
        // iterate over groups to update
        for (Apttus_Approval__AdhocApprovalGroup__c groupSO : groups) {
            Apttus_Approval__AdhocApprovalGroup__c adhocGroupSO = null;
            if (groupSO.Apttus_Approval__GroupSequence__c == 1) {
                // create group 1
                adhocGroupSO = new Apttus_Approval__AdhocApprovalGroup__c(
                    Id = groupSO.Id,
                    Apttus_Approval__AdhocApprovalProcessId__c = processSO.Id,
                    Apttus_Approval__DependsOn__c = null,
                    Apttus_Approval__GroupName__c = 'Group 1 - Edited',
                    Apttus_Approval__GroupSequence__c = 1
                );
                // update group 1
                adhocGroupDTO = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO(adhocGroupSO);
                adhocProcessDTO.addAdhocApprovalGroup(adhocGroupDTO);
                
                // iterate over approvers to update
                for (Apttus_Approval__AdhocApprover__c approverSO : groupSO.Apttus_Approval__AdhocApprovers__r) {
                    Apttus_Approval__AdhocApprover__c adhocApproverSO = null;
                    if (approverSO.Apttus_Approval__ApproverSequence__c == 1) {
                        // create group 1 approver 1
                        adhocApproverSO = new Apttus_Approval__AdhocApprover__c(
                            Id = approverSO.Id,
                            Apttus_Approval__AdhocApprovalGroupId__c = groupSO.Id,
                            Apttus_Approval__ApproverSequence__c = 1,
                            Apttus_Approval__DependsOn__c = null,
                            Apttus_Approval__AssigneeId__c = userSO1.Id,
                            Apttus_Approval__AssigneeType__c = 'User',
                            Apttus_Approval__AssigneeValue__c = userSO1.Name,
                            Apttus_Approval__AutoReapprovalEnabled__c = true,      
                            Apttus_Approval__IsReviewer__c = false       
                        );
                        
                    } else if (approverSO.Apttus_Approval__ApproverSequence__c == 2) {
                        // create group 1 approver 2
                        adhocApproverSO = new Apttus_Approval__AdhocApprover__c(
                            Id = approverSO.Id,
                            Apttus_Approval__AdhocApprovalGroupId__c = groupSO.Id,
                            Apttus_Approval__ApproverSequence__c = 2,
                            Apttus_Approval__DependsOn__c = '1',
                            Apttus_Approval__AssigneeId__c = userSO2.Id,
                            Apttus_Approval__AssigneeType__c = 'User',
                            Apttus_Approval__AssigneeValue__c = userSO2.Name,
                            Apttus_Approval__AutoReapprovalEnabled__c = true,      
                            Apttus_Approval__IsReviewer__c = false       
                        );
                        
                    }
                    
                    // update approver
                    adhocApproverDTO = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO);
                    adhocGroupDTO.addAdhocApprover(adhocApproverDTO);
                    
                }
                
            } else if (groupSO.Apttus_Approval__GroupSequence__c == 2) {
                // create group 2
                adhocGroupSO = new Apttus_Approval__AdhocApprovalGroup__c(
                    Id = groupSO.Id,
                    Apttus_Approval__AdhocApprovalProcessId__c = processSO.Id,
                    Apttus_Approval__DependsOn__c = null,
                    Apttus_Approval__GroupName__c = 'Group 2 - Edited',
                    Apttus_Approval__GroupSequence__c = 2
                );
                // update group 2
                adhocGroupDTO = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO(adhocGroupSO);
                adhocProcessDTO.addAdhocApprovalGroup(adhocGroupDTO);
                
                // iterate over approvers to update
                for (Apttus_Approval__AdhocApprover__c approverSO : groupSO.Apttus_Approval__AdhocApprovers__r) {
                    Apttus_Approval__AdhocApprover__c adhocApproverSO = null;
                    if (approverSO.Apttus_Approval__ApproverSequence__c == 1) {
                        // create group 2 approver 1
                        adhocApproverSO = new Apttus_Approval__AdhocApprover__c(
                            Id = approverSO.Id,
                            Apttus_Approval__AdhocApprovalGroupId__c = groupSO.Id,
                            Apttus_Approval__ApproverSequence__c = 1,
                            Apttus_Approval__DependsOn__c = null,
                            Apttus_Approval__AssigneeId__c = userSO3.Id,
                            Apttus_Approval__AssigneeType__c = 'User',
                            Apttus_Approval__AssigneeValue__c = userSO3.Name,
                            Apttus_Approval__AutoReapprovalEnabled__c = true,      
                            Apttus_Approval__IsReviewer__c = false       
                        );
                        
                    } else if (approverSO.Apttus_Approval__ApproverSequence__c == 2) {
                        // create group 2 approver 2
                        adhocApproverSO = new Apttus_Approval__AdhocApprover__c(
                            Id = approverSO.Id,
                            Apttus_Approval__AdhocApprovalGroupId__c = groupSO.Id,
                            Apttus_Approval__ApproverSequence__c = 2,
                            Apttus_Approval__DependsOn__c = '1',
                            Apttus_Approval__AssigneeId__c = userSO4.Id,
                            Apttus_Approval__AssigneeType__c = 'User',
                            Apttus_Approval__AssigneeValue__c = userSO4.Name,
                            Apttus_Approval__AutoReapprovalEnabled__c = true,      
                            Apttus_Approval__IsReviewer__c = false       
                        );
                        
                    }
                    
                    // update approver
                    adhocApproverDTO = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO);
                    adhocGroupDTO.addAdhocApprover(adhocApproverDTO);
                    
                }
                
                // create group 2 approver 3
                Apttus_Approval__AdhocApprover__c adhocApproverSO = new Apttus_Approval__AdhocApprover__c(
                    Id = null,
                    Apttus_Approval__AdhocApprovalGroupId__c = groupSO.Id,
                    Apttus_Approval__ApproverSequence__c = 3,
                    Apttus_Approval__DependsOn__c = '2',
                    Apttus_Approval__AssigneeId__c = userSO5.Id,
                    Apttus_Approval__AssigneeType__c = 'User',
                    Apttus_Approval__AssigneeValue__c = userSO5.Name,
                    Apttus_Approval__AutoReapprovalEnabled__c = true,      
                    Apttus_Approval__IsReviewer__c = false       
                );
                // update group 2 approver 3
                adhocApproverDTO = new Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO(adhocApproverSO);
                adhocGroupDTO.addAdhocApprover(adhocApproverDTO);
                
            }
            
        }
        // print input structure
        PrintAdhocApprovalProcess(adhocProcessDTO);
        // call API to update process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.UpdateRuntimeAdhocApprovalProcess(adhocProcessDTO);
        
        // print output structure
        PrintAdhocApprovalProcess(adhocProcessDTOResult);
        
    }
    /**
     * Retrieve a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return the runtime adhoc approval process structure
     */
    public static void TestGetRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        
        // call API to get process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.GetRuntimeAdhocApprovalProcess(sObjectType, sObjectId);
        
        // print output structure
        PrintAdhocApprovalProcess(adhocProcessDTOResult);
        
    }
    /**
     * Delete a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return <code>true</code> if the process is deleted, <code>false</code> otherwise 
     */
    public static void TestDeleteRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        
        // call API to delete process
        Boolean ok = Apttus_Approval.ApprovalsWebService.DeleteRuntimeAdhocApprovalProcess(sObjectType, sObjectId);
        system.assertEquals(ok, true);
        
    }
    /**
     * Add comment to a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return <code>true</code> if the comment was added, <code>false</code> otherwise 
     */
    public static void TestAddCommentToRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        
        // call API to add comment
        Boolean ok = Apttus_Approval.ApprovalsWebService.AddCommentToRuntimeAdhocApprovalProcess(sObjectType, sObjectId, 'MY NEW comment');
        system.assertEquals(ok, true);
        // call API to get process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.GetRuntimeAdhocApprovalProcess(sObjectType, sObjectId);
        // get comment from process
        Apttus_Approval__AdhocApprovalProcess__c adhocProcessSO = adhocProcessDTOResult.getAdhocApprovalProcessSO();
        String comment = adhocProcessSO.Apttus_Approval__ProcessComments__c;
        system.assertEquals(comment, 'MY NEW comment');
        
    }
    /**
     * Add attachments to a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return <code>true</code> if the attachments were added, <code>false</code> otherwise 
     */
    public static void TestAddAttachmentsToRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        
        // create list of attachments to add
        List<ID> attachmentIds = new List<ID>{sObjectId, sObjectId};
        // call API to add attachments
        Boolean ok = Apttus_Approval.ApprovalsWebService.AddAttachmentsToRuntimeAdhocApprovalProcess(sObjectType, sObjectId, attachmentIds);
        system.assertEquals(ok, true);
        
        // call API to get process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.GetRuntimeAdhocApprovalProcess(sObjectType, sObjectId);
        // get attachments from process
        Apttus_Approval__AdhocApprovalProcess__c adhocProcessSO = adhocProcessDTOResult.getAdhocApprovalProcessSO();
        String attachmentIdsStr = adhocProcessSO.Apttus_Approval__AttachmentIds__c;
        String attachmentIdsStrExpected = sObjectId + ',' + sObjectId;
        system.assertEquals(attachmentIdsStr, attachmentIdsStrExpected);
    }
    /**
     * Delete attachments from a runtime adhoc approval process
     * @param sObjectType the approval context sobject type 
     * @param sObjectId the approval context sobject identifier
     * @return <code>true</code> if the attachments were removed, <code>false</code> otherwise 
     */
    public static void TestDeleteAttachmentsFromRuntimeAdhocApprovalProcess(String sObjectType, ID sObjectId) {
        
        // create list of attachments to delete
        List<ID> attachmentIds = new List<ID>{sObjectId};
        // call API to delete attachments
        Boolean ok = Apttus_Approval.ApprovalsWebService.DeleteAttachmentsFromRuntimeAdhocApprovalProcess(sObjectType, sObjectId, attachmentIds);
        system.assertEquals(ok, true);
        
        // call API to get process
        Apttus_Approval.AdhocApprovalProcessDTO adhocProcessDTOResult = Apttus_Approval.ApprovalsWebService.GetRuntimeAdhocApprovalProcess(sObjectType, sObjectId);
        // get attachments from process
        Apttus_Approval__AdhocApprovalProcess__c adhocProcessSO = adhocProcessDTOResult.getAdhocApprovalProcessSO();
        String attachmentIdsStr = adhocProcessSO.Apttus_Approval__AttachmentIds__c;
        system.assertEquals(attachmentIdsStr, sObjectId);
    }
    /**
     * Prints an adhoc process definition
     * @param approvalProcessDTO the adhoc approval process definition
     */
    public static void PrintAdhocApprovalProcess(Apttus_Approval.AdhocApprovalProcessDTO approvalProcessDTO) {
        
        // print process info
        Apttus_Approval__AdhocApprovalProcess__c processSO = approvalProcessDTO.getAdhocApprovalProcessSO();
        system.debug('processSO='+processSO);
        
        // print approval groups and approvers
        for (Apttus_Approval.AdhocApprovalProcessDTO.AdhocApprovalGroupDTO groupDTO : approvalProcessDTO.getAdhocApprovalGroups()) {
            Apttus_Approval__AdhocApprovalGroup__c groupSO = groupDTO.getAdhocApprovalGroupSO();
            system.debug('groupSO='+groupSO);
            
            // get approvers
            for (Apttus_Approval.AdhocApprovalProcessDTO.AdhocApproverDTO approverDTO : groupDTO.getAdhocApprovers()) {
                Apttus_Approval__AdhocApprover__c approverSO = approverDTO.getAdhocApproverSO();
                system.debug('approverSO='+approverSO);
                
            }
            
        }
        
    }
}