I know I'm new and only doing a prototype at the moment,
but it would be nice to have the wisdom of some experienced
folks out there.
I'm currently putting together a grid that should have its
data from a SOAP service - which the Google search grid
example is not that far off from data wise, but the SOAP
has some odd calls that have to be done. It includes
some header weirdness as follows:
1. I make a SOAP call by defining the SOAP and
a remote call to my RPC like this:
<remotecall funcname="GetChecks">
<param name="inuserid" value="'ims'" />
<param name="inpassword" value="'ims'" />
<param name="inCompanyNo" value="9" />
<param name="inStartCheckNo" value="1" />
<param name="inEndCheckNo" value="99999" />
<param name="inIgnoreCleared" value="true" />
</remotecall>
Based on this, am I wrong in thinking I can create
a dataset and in my remote call of my SOAP, I just
set the dataobject of the remote call to that data
set?
2. The response I get back from my call, gives me back
a SOAP Response that looks something like this:
<GetChecksResponose>
<outSuccess>Yes</outSuccess>
<outMsgText></outMsgText>
<outTmpGlCheck>
<outTmpGlCheckRow>
<COMPANY-NO>9</COMPANY-NO>
<CHECKNO>1</CHECKNO>
<CHECKDATE>2007-03-22</CHECKDATE>
<AMOUNT>100.00</AMOUNT>
</outTmpGlCheckRow>
<outTmpGlCheckRow>
<COMPANY-NO>9</COMPANY-NO>
<CHECKNO>1</CHECKNO>
<CHECKDATE>2007-03-22</CHECKDATE>
<AMOUNT>100.00</AMOUNT>
</outTmpGlCheckRow>
<outTmpGlCheckRow>
<COMPANY-NO>9</COMPANY-NO>
<CHECKNO>1</CHECKNO>
<CHECKDATE>2007-03-22</CHECKDATE>
<AMOUNT>100.00</AMOUNT>
</outTmpGlCheckRow>
</outTmpGlCheck>
</GetCheckResponse>
Does my data set now point directly to the
GetCheckResponse root node? Or does it
point one level below?
3. In anycase, I'm thinking I can use
datapath="datasetname:/outTmpGlCheck/*"
to base the grid on, is that correct? The
samples I saw in the grid assume the data is
an attribut of each child node firstname="xyz"
lastname="123" and use "@firstname", "@lastname", etc.
but those are attributes. Can I use "COMPANY-NO",
"CHECKNO", etc. in my case as they are child
nodes of the XML, not attributes? Or is there
a different syntax to get to the value of the
child node off the root I'm pointing at?
4. My parameters coming back in the XML are
either single named values, or a set of
child nodes off a root. Is there a way I
can easily set a dataset to point directly
to the root node of the set of child nodes?
(outTmpGlCheck in the above example)
That in J/S I'd do as something like:
var checks = responseNode.getElementByID("outTmpGlCheck").childNode[0];
And then just base by grid off of checks as a root node
instead.
6. Just out of curiosity - I don't see anything in the
current SOAP class that defines the SOAP Action. Was
that just left out? I don't think the action is really
used in SOAP these days so I don't believe it means
anything to our app, but just curious.
5. When I do my SOAP for a reason that I wish weren't the
case, I need to make 3 calls always instead of one.
Two different SOAP ports are required because of it.
So my first question is when it access the WSDL
(which is not too small for an ERP system) is there
a way to cache that between the two different <SOAP>
definitions? Alternately maybe there's a better
way to define a single instance of <SOAP> with multiple
ports and the associated <REMOTECALL>'s in each port?
6. Here's the most fun of all. In essence my SOAP
requires 3 calls every time, which involves SOAP
headers. Everytime I must:
call CreatePO_myportObj (this is in a system wide port called "FC")
call GetChecks (this is in a port called myportObj)
call Release_myportObj (this is also in the port called myportObj)
GetChecks is the real function I'm calling with the set
of parameters, and it's the one that returns the XML stated
above. But the issue is CreatePO_myportObj sends no request
SOAP header, but gives me back a response SOAP header
that looks like:
<SOAPHeader>
<UUID><myportID>192.168.1.5:45678:FC:FCAppServer</myportID></UUID>
</SOAPHeader>
That response header then needs to become the request header
of the second and third SOAP calls. I see in the SOAP
class that I can define SOAP responseheader and requestheader.
I'm a bit confused about the responseheader - do I just
set that to anything and then after the remotecall is
invoked() I get a value back? If so in the
second and third <SOAP> definition can I do something
like:
<SOAP name="FCObj"
wsdl="http://myserver/mywsdl.xml"
responseheader="">
</SOAP>
<SOAP name="myportObj"
wsdl="http://myserver/mywsdl.xml"
requestheader="${canvas.FCObj.responseheader}">
</SOAP>
Is that ${} syntax the correct way to get the value
from the other definition after the remote call inside
FCObj returned the response header?
7. Real simple question - I run OL4 and swf8
and my program with code similar to all of the
above, and it appears at least. Just my SOAP
isn't getting much of anywhere. But I run
the same OL4 compiling for DHTML, I get no
compile errors but the screen never gets past
the OL splash. Is there something wrong with
the DHTML implementation of SOAP??
Apologies if these are a bit basic for Laszlo
old timers, but I'm just starting out prototyping.
Any and all help is greatly appreciated. TIA
=====================================================================
Geoff Crawford Phone: (973) 361 - 4224
Innov8 Computer Solutions, LLC FAX: (973) 537 - 6946
711 Route 10 East, Suite 204 Email: [EMAIL PROTECTED]
Randolph NJ 07869 Web: http://www.innov8cs.com
Progress Blog: http://blogs.ittoolbox.com/database/progress/
Take a Step Up to StepUp Accounting