Hi,
I have used WebMakers facility to auto-generate controller rules for a wsdl service, which is very convienient. But if I remove all references I can find to that service from my application (in screens, controller rules, controller available service list, asset list as well as the runtime pattern models), save and re-generate, then reintroduce it (it had changed considererably with the exception of its name and URL), I find that while the XML desciption has changed appropriately to refect the changes to the service, I am not presented a list of controllers as auto-generation targets, nor are any rules generated when I reupload the wsdl and I reintroduce it to the page structure.
What things do I need to do to ensure that auto-generation will occur?
Thanks,
BobC
I have used WebMakers facility to auto-generate controller rules for a wsdl service, which is very convienient. But if I remove all references I can find to that service from my application (in screens, controller rules, controller available service list, asset list as well as the runtime pattern models), save and re-generate, then reintroduce it (it had changed considererably with the exception of its name and URL), I find that while the XML desciption has changed appropriately to refect the changes to the service, I am not presented a list of controllers as auto-generation targets, nor are any rules generated when I reupload the wsdl and I reintroduce it to the page structure.
What things do I need to do to ensure that auto-generation will occur?
Thanks,
BobC
RE: Ensuring Re-Auto-Generation
The WSDL process that generates the "Access Service" in the Model layer, Controller rules and appropriate Data Bindings, is currently a onetime generation process for version 3.*.
WebMaker holds a number of pieces of Metadata related to this process, but some of the data is not being removed based on your steps described above.
Your steps to remove the following elements are correct:
However, all Data Sources (WSDL, SQL, Schema) also hold metadata against the 'Action' about the Data Source and how it is used.
This is related to the data you see when the dialog pops up asking for which Actions to associate with the Data Source.
In the case of the WSDL it holds metadata related to the name of the WSDL file, the operation selected, and the type of message e.g. request/response.
Unfortunately, the process does not recognise that any of these details have changed in your scenario, so it will not try to perform the generation process for the Access Service, Controller Rules and Data Bindings. The metadata is not being removed correctly, and so the process does not identify that it needs to regenerate all the various elements.
The simplest approach is to go to the Asset pool for the WSDL and rename or copy the WSDL with a new filename and add a suffix of "_V2" or a date "_2011-11-22" to the end of the filename before the .wsdl file type e.g. "Contact-Service_2011-11-22.wsdl".
You will then need to go to the page and select the new filename as a Data Source. This should mean that the process recognises that the filename has not been used, and so perform the entire generation process.
Note: An alternative approach is to delete the Action between the page and the controller that the WSDL Data Source was used against, and then add the same Action again and attached the WSDL as a Data Source. Unfortunately, this approach can be more of an issue as you may have other Data Sources and Data Bindings attached to the Action, which would be lost. This would probably create more issues. The WSDL filename is a cleaner method. We would not recommend this action deletion approach unless you have only used the one Data Source and you are clear that you will not lose any other processing previously setup.
Finally, this approach should be adopted if the WSDL changes in relation to: the operations, data message data structures or request/response message invocations.