Update the state model script include

Update the ChangeRequestStateModel_normal script include to add new functions for the new Complete state.

Before you begin

Role required: admin

About this task

You update the ChangeRequestStateModel_normal with the following configuration.
  • Add new canMove and moving functions for the Complete state. These functions can return a value of true since there are no special conditions for or extra actions to perform when moving to the Complete state.
  • Modify the definition of the existing object for the Implement state to ensure that the next state is Complete.
  • Add an object for the Complete state, which defines Review and Closed as the next two states.
    Note: The canMove functions for the transition to these states from Complete checks the Needs review custom field to determine the correct next state.

Procedure

  1. Navigate to System Definition > Script Includes.
  2. Open the ChangeRequestStateModel_normal script include and modify the script as follows.
    1. Add the following line at the end of the script include but before the line starting with type:
      toComplete_moving: function() {
                    return true; 
               },              
      
               toComplete_canMove: function() {      
                     return true;       
               },
    2. Modify the existing implement object to toComplete:
      implement: {
                  nextState: [ "complete" ],
      
                  complete: { 
                      moving: function() {                
                          return this.toComplete_moving(); 
                      },             
      
                      canMove: function() {                
                          return this.toComplete_canMove();            
                      }       
                  },        
      
                  canceled: {  
                      moving: function() {               
                         return this.toCanceled_moving();   
                      },             
      
                      canMove: function() {               
                         return this.toCanceled_canMove(); 
                      }        
                  }    
              },
  3. Add the following new state object for complete.
    complete: {
                 nextState : [ "review", "closed" ],         
    
                 review : {            
                       moving : function() {
                             return this.toReview_moving();            
                       },             
    
                       canMove : function() {              
                              if (this._gr.getValue("u_needs_review") == "Yes")   
                                   return true;                            
                          
                              return false;
                       }        
                 },                     
    
                 closed : {            
                       moving : function() {  
                             return this.toClosed_moving();
                       },             
    
                       canMove : function() {              
                              if (this._gr.getValue("u_needs_review") == "No")
                                   return true;    
                            
                      return false;
                      }       
                 },  
    
                 canceled : { 
                       moving : function() {                
                             return this.toCanceled_moving();     
                       },             
    
                       canMove : function() {                
                              return this.toCanceled_canMove(); 
                       }   
                 }    
            },
  4. Click Update.