jjlong - Friday, August 26, 2011 6:53 AM:
I'm familiar with sending AML to Aras through tools such as NASH, AML Studio, and even Excel. Now I want to do the same from SharePoint. I can use a standard SharePoint SOAP request web part if I can provide a WSDL file that exposes ApplyAML(). Is there such a WSDL file? If so, how can I get it? If not, and I need to generate one, where is the ApplyAML code located that I need to generate a WSDL from?
aknourenko - Friday, August 26, 2011 10:29 AM:
It's important to understand that due to its nature the generic AML syntax can't be defined through XML schema definition language. As the result it's impossible to have a WSDL for AML in general. From other side it's quite possible the following:
- To have a trivial web service with a single method "ApplyAML" that gets a string as the input a returns a string. Obviously that both input and output strings should represent AML but in this case both building the correct input string and parsing the returned string is the responsibility of the consumer of such web service. Note that IOM is created exactly by the reason to help users with both of these tasks.
- To expose through a web service a fixed subset of item types defined in Innovator. In this case, because the subset of items types (classes) and their properties which are going to be exposed through a web service is fixed and could be defined through XML schema definition language, it's possible to have the WSDL for such web service.
Both of these possibilities are implemented in Innovator Web Services functionality. Please read about Innovator web services in "Just Ask Innovator" help.
jjlong - Friday, August 26, 2011 10:44 AM:
What I desire is the first scenario you mention. I want a WSDL to a trivial web service with a single method "ApplyXML" that gets a string as input and returns a string. I'm under the assumption that such a method exists somewhere, so I was assuming by extension that a corresponding WSDL would exist or someone has already created one that could be shared.
aknourenko - Friday, August 26, 2011 12:18 PM:
This trivial method is ALWAYS generated with any web service configuration in Innovator. So if you'll create an "empty" configuration you'll get this method. How to build and publish a web service configuration in Innovator is described in "Just Ask Innovator".
P.S. Just out of curiosity - why do you want to form and parse an AML string when it's already done for you in IOM?
jjlong - Friday, August 26, 2011 12:39 PM:
Thank you for that advice. I will give it a try.
The reason is that we are trying to do a proof-of-concept demonstration to show data from Aras displayed through a SharePoint user interface. Currently we are prohibited from bringing the IOM.dll into the SharePoint environment (for security/indemnification/political reasons) and are constrained to using an available SharePoint SOAP request web part which requires a WSDL. We intend to write a simple AML query string, pass the sting to the ApplyAML method, get an XML string back, and use an XSLT transformation to display the results. Pretty basic stuff, but we constrained by having to have a WSDL file. We could also make the request from VBA code (we've already coded a working code snippet) but using the SOAP WSDL is considered the "right" approach so we are expected to demonstrate the capabilities while conforming to that constraint (Aras AML makes what we want to do easy, but people, policy, and politics make it difficult).
jjlong - Monday, August 29, 2011 8:57 AM:
I tried following the instructions in "Just Ask Innovator" and did not have success.
I created a Web Service configuration in Innovator using one of my ItemTypes. I selected properties and actions to expose, and saved the configuration. I selected the action "Publish" . I got a couple of errors which I was able to solve (1. by creating a "WebServices" directory, and 2. by editing "web.config" <webservicepublishing > section with userid/password/domain).
I'm getting a new error now and am stuck. I get the message "Object reference not set to an instance of an object". Has anybody encountered this, or am I doing something wrong in my publishing?
aknourenko - Monday, August 29, 2011 11:56 AM:
You don't have to create manually any directories; also it's not clear to me which web.config you've modified. Here is the link from "Just Ask Innovator" that describes how to publish a web service:
starcraft/.../ Ask Innovator/About_ItemTypes.htm
Please note that the web service will be published on the same server where your Innovator server is running. If you need to move to another server you have to do it manually.
aknourenko - Monday, August 29, 2011 11:59 AM:
Sorry, the link I specified is a "common" link that does not bring you to the right page of "Just Ask Innovator". Just open open "Innovator Administration -> Web Services -> Publishing Web Services" in "Just Ask Innovator" and follow instructions on the page.
jjlong - Monday, August 29, 2011 1:37 PM:
The instructions I followed were the same ones you referenced, i.e. the online "Just Ask Innovator" Web Services topics. As for the errors I overcame, here are the details.
1) The first time I tried to "Publish" I received a message regarding not being able to create directory "C:Program FilesArasInnovatorInnovatorWebServicesCompliance" where 'Compliance' is the name of the Web Service I'm trying to publish. A check of the file system showed that the "WebServices" directory "C:Program FilesArasInnovatorInnovatorWebServices" did not exist, so Innovator could not create "Compliance" beneath it. I manually created the "WebServices" directory and that error went away, but a new one arose...
2) Once the directory was created, I received the message "Logon failure: unknown user name or password" when I selected "Publish". A search of the Aras forums led me to http://www.aras.comhttp://www.aras.com/Community/forums/p/1791/5717.aspx which told me I needed to go to C:Program FilesArasInnovatorInnovatorServer" and modify the file "web.config" to supply the settings in the <webservicepublishing> section. The default version of the file specifies
<!--Specify the user credentials on whose behalf will be published web services-->
<webservicepublishing>
<add key="user" value="user"/>
<add key="domain" value="domain"/>
<add key="password" value="password"/>
</webservicepublishing>
I filled these in with my ID, Password (unfortunately in cleartext) and domain (you have to specify a Windows User ID, not an Aras User ID). and that error went away, but a new one arose...
3) I now get the message "Object reference not set to an instance of an object"
aknourenko - Monday, August 29, 2011 3:16 PM:
I'm not sure why this post recommends changing web.config of InnovatorServer; their recommendation is wrong; nothing like this is required. What has to be modified is the web.config of InnovatorPublishWS as it described in "Just Ask Innovator". I've done it many times and it always worked.
chado - Sunday, September 4, 2011 12:27 AM:
I've seen that result (object reference not set..) in a (slightly) similar context. For me it was malformed AML. I hate to state the obvious, but I always test any manually formed AML statements with the nash tool first now..
jjlong - Monday, September 12, 2011 10:17 AM:
I've learnded that the message "Object reference not set to an instance of an object" only occurs on my Windows XP stand-alone instance of Aras. When I deploy the Web Service on our Windows Server 2008 instance of Aras I do not get the message, and the Web Service deploys and runs fine. I have also learned that the message on my local XP stand-alone instance does not prevent the Web Service from deploying.
In regards, to my original question (how do I get an ApplyAML WSDL?) I have solved that too. It is actually incredibly simple. Just add the parameter "?WSDL" to a request issued from a browser, and the WSDL will be returned in the response.
For example, on my local machine, I deployed a Web Service I named "SoapAction". When I use the following URL in my browser:
localhost/.../Innovator.asmx
the WSDL as illustrated in the attached image is returned
You can then save it to a file (I would have attached a copy here, but attachments of type WSDL are forbidden).
Thank you to all who helped!
essjay - Wednesday, February 8, 2012 6:06 AM:
Hi guys...
I've created my own Itemtype and configured/published a webservice for that item. I can see the web service information here:
localhost/.../Innovator.asmx
and can get the WSDL here:
localhost/.../Innovator.asmx
I've created a small Silverlight application and added my WSDL as a Service Reference.
I have created my Async call and executed the program. When my Silverlight app tries to contact the server I get the below error.
Can anyone shed any light on this?
Many thanks.{System.Net.WebException: The remote server returned an
error: NotFound. ---> System.Net.WebException: The remote server
returned an error: NotFound.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__1(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at
System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult
result)}