Changing the Properties of a Data Class Using an Operation

This document provides information on how to use an operation to change the properties (fields) of a data class from another data class.

The development process described below demonstrates how to add a simple script to a data class (MYCLASS1) to create an operation called from a different data class (MYCLASS2).

  1. Open your data class (MYCLASS1).
  2. In the Methods block of the Methods tab:
    1. Enter a new method code (MYMETH1) in the Code field.
    2. Enter a description for the method in the Description field.
    3. Select the appropriate return type in the Return type field.
    4. Select the Operation check box. This automatically generates the keys in the Keys block.
  3. In the Parameters block, enter the parameters (MYPARAM1) that need to be passed.
  4. In the Scripts block of the General tab:
    1. Select the appropriate type for your script in the Type field.
    2. Accept the default code displayed in the Scripts field. It is automatically generated using the class code and the script type. You can also manually enter a unique code.
    3. Accept the numeric value displayed in the Running order field. It is automatically generated to control the order in which the $PROPERTIES and $METHODS labels are called in the event. You can also manually enter the running order.
  5. Click the Actions button of your script, and click Processing editor. Enter the source code below.
    Note: This example uses the key passed in the Keys block of the Methods tab to read the current context from MYCLASS1, and then update the property (PROP1) using parameter MYPARAM1.
    $Structure MYCLASS1
    ##########################################
    #             METHODS                    #
    ##########################################
    $METHODS
      Case CURPTH
        When ""
            Case ACTION
               When "MYMETHOD" Gosub MYMETHOD  # Update MYPROP1 method 
            Endcase  
      Endcase
    Return
    # Update MYPROP1 using MYPRAM1 which is passed
    # KEY1 and MYPARM1 are passed and used in this operation
    $MYMETHOD
        # Use standard method CRUD to read MYCLASS1
        ASTATUS=fmet THIS.AREAD(KEY1) 
        If ASTATUS<>[V]CST_AOK 
          ARET_VALUE= CST_AFALSE
          Return
        Endif
        # Update PROP1 using MYPARM1
        THIS.PROP1 = MYPARM1
        # Update MYCLASS1
        ASTATUS=fmet THIS.AUPDATE
        If ASTATUS<>[V]CST_AOK # check status after update
           ARET_VALUE= CST_AFALSE
          Return
        Endif
    ARET_VALUE= CST_ATRUE 
    Return
  6. Once the operation has been created, it must be called from data class MYCLASS2, or from any other data class.
    Add the following code to call MYMETHOD, which was defined above.
    ##############################################
    #  Data Class -  MYCLASS2                    #
    ##############################################
    ##############################################
    #                METHODS                     #
    ##############################################
    $METHODS
      Case CURPRO
        When ""
          Case ACTION
            When "AINSERT_AFTER" : Gosub AINSERT_AFTER
          Endcase
      Endcase
    Return
    # Action After insert
    $AINSERT_AFTER
        # Declaration new instance of MYCLASS2 data class
        Local Instance MYCLASS Using C_MYCLASS2
        MYCLASS = NewInstance C_MYCLASS2 AllocGroup Null
        ASTATUS=fmet MYCLASS.MYMETHOD(KEYID,MYPARM1)
        If ASTATUS<>[V]CST_ATRUE
          ASTATUS = fmet THIS.ASETERROR ("", "Not updated.", [V]CST_AERROR)    
        Endif
        # Free instances
        FreeGroup MYCLASS
    Return
  7. Save your script.
  8. Save and validate your data class.