BusinessService和BindingTemplate的查询
虽然在Inquiry类中定义了findService方法,但是一般情况下可以根据查询到的BusinessInfo对象来进一步查询此BusinessEntity下属的BusinessService。注意到在BusinessInfo类中有一个方法getServiceInfos,它可以帮助我们得到此商业实体所提供的商业服务。
|
从BusinessInfo对象可以获取此商业实体下所有的ServiceInfo对象的集合。ServiceInfo对象定义了商业服务的基本信息,比较重要的有Name和ServiceKey。
类似地,用Inquiry类提供的getServiceDetail方法可以得到商业服务的详细信息,即BusinessService类。它包括商业服务的多种有用信息,如:Description,Category等。
进一步,根据BusinessService类定义的getBindingTemplates方法,又可以取得此服务下的所有绑定模板信息。
|
在BindingTemplate对象中定义了绑定模板的一些重要属性,如:AccessPoint等。
再进一步,可以从BindingTemplate中提供的方法getTModelInstanceDetails中获取tModel Instance的详细信息,即InstanceDetails对象。包括有OverviewDoc。
|
从OverviewDoc可以得到OverviewURL,这就是我们在发布WebService时的WSDL的URL地址。
下面,笔者也给出一段代码演示了这个查询过程:
void echoBusiness2(String parm){
try {
file://查询BusinessInfo
FindBusiness fb = new FindBusiness();
fb.setName(new Name(parm));
Vector vBusinessInfo =finder.findBusiness(fb).getBusinessInfos().getBusinessInfoVector();
for(int i=0;i BusinessInfo bInfo = (BusinessInfo)vBusinessInfo.elementAt(i);
log(bInfo.getName().getValue()+" ["+bInfo.getBusinessKey()+"]");
file://查询ServiceInfo
Vector vServiceInfo = bInfo.getServiceInfos().getServiceInfoVector();
for(int j=0;j ServiceInfo sInfo = (ServiceInfo)vServiceInfo.elementAt(j);
log(sInfo.getName().getValue()+"["+sInfo.getServiceKey()+"]");
file://查询BusinessService
GetServiceDetail gsd = new GetServiceDetail();
gsd.addServiceKey(sInfo.getServiceKey());
Vector vBusinessService = finder.getServiceDetail(gsd).getBusinessServiceVector();
for(int k=0;k BusinessService bService = (BusinessService)vBusinessService.elementAt(k);
file://查询BindingTemplate
Vector vBindingTemplate =
bService.getBindingTemplates().getBindingTemplateVector();
for(int p=0;p BindingTemplate bTemplate =
(BindingTemplate)vBindingTemplate.elementAt(p);
log(bTemplate.getAccessPoint().getValue());
file://查询TModelInstanceInfo
Vector vTModelInstanceInfo =
bTemplate.getTModelInstanceDetails().getTModelInstanceInfoVector();
for(int q=0;q TModelInstanceInfo tmInstanceInfo =
(TModelInstanceInfo)vTModelInstanceInfo.elementAt(q);
file://直接显示了InstanceDetails的OverviewDoc的信息
log(tmInstanceInfo.getInstanceDetails().getOverviewDoc().getOverviewURL().getValue());
}
}
}
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
|
这段代码比较长,嵌套很多,但是理清了头绪相信读者还是能够看明白的。无非就是一层层查询:从BusinessInfo -> ServiceInfo -> BusinessService -> BindingTemplate -> TModelInstanceInfo -> InstanceDetail,最后显示它的OverviewDoc的URL值。
查询TModel
TModel的查询有两条路,一条是上面的从BusinessInfo开始的层级查询,最终得到TModel的InstaceDetail对象。另一条路则也是从Inquiry开始的,用find方法查询全部的tModel数据模型。
先从Inquiry对象的findTModel方法查询全部合乎条件的tModel对象,同样要求有输入参数FindTModel对象定义查询条件。
然后,同样用getTModelDetail方法取得tModel对象的详细信息,即TModel类。它包括了tModel的主要属性,如Category,Identifier,Operator,OverviewDoc等等。
下面这段代码演示了这种查询过程:
void echoTModel(String param){
try {
FindTModel ftm = new FindTModel();
ftm.setName(new Name(param));
Vector vTModelInfo = finder.findTModel(ftm).getTModelInfos().getTModelInfoVector();
for(int j=0;j TModelInfo tInfo = (TModelInfo)vTModelInfo.elementAt(j);
log(tInfo.getName().getValue()+"["+tInfo.getTModelKey()+"]");
GetTModelDetail gtd = new GetTModelDetail();
gtd.addTModelKey(tInfo.getTModelKey());
Vector vTModel = finder.getTModelDetail(gtd).getTModelVector();
for(int i=0;i TModel tModel = (TModel)vTModel.elementAt(i);
log(tModel.getName().getValue()+" "+tModel.getAuthorizedName());
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
} |
 
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |