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

Certified Senior Developer

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

                    Discussion posts and replies are publicly visible

                  Parents Reply
                  • 0
                    Certified Senior Developer
                    in reply to Mike Schmitt

                    I'm re-sorry Mike, my previous post was sent too quickly (I've re-edited my previous post).

                    Thank you, all works fine, but I confirm you that the old "cdt" attribute works well, anyway I have to use the new one.

                    Stefan, thank you very much for your help. "data[1]" saved my life ;-)

                    - A last question, if you would not have this plugin, how would you do ?

                    you would enter the 50 fields of the CDT and update the only one value to change ?

                  Children