Tìm và sử dụng thông tin
Bây giờ tất cả các thông tin có trong dịch vụ, ít nhất về mặt lý thuyết, Gene cần phải xem xét quá trình để tìm kiếm thông tin một lần nữa.
Các việc tìm kiếm của UDDI hoạt động như thế nào: tìm kiếm một doanh nghiệp
Việc tìm kiếm trong UDDI gồm hai bước. Đầu tiên, bạn tìm khóa của đối tượng mà bạn
muốn và sau đó bạn lấy thông tin về đối tượng đó. Cuối cùng, để cho Gene tìm một
doanh nghiệp, Gene cần tạo một yêu cầu find_business, như
trong Liệt kê 16.
Liệt kê 16. Tìm một doanh nghiệp theo thể loại
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
<categoryBag>
<keyedReference
tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2"
keyName="optional" keyValue="511110" />
</categoryBag>
</find_business>
|
Yêu cầu này sẽ tìm tất cả các doanh nghiệp khớp với các thể loại được tham chiếu
trong categoryBag. Các việc tìm kiếm về giá trị categoryBag được xử lý như một việc tìm kiếm ""VÀ" (AND). Nói
cách khác, mục bất kỳ trùng khớp ít nhất là một trong các thể loại phải khớp. Bạn
cũng có thể xác định một tìm kiếm identifierBag theo cách
này. Tuy nhiên, Gene không thực sự quan tâm đến tìm kiếm theo thể loại. Vào lúc này,
Gene chỉ muốn xem có hay không có doanh nghiệp trong đăng ký, do đó để thay thế Gene
thích tìm kiếm theo tên hơn, như trong Liệt kê 17.
Liệt kê 17. Tìm một doanh nghiệp theo tên
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
<name>daily</name>
</find_business>
|
Lưu ý rằng một tìm kiếm theo tên được xử lý như thể tên mà bạn đang tìm kiếm tiếp sau
là một ký tự đại diện. Nói cách khác, việc tìm kiếm ở đây là giống như thực hiện một
tìm kiếm với "daily*", do đó cả Daily Moon và
Daily Star và bất kỳ doanh nghiệp khác nào bắt đầu với từ "daily" sẽ hiển
thị. Những tìm kiếm này cũng phân biệt chữ hoa, chữ thường.
find_business yêu cầu trả về một businessList. Xem Liệt kê 18.
Liệt kê 18. Một tìm kiếm trả về các doanh nghiệp
<businessList generic="2.0" operator="uddi.sourceOperator"
truncated="true" xmlns="urn:uddi-org:api_v2">
<businessInfos>
<businessInfo
businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691" >
<name>The Daily Moon</name>
<serviceInfos>
<serviceInfo serviceKey=
"064B4170-D5F5-11DA-8170-A74C17FA61A7">
<name>ClassifiedService</name>
</serviceInfo>
</serviceInfos>
</businessInfo>
<businessInfo>
...
</businessInfo>
</businessInfos>
</businessList>
|
businessList bao gồm một phần tử businessInfo cho mỗi businessEntity thỏa mãn
tìm kiếm đó. Mỗi một trong số các phần tử serviceInfo đó
có một businessKey cho businessEntity thực tế. businessList cũng bao
gồm một phiên bản viết tắt của các thông tin sẽ được liệt kê trong businessEntity, để bạn có thể có được một ý tưởng về liệu đây
có phải là một doanh nghiệp mà bạn đang tìm kiếm không.
Một khi bạn có businessKey, thích hợp, bạn cần phải có
thêm thông tin về businessEntity này.
Để có thêm thông tin về một businessEntity cụ thể dựa trên
businessKey, bạn cần phải thực hiện một yêu cầu get_businessDetail. Xem Liệt kê 19.
Liệt kê 19. Nhận thông tin về các doanh nghiệp
<get_businessDetail generic="2.0" xmlns="urn:uddi-org:api_v2" >
<businessKey>1A3DB880-D5F4-11DA-B880-F94D3591C691
</businessKey>
</get_businessDetail>
|
Bạn có thể liệt kê càng nhiều businessKeys trong một yêu
cầu get_businessDetail như bạn muốn. Mỗi một businessKeys
sẽ có phần tử businessDetail riêng của mình trong các kết
quả. Xem Liệt kê 20.
Liệt kê 20. Các chi tiết về doanh nghiệp được trả về
<businessDetail generic="2.0" operator="uddi.sourceOperator"
truncated="false" xmlns="urn:uddi-org:api_v2">
<businessEntity
businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
<name>The Daily Moon</name>
<name lang="fr-ca">La Lune Quotidienne</name>
<contacts>
...
<keyedReference
tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2"
keyName="optional" keyValue="511110" />
</categoryBag>
</businessEntity>
</businessDetail>
|
Mỗi phần tử businessDetail gồm toàn bộ businessEntity của doanh nghiệp có liên quan.
Thay đổi cách tìm kiếm hoạt động
Trong lúc tìm kiếm này hoạt động, có những lúc bạn muốn thay đổi hành vi của tìm kiếm
đó. Ví dụ, có lẽ bạn muốn tìm kiếm một sự trùng khớp chính xác hơn là một sự trùng
khớp của ký tự đại diện hoặc bạn muốn tìm kiếm theo chữ hoa hay chữ thường. Bạn có
thể thay đổi hành vi của việc tìm kiếm bằng cách sử dụng findQualifiers. Xem Liệt kê 21.
Liệt kê 21. Sử dụng
findQualifiers
<find_business generic="2.0" xmlns="urn:uddi-org:api_v2" >
<findQualifiers>
<findQualifier>sortByNameAsc</findQualifier>
<findQualifiers>
<name>daily</name>
</find_business>
|
Trong trường hợp này, việc tìm kiếm sẽ tiến hành như bình thường, nhưng kết quả sẽ
được trả về được sắp xếp theo tên. Bạn có thể thêm nhiều phần tử findQualifier như bạn muốn. Trong số các phần tử có sẵn để sử dụng là
exactNameMatch, caseSensitiveMatch,
sortByNameDesc, sortByDateAsc và sortByDateDesc,
hay LikeKeys (báo cho đăng ký biết để xử lý các khóa trong
một categoryBag hoặc identifierBag như là một điều kiện "HOẶC" (OR) nếu chúng chia sẻ cùng một
tModelKey) và combineCategoryBags (xử lý tất cả các categoryBags của một businessEntity, liệu chúng
có thuộc về businessEntity, businessService hoặc bindingTemplate, không,
nếu như chúng thuộc về businessService đó).
Gene cũng muốn đảm bảo rằng những người dùng có thể tìm bất kỳ dịch vụ nào dựa trên
một giao diện cụ thể. Ví dụ, truy vấn này sẽ định vị bindingTemplates mà bạn sử dụng giao diện ClassifiedService. Xem Liệt kê 22.
Liệt kê 22. Tìm một
bindingTemplate
<find_binding generic="2.0" xmlns="urn:uddi-org:api_v2" >
<tModelBag>
<tModelKey>66999A50-D5F4-11DA-9A50-FA44D6AD622A</tModelKey>
</tModelBag>
</find_binding>
|
Truy vấn này trả về một serviceList. Xem Liệt kê 23.
Liệt kê 23. Các dịch vụ được trả về
<serviceList generic="2.0" operator="uddi.sourceOperator"
xmlns="urn:uddi-org:api_v2">
<serviceInfos>
<serviceInfo
serviceKey="064B4170-D5F5-11DA-8170-A74C17FA61A7"
businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
<name>ClassifiedService</name>
</serviceInfo>
</serviceInfos>
</serviceList>
|
Như trong trường hợp với find_business, sau đó bạn đã phải
quay trở lại đó và yêu cầu thông tin về businessEntity,
rồi bạn sẽ xác định thông tin yêu cầu trên các máy chủ dựa trên serviceKey. Xem Liệt kê 24.
Liệt kê 24. Nhận các chi tiết dịch vụ
<get_serviceDetail generic="2.0" xmlns="urn:uddi-org:api_v2" >
<serviceKey>064B4170-D5F5-11DA-8170-A74C17FA61A7
</serviceKey>
</get_serviceDetail>
|
Truy vấn này trả về một serviceDetail cho mỗi serviceKey cụ thể. Xem Liệt kê 25.
Liệt kê 25. Các chi tiết dịch vụ được trả về
<serviceDetail generic="2.0" operator="uddi.sourceOperator"
xmlns="urn:uddi-org:api_v2">
<businessService
serviceKey="064B4170-D5F5-11DA-8170-A74C17FA61A7"
businessKey="1A3DB880-D5F4-11DA-B880-F94D3591C691">
<name>ClassifiedService</name>
<bindingTemplates>
<bindingTemplate
bindingKey="904BD800-D53A-11DA-B055-850A1DA99D79">
<accessPoint>
http://www.daily-moon.com:8080/axis2/services/ClassifiedService
</accessPoint>
...
<keyedReference
tModelKey="C0B9FE13-179F-413D-8A5B-5004DB8E5BB2"
keyName="ntis-gov:naics:1997" keyValue="511110" />
</categoryBag>
</businessService>
<businessService>
...
</businessService>
</serviceDetail>
|
Bây giờ Gene biết những gì mình muốn làm, anh ta sẵn sàng bắt đầu viết mã.