Skip to main content
March 18, 2021
Question

How to cast a CDT into an new local variable, updating a field ?

  • March 18, 2021
  • 20 replies
  • 0 views

Hi,

I'm trying to save into a local variable some data retrieved from an ER. But I would need to update some fields before to store it into my new local var.

Is there any way to do it ?

With the code below I can either cast the data, either create a new CDT local var with the new field value, but I did not succeed to do both. 

(as my CDT could contain more than 50 fields I do not want to override all theses 50 fields in the code below).

a!localVariables(
  local!vehicle: rule!TST_GetVehiclesWithFilters(
    id: 1
  ).data,
  
  local!vehicleCast: cast('type!{urn:com:appian:types:tst}TST_Vehicles', local!vehicle),
  local!vehicleUpdate: 'type!{urn:com:appian:types:tst}TST_Vehicles'(
    make: "New Make"
  ),

  {
    local!vehicleCast,
    local!vehicleUpdate
  }
)

Example : my initial data retreived by the ER is :

TST_Vehicles :

    • id : 1
      • make : "make1"
        • model : "model1"
          • ...
          • ...
          • ...
          • is_active : true

          and I would like my transformed data like this :

          TST_Vehicles

            • id : 1
              • make : "New make"
                • model : "model1"
                  • ...
                  • ...
                  • ...
                  • is_active : true

                  20 replies

                  stefanhelzle0001
                  Brainy
                  March 18, 2021
                  March 18, 2021

                  Thank you Stefan but I've already tested it without success.

                  Am I forgetting something ?  (the value of the "make" field does not change)

                  a!localVariables(
                    local!vehicle: rule!TST_GetVehiclesWithFilters(
                      id: 1
                    ),
                    local!vehicleUpdateCDT: updatedictionary(
                      dictionary: local!vehicle,
                      fieldsAndValues: (
                        {
                          make: "test2"
                        }
                      )
                    ),
                  
                    {
                      local!vehicleUpdateCDT
                    }
                  )
                  

                  stefanhelzle0001
                  Brainy
                  March 18, 2021

                  Lines 7-10 should look like

                  fieldsAndValues: {
                  make: "test2"
                  }

                  There are to many brackets.