I am having some really bad problems trying to get a VB client to call a DI job, passing through a parameter (or even a table in XML format) and then getting the client to be able to read a response.
I have declared the web services and they seem to be working and be called but DI and VB don’t seem to understand each other’s XML formats.
Similarly, I have created a simple VB web service that takes a number and returns another number. I can see this in DI and import it as a function but the declaration just gives me voids, so I cannot put in a parameter or see a returned type.
Has anyone been doing anything like this? BO support haven’t been much help and the only other samples I can find use Java, which isn’t any help.
I too have just begun to try and use a .Net app to call a DI job. Would you be willing to share what you have so far. I am very much new to .Net. I went through a couple of tutorials on web services, I was able to get a Amazon Web Service using .Net working, but I am stuggling a bit with DI and .Net. Any insight you can provide would be great. I too will share any successes I have along the way.
More than happy to share some knowledge. Essentially it appears that .NET uses utf-16 encoding for its xml calls over Soap (and you cannot change this) but DI will only support utf-8.
The upshot is that you can import the web references for DI web services into a .net job and even call those functions BUT DI & .NET will not read each other’s parameters so you have to find some other way of passing parameters. It’s OK for kicking off (a)synchronous batch jobs but half the power of real-time is the ability to pass parameters back-and-forth.
I have successfully done the reverse though and created web services in .NET that get called and used within DI jobs as function calls within a query. This works really well.
The only way around this that I can see would be to use the HTTP objects in .NET and manually create the SOAP envelope, post it through HTTP and decode the xml received back, rather like the Java example BO keep showing me. Unfortunately none of my guys know much about using these objects and I don’t know whether the asynchronous, callback stuff is supported over http.
Hope this gives you an idea of where we are now. Maybe you can come up with some other stuff.
We are talking about Realtime, aren’t we? So you created a realtime job, a DF with XML message in and XML message out…
In general, we use Apache AXIS for the entire webservice stuff, so pretty standard. The encoding is something I did not know. I will check. Other very common causes are ANY datatypes inside the WSDL. As a flow orientated tool we have to know the structure…
Let me make another suggestion: Setup your Realtime Job as Realtime Service in WebAdmin. On the DI CD you will find a directory called MessageClient with its own setup. From there you can install a COM object which is very easy to use in VB as it supports just a few methods: connect/disconnect (to the Realtime Service) and send/receive (a long string in XML format).
Let me know if you need more precise guidelines or want to chat about the pros/cons of all connectors.
I thought about using the COM stuff too but couldn’t find the client library file to import. Samples I was given said ActaClient.dll but it didn’t seem to be anywhere in the BO directories. Doh! Just re-read your message, I will look for the MessageClient stuff on the CD!!
The original idea was to have a real-time job but we couldn’t get it reading the parameters so I switched it over to a batch job. It is already declared in Web Admin, otherwise you cannot see it when importing the web reference.
The other question I would have is, can you run real-time, or even batch, jobs via COM/web services using different profiles/configurations? The way I have it running at the moment, it just uses whatever the default is for the repository it’s running on but I would like to be able to run some future ones against different configurations. Perhaps there’s a parameter in the COM stuff which I don’t know about?
Of course, that makes sense. I forget that it is a running job just listening/waiting to be told to start, although you ought to be able to give it a configuration when setting it up as a web service really.
If you setup a batch job as a webservice, you can specify the profile when calling it, can’t you? In other words, the WSDL of the webservice has a parameter for the datastore profile.
You may be right, although I don’t remember seeing one and the whole point is that parameters don’t seem to be picked up. Will have to have another look.
Could it be part of the global variables and/or did I read somewhere that BODI XI allows you to set the configuration from GV’s inside the job at runtime or is that jus wishful thinking
I have encounter the same probleme but with different causes.
reponses of DI web services was null for .net client. After a little search, we found that .net and axis web server manipulate SOAP namespace a different way, so .net client was unable to understant DI response.
To work properly, we had to rewrite a part of the call to DI web service from .net.
Details would be great. It appears to work when DI webservices are called from C# (although it may be that my colleagues who use it have done something already since they use other Java/Apache web services)
As for the profiling/configuration side of things. Real-time services are profiled but if you add a batch job, which we have had to do, you cannot specify a configuration against which it should run. We are having some ex-Acta guys coming in about a month so will try and remember to post up any advice they give us on the matter.
Here is some more information about the response “null” deserialisation and namespace problem.
I don’t know if you can really use a Soap adapter other than Axis one as web service adapter for DI?
a java call to DI web service should work fine, specialy if you use axis java class, only a .net and C# standard SOAP call shoud bring back a null response I think.
For picking up parameters, it works fine with both java and .net, but we try only with corrected .net code.
What would be really nice is if anyone could share with us code and/or sample app that includes call ins and outs to a DI job. I guess I am surprised that DI doesn’t already give you an example you can use to learn how to do this. I have seen other applications that allow you similar functionality and they typically come with some working samples so developers can see a working instance and then use it as a foundation to build from.
It sounds to me that .Net, without some changes to how you call the service is not a valid option - whereas java is… is that a true statement?
The Call In & Out from a VB app is simple. You import the web reference, instantiate the object, set any parameters/attributes and tell it to run.
What falls over is that between the point of calling and the point of receipt within DI the parameters vanish because of this .NET SOAP serialization thing!
What we need is instructions on what to tweak in .NET in order to make it work properly.
For practical use, I have found that using COM is more convenient because you can dynamically decide what job to invoke i.e. a Test or Live version, using text variables & registry or db saved variables rather than importing a fixed object (job name).
Also, we have found some conflicts with the Apache AXIS version. That is, DI says it uses one version of Axis (like 1.0) but in fact it’s really generating 1.1 WSDL or some such thing. So if you use Borland JBuilder (which uses Axis 1.0), JBuilder can’t cleanly talk to DI web services either.
I don’t think I have this quite right since I’m not a java person, but maybe someone out there will understand. :?
sorry for not being easy-understanding, but it’ s a little messy
i’ll post a .net calling and reponse code sample when i could get one from dev team.
we use Unix system, so com is not really an option.
i don 't think there is an easy way to call different methode in .net call. it 's a little boring for multiple job call.
DI provides only java code, not .net code, and i can’t find any sample of .net implementation, and you re rigth, java call and reponse work fine.(as it’s java to java )
Just to let you know, Webservices are considered a hot issue. We want to get rid of ALL limitations we have today, even the ones we could argue that it makes sense actually.