Appian Community
Site
Search
Sign In/Register
Site
Search
User
DISCUSS
LEARN
SUCCESS
SUPPORT
Documentation
AppMarket
More
Cancel
I'm looking for ...
State
Not Answered
Replies
5 replies
Subscribers
4 subscribers
Views
2762 views
Users
0 members are here
Share
More
Cancel
Related Discussions
Home
»
Discussions
»
Plug-Ins
How can we update the nested CDT values with IFM? I have used follow
Vinod Bongoni
Certified Lead Developer
over 8 years ago
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
0
Vinod Bongoni
Certified Lead Developer
over 8 years ago
...st2=[three=2, four=3, test1=[one=4, two=5]]]]",
"UPDATE_PMI 536871922 SET PV test3 = [{five=1,{three=2,four=3,{one=4,two=5}}}]",
"UPDATE_PMI 536871922 SET PV test3.test2.test1.one = [5]"
Is there any possible way to update a variable 'one' in the nested CDT 'test1' in above example using IFM or any? or Can I assume that we can't update a nested CDT PV's using IFM?
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
James Carter
Appian Employee
over 8 years ago
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.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
Vinod Bongoni
Certified Lead Developer
over 8 years ago
Hi James,
I have tried with the way you have specified above and it is not working as expected. Following are the Queries and exception results.
1. ="UPDATE_PMI 268436209 SET PV test = [internalize(" & pv!externTest3&")]"
={"UPDATE_PMI 268436209 SET PV test = [internalize("&pv!externTest3&")]"}
Exception for these queries is,
Expression evaluation error : Invalid operator 'FFFFFFFF010000006E1600004C7F000001000000B60B00000100000002000000', expecting '(' or ','
2. ={"UPDATE_PMI 268436209 SET PV test = [internalize("+pv!externTest3+")]"}
Exception for these queries is,
": Incorrect start of IFM Query"
3. ={"UPDATE_PMI 268436209 SET PV test = [pv!test]"}
No exception and no updation.
4. ={"UPDATE_PMI 268436209 SET PV test = ["&pv!test&"]"}
="UPDATE_PMI 268436209 SET PV test = [" &internalize(pv!externTest3) &"]"
Exception for these queries is,
"UPDATE_PMI 268436209 SET PV test = [[id=1, rndTest2=[id=2, rndTest1=[id=5742]]]]: Unknown characters at index 77"
5. ="UPDATE_PMI 268436209 SET PV test = [" &pv!externTest3 &"]"
Exception is,
"Expression evaluation error : Expression is invalid (1 token(s) remain after parsing)".
Please find attached screenshots for script task input and outputs. Please give me any way of work around.
Thank you.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
James Carter
Appian Employee
over 8 years ago
The function value likely needs to be quoted as it expects a string. Could you try like this?
="UPDATE_PMI 268436209 SET PV test = [internalize(""" & pv!externTest3&""")]"
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
0
Vinod Bongoni
Certified Lead Developer
over 8 years ago
Great!!!! It's working fine as expected. Thank you very much James. :)
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel