Appian uses CDTs to build web service requests. Any changes to an input or output of a web service operation need to be reflected in the CDT fields representing the request/response. Otherwise, Appian will continue to use outdated CDTs and will send invalid requests to the web service.
There are subtle differences on how to refresh a web service depending on how the web service is invoked. This article outlines how to refresh a web service depending on how it is being invoked.
When using the Call Web Service node, the CDTs are generated when the node is configured for the first time and the model is saved and published. Appian does not recreate the CDTs on every execution of the web service.
To account for any changes to an input or output of an operation, use the 'Get/Refresh Services' option inside the node. In Appian 16.3 and later, clicking on 'Refresh Services' will automatically 'delete' the CDT and create an updated version. Prior to Appian 16.3, it was required to first manually delete all CDTs associated with the web service, then click on 'Refresh Services'.
Alternatively, republishing the process model will accomplish the same thing.
Refer to the following documentation for more info: Call Web Service Smart Service
When using the webservicequery() function, the CDTs are created the first time the expression function is invoked.
To account for any changes to an input or output of an operation, simply deleting the data types and calling webservicequery() will not refresh their structure. In order to update the data types in this case, create a process model with the Call Web Service smart service and point it to the WSDL. Then use the Get/Refresh Services button on the Call Web Service smart service to refresh the data types. You must publish the process model to complete the update. You can optionally delete the process model afterward.
Note: If you are migrating a WSDL between environments and the data types are up to date in the source environment, you can simply import the WSDL and its CDTs into the target environment without having to perform the manual workaround for the webservicequery() function. The existing data types in the target environment will get overridden with the import.
Refer to the following documentation for more info: webservicequery() Function
This article applies to all versions of Appian.
Last Reviewed: November 2017
© 2020 Appian. All rights reserved.