How can we update the nested CDT values with IFM? I have used follow

Certified Lead Developer
How can we update the nested CDT values with IFM?

I have used following queries to update the nested CDT(as attached) values with IFM but no query is worked.

=UPDATE_PMI 144 SET PV test = [{five:1,test2: {three:2,four:3,test1: {one:4,two:5}}}]
It is updating the PV 'test' with null. And, I have also tried with many possible ways to update a nested CDT variable like
={"UPDATE_PMI 144 SET PV test.test2.test1.one = [10001234]"}
={"UPDATE_PMI 268435724 SET PV test.test2.test1[1].one = [10001234]"}

={"UPDATE_PMI 144 SET PV test.rndTest2.rndTest1 = [{id=10001234}]"}
In all these cases, it's throwing "class java.lang.ArrayIndexOutOfBoundsException" and "Expression evaluation error : Variable '!id' not found." execeptions.

And,

"UPDATE_PMI 536871922 SET PV test3 = [1,{2,3,{4,5}}]",
"UPDATE_PMI 536871922 SET PV test3 = ["&"""[five=1,test2=[three=2,four=3,test1=[one=4,two=5]]]"""&"]",
"UPDATE_PMI 536871922 SET PV test3 = [[five=1, te...

OriginalPostID-166188

OriginalPostID-166188

  Discussion posts and replies are publicly visible

Parents
  • IFM Manager has limited support for CDTs, it doesn't work well with nested multiples. The way around it is to update the whole CDT, or a high level part of the CDT before nested multiples are used.

    In the process with the IFM node:
    1. Use a script task to create a version of "test" (the test3 top level CDT) that represents the values you want to set
    2. Use the externalize function on that CDT and save into pv!externTest3
    3. Then in the IFM node: UPDATE_PMI 536871922 SET PV test3 = [internalize(" + pv!externTest3 +")]

    It will cause the externalized string to be converted back to it's real CDT value and update the process with that value.
Reply
  • IFM Manager has limited support for CDTs, it doesn't work well with nested multiples. The way around it is to update the whole CDT, or a high level part of the CDT before nested multiples are used.

    In the process with the IFM node:
    1. Use a script task to create a version of "test" (the test3 top level CDT) that represents the values you want to set
    2. Use the externalize function on that CDT and save into pv!externTest3
    3. Then in the IFM node: UPDATE_PMI 536871922 SET PV test3 = [internalize(" + pv!externTest3 +")]

    It will cause the externalized string to be converted back to it's real CDT value and update the process with that value.
Children
No Data