The jars shipped with the Eclipse bundle "Appian Developer Edition" are very old and the documented public API differs in some cases from what is actually available.
For example the 19.4 javadocs expose com.appiancorp.suiteapi.applications.Application method getObjectsByType(java.lang.Long appianTypeLong) but the jars available in Eclipse only support the deprecated method getObjectsByType(Type<H,I,U>
For this particular problem the jar bundled with Eclipse is appian-suiteapi.jar. The closes equivalent jar I can find in the 19.4 binaries appian-suiteapi-126.96.36.199.jar does not contain the required package.
Discussion posts and replies are publicly visible
As noted in https://docs.appian.com/suite/help/19.4/Custom_Function_Plug-ins.html , the only external dependency you need is <APPIAN_HOME>/_admin/sdk/appian-plug-in-sdk.jar . We've steamlined the process of developing plugins a fair bit in recent years, so I'd encourage you to give the documentation a quick re-read and maybe try the walkthrough for creating a sample Hello World plugin.
Thanks Elliot, that is helpful - I had not realized the public API was consolidated into a single jar now. I have a quick follow up question... Previously the annotation @type mapped to an import for com.appiancorp.suiteapi.type.Type but that does not seem to be available now. What class should I import to enable custom type function parameters (and I did read the documentation for this one - if it's inn there it's not apparent)
I think the answer is to define your datatype in your appian-plugin.xml and create a corresponding java class for it, which would all get bundled up with your plugin: https://docs.appian.com/suite/help/19.4/Custom_Data_Types_from_Java_Object.html . But please feel free to reach out if you end up running into issues with that approach.
I don't think that's going to work - I have function plugins that take multiple custom CDT types as input... I don't see us maintaining a CDT and a Java representation of the CDT. I think I will most likely have to continue using an older version of the Appian jars such as the ones that are/were included with the Appian Eclipse bundle to maintain access to com.appiancorp.suiteapi.type.Type. This implementation is working fine in 19.2 so the run time code still has the implementation we need.
So, I looked into this a bit more, and it appears that we do still support the @Type annotation for types that you don't necessarily want to bundle in your plugin. The relevant classes for that should be included in the appian-plugin-sdk.jar . If you're able to confirm that they really aren't included, that may be an unintended omission on our part.
Thanks Elliot. I did check and that class isn't in the jar so I'm currently working with old versions of the SDK in multiple jars. Should we transfer this over to a support case?
yes please. you can let them know that Brett and I believe the class should be in the jar.
The issue you are facing has been reported to the Product team, and we have published a KB article for the current workaround for this @Type notation not being available:
© 2022 Appian. All rights reserved.