[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.technology.ohf] Re: XCA on the bridge
|
Hey Jesse,
Ummm, I think "highly experimental" is probably the way to put it right
now. Basically it was never tested, although I think Sage might've tried
to use it @ HIMSS. So much of our testing is dependent on IBM
infrastructure systems and the IBM XCA gateways didn't end up happening,
so as a result we never got a chance to fully test out our XCA
implementation. We also never had a chance to test it @ Connectathon
either.
Let me explain XCA in OHF first and that'll answer a couple of your
questions:
1. Straight from the XDS.b Consumer: It *SHOULD* work without a
problem. There is the requirement of the "copy over" of the homeId /
homeCommunityId into queries and retrieves, which is up to the
implementor to handle. The general rule should be - if you see a
homeCommunityId come back from a query response, all further query
responses relating to that document ID should contain it. Also, any
retrieves on that document ID should contain it.
The XDS.b Consumer's retrieveDocumentSet method contains an algorithm to
determine "where" to send each retrieve request and aggregate the
responses. The way the algorithm works is.. in the first condition, if
a RetrieveDocumentRequest contains a homeCommunityId, it *ALWAYS* will
get sent to the initiating gateway set in the XDS Consumer -
setInitiatingGateway(java.net.URI). The base assumption is you only
have 1 initiating gateway per affinity domain and I think it's safe to
assume that.
2. The Bridge, at least in the fully untested world, implements this
paradigm directly. In the Retrieve Document Set Bridge method, the
Bridge calls Consumer.setInitiatingGatewayURI(java.net.URI) from the
RHIO's XCA Gateway. The key again (as with the XDS Consumer) is that
when you get a query response from the Bridge, if a homeCommunityId
value is present in the XDSDocType, you must copy it over the XDSDocType
[] sent in the RetrieveDocumentSetRequestType.
Now, specifically for your questions:
> 1. If I do a provide and register, then it will go to the repository
> named "XDS-B-Facade". What is this facade thing btw?
That is correct. P&R goes to the repository id set for the RHIO. Your
discovery that it checks all repository unique ids is actually new as-of
after Connectathon. Previously you had to define each repository in the
list of repositories for a RHIO but that was cumbersome. The XDS.b
Repository Facade was/is a simple Axis2 Web service I wrote early last
fall to semantically check our XDS.b Consumer/Source implementation
while the IBM XDS.b Repository was still under development. It just
blindly accepted and acknowledged the request with a list :)
> 2. If I do a document query I can pass a boolean to use XCA or not. If
> I pass false, then the query will go to the registry named
> "XDS-B-Facade". If I pass true, then the query will go to the gateway
> named "GATEWAY_IBM".
This is true. If "useXCA" is true, then the XDS Consumer uses the
<storedQueryUrl> from the RHIO's <xcaGateway>. Otherwise it uses
<storedQueryUrl> from the RHIO's <registry>.
> The part I'm confused about is when I want to
> do the "retrieve document set" operation. There is no boolean parameter
> to say whether I want to use the repository in my rhio to do the
> retrieve or whether I want to use the gateway.
See 1 and 2 from me above. This is because of the built-in controls in
the XDS Consumer. We had some go-arounds with IHE regarding the
semantics of splitting requests up and having a retrieve document set
request with mixed destinations (different repository unique ids,
different home community ids, etc). Based on RHIO paradigms and
assumptions set out by the author of XCA (from IBM), we decided that
the "routing policy" that the XDS Consumer uses is that the home
community id takes precedence...and if it is set in the request, then
the request, regardless of repositoryUniqueId, gets routed through the
initiating gateway.
For the Bridge, this very explicitly means... if you set homeCommunityId
in one of the XDSDocType items sent to retrieveDocumentSet, then that
specific request will get routed to the <retrieveDocumentSet> URL set in
the RHIO's <xcaGateway>. If there is no <xcaGateway> set for the RHIO,
it will throw an error (or it'll give a partial success / failure). If
homeCommunityId is not set, it'll iterate through the list of all XDS.b
repositories in rhioConfig.xml in an attempt to resolve the
repositoryUniqueId => URL mapping.
> So, if I had to guess, I would think that if the document query returned
> a homeCommunityId and I faithfully passed that homeCommunityId along to
> the "retrieve document set" command that the bridge would see that field
> is not blank AND that I have a gateway specified in my rhio's
> configuration. Therefore the bridge would know to issue the "retrieve
> document set" to the gateway instead of to one of my repositories. Is
> that true or am I way off?
Yep! That's exactly how it works. If you read XCA, you actually see
that it is part of XDS - it is embedded and, essentially, XDS support
implies XCA support. Much to our chagrin, to fully internalize support
for XCA (and obfuscate it from the implementor) would require a greater
level of intelligence on the Consumer's part and a level of statefulness
that we do not want to introduce in the Bridge. As a result, it's
dependent on a "copy over" paradigm where - if you see something (in
this case, the homeCommunityId) - you must copy it over into further
requests regarding that document.
Hope this helps! The reason this never got documented all that well /
acknowledged / tested really centers on the fact that IBM never built
their XCA gateway. We'll be at EU Connectathon in a couple weeks,
hopefully I'll get a chance to test XCA support further then.
Thanks,
-Matt
Jesse Pangburn wrote:
Hi,
I'm wondering how XCA works with the bridge. Is it highly experimental
at this stage or you guys think it basically works? I've checked the
wiki and found nothing on how to use it, I've checked the javadoc and
gotten some hints from the API, and I've checked the rhioConfig.xml and
gotten some more hints.
Here's what I believe to be true with respect to the following rhio
definition:
<rhio>
<name>XDS.b RHIO</name>
<publicHealthcareAffinityDomain>false</publicHealthcareAffinityDomain>
<config>
<registryId>XDS-B-Facade</registryId>
<repositoryId>XDS-B-Facade</repositoryId>
<xcaGatewayId>GATEWAY_IBM</xcaGatewayId>
<pixId>lswin10</pixId>
<auditId>lswin10</auditId>
</config>
</rhio>
1. If I do a provide and register, then it will go to the repository
named "XDS-B-Facade". What is this facade thing btw?
2. If I do a document query I can pass a boolean to use XCA or not. If
I pass false, then the query will go to the registry named
"XDS-B-Facade". If I pass true, then the query will go to the gateway
named "GATEWAY_IBM".
Those are the items I am reasonably sure of given what I've seen,
correct me if I'm wrong. The part I'm confused about is when I want to
do the "retrieve document set" operation. There is no boolean parameter
to say whether I want to use the repository in my rhio to do the
retrieve or whether I want to use the gateway. One thing I know about
this from XDS.b is that when I do "retrieve document set", the bridge
uses the "repository unique id" parameter to search the entire
rhioConfig.xml (regardless of if the repository is defined in my rhio or
not) and if it find such a repository with that id, it then issues the
retrieve command to the url specified in that repository configuration.
So, if I had to guess, I would think that if the document query returned
a homeCommunityId and I faithfully passed that homeCommunityId along to
the "retrieve document set" command that the bridge would see that field
is not blank AND that I have a gateway specified in my rhio's
configuration. Therefore the bridge would know to issue the "retrieve
document set" to the gateway instead of to one of my repositories. Is
that true or am I way off?
thanks,
Jesse