Hello,
For preface I am using a query expression rule to query information from the database and display that throughout the dropdown and then save the information into a rule input under a FK to be able to reference the databases.
This error says:
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error at function a!dropdownField [line 52]: A dropdown component [label=“Location”] has an invalid value for “value”. All selected values must be present in the choiceValues array, but value was Patrick AFB and choiceValues was [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Patrick AFB,locationCountry:USA,locationState:FL,locationCity:Brevard County,id:1]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:White Sands Missle Range,locationCountry:USA,locationState:NM,locationCity:Las Cruces,id:2]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Hollowman AFB,locationCountry:USA,locationState:NM,locationCity:Alamogordo,id:3]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Edwards AFB,locationCountry:USA,locationState:CA,locationCity:Kern County,id:4]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Vandenberg AFB,locationCountry:USA,locationState:CA,locationCity:Lompoc,id:5]; [locationRequestedCurrency:12345,locationProductId:Test,locationRange:Test,locationSite:Test,locationBase:Test Base,locationCountry:Test,locationState:TS,locationCity:Test,id:6].
when I insert "ri!GISDataTypes.locationDataTypes.locationBase" into the Selected Value under the dropdown. This also happens with other dropdowns where its just choice values and labels are put in there statically not using variables
This is the code I am using that has the dropdown specifically:
a!boxLayout( label: "2. Location of Survey:", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", instructions: "", value: { "Identify the range, base, city, state ,and country" } ), a!dropdownField( label: "Location", labelPosition: "ABOVE", placeholderLabel: "Please Select A Value", choiceLabels: local!myValues.data.locationBase, choiceValues: local!myValues.data, saveInto: ri!GISDataTypes.locationDataTypes, validations: {} ), a!columnsLayout( columns: { a!columnLayout( contents: { a!linkField( label: "Click to add another Location For a Survey", labelPosition: "ABOVE", links: { a!startProcessLink( label: "Click Here", processmodel: cons!Location_Form_Constant_PM ) } ), a!radioButtonField( label: "Validation Status", labelPosition: "ABOVE", choiceLabels: {"Valid ", "Not Valid"}, choiceValues: {"Valid", "Not Valid"}, value: ri!GISDataTypes.validStatus, saveInto: ri!GISDataTypes.validStatus, choiceLayout: "STACKED", validations: {} ) } ) } ), a!columnsLayout( columns: { a!columnLayout( contents: { a!dropdownField( label: "Need Type", labelPosition: "ABOVE", placeholderLabel: "--- Select a Value ---", choiceLabels: {"Option 1", "Option 2"}, choiceValues: {1, 2}, value: ri!GISDataTypes.needType, saveInto: ri!GISDataTypes.needType, validations: {} ) } ), a!columnLayout( contents: { a!dateField( label: "Need Date", labelPosition: "ABOVE", value: ri!GISDataTypes.needDate, saveinto: ri!GISDataTypes.needDate, validations: {} ) } ), a!columnLayout( contents: {} ) } ) }, style: "STANDARD", marginBelow: "STANDARD" ),
This is the code of the entire interface:
a!localVariables( local!myValues: rule!GIS_GetLocationDetails(active: true()), { a!sectionLayout( label: "Geospatial Information and Services Request", contents: { a!columnsLayout( columns: { a!columnLayout( contents: { a!boxLayout( label: "1. Customer Identificaiton and Date:", contents: { a!textField( label: "Customer", labelPosition: "ABOVE", value: ri!GISDataTypes.customer, saveInto: ri!GISDataTypes.customer, required: true, validations: if( len( ri!GISDataTypes.customer ) > 50, "Value may not be longer than 50 characters. You have entered " & len( ri!GISDataTypes.customer ) & " characters.", null ) ), a!dateField( label: "Date", labelPosition: "ABOVE", value: ri!GISDataTypes.date, saveInto: ri!GISDataTypes.date, required: true ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "2. Location of Survey:", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", instructions: "", value: { "Identify the range, base, city, state ,and country" } ), a!dropdownField( label: "Location", labelPosition: "ABOVE", placeholderLabel: "Please Select A Value", choiceLabels: local!myValues.data.locationBase, choiceValues: local!myValues.data, value: ri!GISDataTypes.locationDataTypes.locationBase, saveInto: ri!GISDataTypes.locationDataTypes, validations: {} ), a!columnsLayout( columns: { a!columnLayout( contents: { a!linkField( label: "Click to add another Location For a Survey", labelPosition: "ABOVE", links: { a!startProcessLink( label: "Click Here", processmodel: cons!Location_Form_Constant_PM ) } ), a!radioButtonField( label: "Validation Status", labelPosition: "ABOVE", choiceLabels: {"Valid ", "Not Valid"}, choiceValues: {"Valid", "Not Valid"}, value: ri!GISDataTypes.validStatus, saveInto: ri!GISDataTypes.validStatus, choiceLayout: "STACKED", validations: {} ) } ) } ), a!columnsLayout( columns: { a!columnLayout( contents: { a!dropdownField( label: "Need Type", labelPosition: "ABOVE", placeholderLabel: "--- Select a Value ---", choiceLabels: {"Option 1", "Option 2"}, choiceValues: {1, 2}, value: ri!GISDataTypes.needType, saveInto: ri!GISDataTypes.needType, validations: {} ) } ), a!columnLayout( contents: { a!dateField( label: "Need Date", labelPosition: "ABOVE", value: ri!GISDataTypes.needDate, saveinto: ri!GISDataTypes.needDate, validations: {} ) } ), a!columnLayout( contents: {} ) } ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "3. Support Needed:", contents: { a!checkboxField( label: "Survey Types:", labelPosition: "ABOVE", choiceLabels: cons!GIS_Survey_Types_list, choiceValues: cons!GIS_Survey_Types_list, value: ri!GISDataTypes.surveyTypes, saveInto: ri!GISDataTypes.surveyTypes, validations: {} ), a!textField( label: "Other Type:", labelPosition: "ABOVE", value: ri!GISDataTypes.otherTypes, saveInto: ri!GISDataTypes.otherTypes, refreshAfter: "UNFOCUS", showwhen: ri!GISDataTypes.surveyTypes = "Other", validations: {} ), a!paragraphField( label: "Support Required: ", labelPosition: "ABOVE", helptooltip: { "Indicate, as specifically as possible, what needs to be done, e.g., Inertial Navigation System [INS] update points, Precision Measurement Equipment Laboratory [PMEL] survey, radar sites, range/calibration targets, aim/impact points, Geodetic/Gravity Base network, Gravity Gradiometry, etc. Also indicate how many points or sites are involved." }, value: ri!GISDataTypes.suppRequired, saveInto: ri!GISDataTypes.suppRequired, refreshAfter: "UNFOCUS", required: true, height: "MEDIUM", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "4. Required Data and Accuracies: ", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", value: { "Indicate the type of data needed (e.g., geodetic coordinates, astronomic data, azimuths, gravity data, UTM coordinates, etc.); the datums (if other than WGS 84 and EGM 08); and the desired medium for delivery (if other than Excel and .pdf).", char(10), "Examples:", char(10), " Geodetic coordinates (latitude, longitude, ellipsoid height):", char(10), " Absolute: 0.5 meter each component relative to WGS 84", char(10), " Relative: 0.01 meter + 1ppm relative to local network", char(10), " Elevations (orthometric heights, local vertical datum elevations):", char(10), " Absolute: 0.5 meter relative to EGM 08 and WGS 84,", char(10), " 0.05 meter relative to local vertical datum", char(10), " Relative: 0.01 relative to local network", char(10), " Azimuths: 10 arcsec relative to geodetic/astronomic north", char(10), " Slant Ranges: 0.02 meter relative to local network", char(10), " Vertical angles (true, apparent): 10 arcsec relative to local network", char(10), " Deflection components: 0.5 arcsec relative to FK 6 star catalog and WGS 84", char(10), " Acceleration of gravity: 50 μGals relative to local absolute/IGSN 71", char(10), " Gravity Gradiometry: 2 Eotvos, or 0.2μGal/meter", char(10), char(10), " All at the 95% (2σ) confidence level" } ), a!paragraphField( label: "Required Data and Accuracies:", labelPosition: "ABOVE", value: ri!GISDataTypes.dataNeeded, saveInto: ri!GISDataTypes.dataNeeded, refreshAfter: "UNFOCUS", required: true, requiredmessage: "", height: "MEDIUM", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "5. Suspenses:", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", value: { "Please allow 30 days for planning/scheduling survey activities prior to data acquisition and 30 days after completion of the field survey for reduction, analysis, quality control, etc. If the preferred 30-day buffer before and after data acquisition cannot be honored please justify in paragraph 10." } ), a!dateField( label: "Date Survey Required:", labelPosition: "ADJACENT", value: ri!GISDataTypes.dateSurvey, saveInto: ri!GISDataTypes.dateSurvey, required: true ), a!dateField( label: "Date Final Data Survey Required:", labelPosition: "ADJACENT", value: ri!GISDataTypes.dateFinalSurvey, saveInto: ri!GISDataTypes.dateFinalSurvey, required: true ), a!dateField( label: "Date of Mission (If Applicable):", labelPosition: "ADJACENT", value: ri!GISDataTypes.dateMission, saveInto: ri!GISDataTypes.dateMission, required: true ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "6. Justification:", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", value: { "Identify the system/program or operation supported and impact if support is not provided." } ), a!paragraphField( label: "Justification:", labelPosition: "ABOVE", value: ri!GISDataTypes.justification, saveInto: ri!GISDataTypes.justification, refreshAfter: "UNFOCUS", height: "MEDIUM", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "7. Special Handling Requirements: ", contents: { a!checkboxField( label: "Handling Requirements", labelPosition: "ABOVE", choiceLabels: {"For Official Use Only", "Limited Distribution", "Proprietary"}, choiceValues: {"FOUO", "Limited Distribution", "Proprietary"}, value: ri!GISDataTypes.specHandling, saveInto: ri!GISDataTypes.specHandling, choicelayout: "COMPACT", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "8. Security Classification of GI&S Requested:", contents: { a!checkboxField( label: "Classification", labelPosition: "ABOVE", choiceLabels: {"Unclassified", "Secret","Top Secret","SCI"}, choiceValues: {"Unclassified", "Secret", "Top Secret", "SCI"}, value: ri!GISDataTypes.classification, saveInto: ri!GISDataTypes.classification, required: true, choicelayout: "COMPACT", validations: {} ), a!textField( label: "Classification Authority", labelPosition: "ABOVE", value: ri!GISDataTypes.classAuth, saveInto: ri!GISDataTypes.classAuth, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Downgrading Instructions", labelPosition: "ABOVE", value: ri!GISDataTypes.downInst, saveInto: ri!GISDataTypes.downInst, refreshAfter: "UNFOCUS", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "9. Point(s) of Contact/Requesting Office/Mailing Address(es) for Published Data", contents: { a!richTextDisplayField( label: "Rich Text", labelPosition: "COLLAPSED", value: { "Indicate what office(s) should receive the published data. If email is preferred delivery method, please annotate below." } ), a!textField( label: "POC/Requesting Office", labelPosition: "ABOVE", value: ri!GISDataTypes.requestOffice, saveInto: ri!GISDataTypes.requestOffice, refreshAfter: "UNFOCUS", required: true, validations: {} ), a!sideBySideLayout( items: { a!sideBySideItem( item: a!textField( label: "Rank", labelPosition: "ABOVE", value: ri!GISDataTypes.rank, saveInto: ri!GISDataTypes.rank, refreshAfter: "UNFOCUS", validations: {} ), width: "MINIMIZE" ), a!sideBySideItem( item: a!textField( label: "Name", labelPosition: "ABOVE", value: ri!GISDataTypes.name, saveInto: ri!GISDataTypes.name, refreshAfter: "UNFOCUS", required: true, validations: {} ) ) } ), a!textField( label: "Address", labelPosition: "ABOVE", value: ri!GISDataTypes.address, saveInto: ri!GISDataTypes.address, refreshAfter: "UNFOCUS", required: true, validations: {} ), a!textField( label: "Email", labelPosition: "ABOVE", value: ri!GISDataTypes.email, saveInto: ri!GISDataTypes.email, refreshAfter: "UNFOCUS", required: true, validations: {} ), a!columnsLayout( columns: { a!columnLayout( contents: { a!textField( label: "DSN", labelPosition: "ABOVE", value: ri!GISDataTypes.dsn, saveInto: ri!GISDataTypes.dsn, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Fax", labelPosition: "ABOVE", value: ri!GISDataTypes.fax, saveInto: ri!GISDataTypes.fax, refreshAfter: "UNFOCUS", validations: {} ) } ), a!columnLayout( contents: { a!textField( label: "Commercial Phone", labelPosition: "ABOVE", value: ri!GISDataTypes.comPhone, saveInto: ri!GISDataTypes.comPhone, refreshAfter: "UNFOCUS", validations: {} ), a!textField( label: "Secure Phone", labelPosition: "ABOVE", value: ri!GISDataTypes.secPhone, saveInto: ri!GISDataTypes.secPhone, refreshAfter: "UNFOCUS", validations: {} ) } ), a!columnLayout( contents: { a!textField( label: "Cell Phone", labelPosition: "ABOVE", value: ri!GISDataTypes.cellPhone, saveInto: ri!GISDataTypes.cellPhone, refreshAfter: "UNFOCUS", validations: {} ) } ) } ), a!checkboxField( label: "Report Delivery", labelPosition: "ABOVE", choiceLabels: {"Mail", "Email"}, choiceValues: {"Mail", "Email"}, value: ri!GISDataTypes.deliveryType, saveInto: ri!GISDataTypes.deliveryType, required: true, choicelayout: "COMPACT", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!boxLayout( label: "10. Additional Remarks", contents: { a!paragraphField( label: "Additional Remarks:", labelPosition: "ABOVE", helptooltip: "Include anything that may clarify the requirement, restrictions on the data or survey activities, and individual(s) we may contact for questions or assistance.", value: ri!GISDataTypes.additionalInfo, saveInto: ri!GISDataTypes.additionalInfo, refreshAfter: "UNFOCUS", validations: {} ) }, style: "STANDARD", marginBelow: "STANDARD" ), a!columnsLayout( columns: { a!columnLayout( contents: { a!buttonArrayLayout( buttons: { a!buttonWidget( label: "Cancel", value: true(), saveinto: ri!cancel, submit: false, style: "SECONDARY" ) }, align: "START" ) } ), a!columnLayout( contents: { a!buttonArrayLayout( buttons: { a!buttonWidget( label: "Submit", submit: true, style: "PRIMARY" ) }, align: "END" ) } ) } ) } ) } ) } ) } )
Discussion posts and replies are publicly visible
Did you try to change
value: ri!GISDataTypes.locationDataTypes.locationBase, saveInto: ri!GISDataTypes.locationDataTypes,
to
value: ri!GISDataTypes.locationDataTypes, saveInto: ri!GISDataTypes.locationDataTypes,
This is the reason for the error message.
Yes I have tried both and to no avail it doesn't work unfortunately
So this works but I cant save it into my database which is what I am trying to do how would I save it into the database?
Did you have a chance to do the Appian application building tutorial? This should help you to understand how Appian works. docs.appian.com/.../Application_Building_Tutorial.html
Yes I have, but when you save it into a local variable I cannot save it into my rule input how would I do that?
Hm ... just change it to store it to your rule input. Did you try that? Did it work? If not, what was the error message? The more details you provide, the more we can help.
It errors at this: Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error at function a!dropdownField [line 53]: A dropdown component [label=“Location”] has an invalid value for “value”. All selected values must be present in the choiceValues array, but value was [id=2, locationCity=Las Cruces, locationState=NM, locationCountry=USA, locationBase=White Sands Missle Range, locationSite=, locationRange=, locationProductId=, locationRequestedCurrency=] and choiceValues was [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Patrick AFB,locationCountry:USA,locationState:FL,locationCity:Brevard County,id:1]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:White Sands Missle Range,locationCountry:USA,locationState:NM,locationCity:Las Cruces,id:2]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Hollowman AFB,locationCountry:USA,locationState:NM,locationCity:Alamogordo,id:3]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Edwards AFB,locationCountry:USA,locationState:CA,locationCity:Kern County,id:4]; [locationRequestedCurrency:,locationProductId:,locationRange:,locationSite:,locationBase:Vandenberg AFB,locationCountry:USA,locationState:CA,locationCity:Lompoc,id:5]; [locationRequestedCurrency:12345,locationProductId:Test,locationRange:Test,locationSite:Test,locationBase:Test Base,locationCountry:Test,locationState:TS,locationCity:Test,id:6].
The is what I explained some post earlier. The data types do not match. Try a simple example with a rule input of type text and a drop down with choiceValues of type integer. Will not work,
do I have to change the data type of the dropdown?
how would I change the type of the output to match?
The data type of the data you use for choiceValues must be the same as the rule input in which you store. You can do that using the cast() function as I already explained above.
I guess I do not understand how it works
cast(type!GISDataTypes.locationDataTypes, local!myValues.data)
This doesnt work
What is the name of your nested data type inside GISDataTypes? You want to do the cast to a list of this.
the name is locationDataTypes
OK. Does cast(type!locationDataTypes, local!myValues.data) work?
No it says its an invalid type
When I put it as the actual Data type that i am fk from the database it gives me the same error as before
If I just do local!myValues.data for Selected values this is my new error message:
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error at function a!dropdownField [line 53]: A dropdown component [label=“Location”] has an invalid value for “value”. Choice index 22 is out of bounds. The choice index must be between 1 and 7.
I have made a temporary work around, where I saved the values into local!selected like you stated above and then used the saveInto function on a button to save the =local into the rule input which worked just fine. No need to change the typing. Just doesn't like being saved directly into rule input. I also tried as a fix to use the & symbol and save it into both local!selected and the rule inputs where I was greeted with a different error where it said something to the effect of you cant save changing variables into rule inputs. So my best bet is that I can save it into the local and then submit the local along with everything else resulting in my following fix.
Thank you for your help entirely in trying to help me solve it! You did help along the way!
Then this is not the type which seems to be nested into your GISDataType. Check the data type to see how this looks like. You can post a screenshot of the data type.