a!localVariables( local!oldCdt: rule!ITS_GetPQRRequestByPqrRequestId(pqrRequestId: 71), local!newCdt: rule!ITS_GetPQRRequestByPqrRequestId(pqrRequestId: 80), local!fields: split( stripwith( tostring( 'type!{urn:com:appian:types:ITS}ITS_PQR_REQUEST_DETAILS'() ), "[= " ), "," ), tostring( a!flatten( a!forEach( items: local!fields, expression: { if( exact( if( isnull(local!oldCdt[fv!item]), "", local!oldCdt[fv!item] ), if( isnull(local!newCdt[fv!item]), "", local!newCdt[fv!item] ) ), {}, fv!item & ": " & local!newCdt[fv!item] ) } ) ) ) ),
Discussion posts and replies are publicly visible
tiePointStatus is not accessible. Instead of dot operator, please use property() function.
tiePointStatus is field name of our CDT ,we are trying to compare two records which are in same CDT.
I am getting below error
Expression evaluation error at function a!forEach [line 15]: Error in a!forEach() expression during iteration 77: Expression evaluation error at function 'isnull' parameter 1 [line 21]: Invalid index: Cannot index property 'tiePointStatus]' of type Text into type ITS_PQR_REQUEST_DETAILS
a!localVariables( local!oldCdt: rule!ITS_GetPQRRequestByPqrRequestId(pqrRequestId: 71), local!newCdt: rule!ITS_GetPQRRequestByPqrRequestId(pqrRequestId: 80), local!fields: split( stripwith( tostring( 'type!{urn:com:appian:types:ITS}ITS_PQR_REQUEST_DETAILS'() ), "[= " ), "," ), tostring( a!flatten( a!forEach( items: local!fields, expression: { if( exact( if( isnull(property(local!oldCdt,fv!item,{})), "", property(local!oldCdt,fv!item,{}) ), if( isnull(property(local!newCdt,fv!item,{})), "", property(local!newCdt,fv!item,{}) ) ), {}, fv!item & ": " & property(local!newCdt,fv!item,{}) ) } ) ) ) ),
BTW, if you need the fields of a certain data type, then instead of manually trying to parse them from a string of the field names kludged together using the Type constructor, you should just use a!keys().
Hi Harshit Bumb,
Thank You so much for quick and affective response, I tried and it was working fine.
Thank You for your time.