OGSI规范中关于ServiceData部分的内容Word文件下载.docx
- 文档编号:5858071
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:21
- 大小:23.67KB
OGSI规范中关于ServiceData部分的内容Word文件下载.docx
《OGSI规范中关于ServiceData部分的内容Word文件下载.docx》由会员分享,可在线阅读,更多相关《OGSI规范中关于ServiceData部分的内容Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。
尽管在服务的具体实现时可以使用类似于getXXX和setXXX的方法安全明确地访问某个服务数据元素,但在OGSI规范中没有这样的要求,而是为查询(相当于get)、更新(相当于set)和订阅服务数据元素变更通知定义了具有扩展性的操作。
OGSI要求这些操作支持简单的表达式参数,根据服务数据元素的相对于服务实例的名称进行访问。
这种将名称作为参数的操作可以提供与JavaBean和EJB程序员所熟悉的getXXX和setXXX方法几乎一样的功能。
另外,这种OGSI操作还可以被服务的其他接口所扩展,以支持更丰富的查询、更新和订阅语义,例如在某个服务实例中对多个服务数据元素进行复杂的复合查询。
在网格的基本portType中定义了一个名为serviceDataName的数据元素。
这个元素相当于JavaBean中的BeanInfo类。
不同之处在于OGSI中以XML(WSDL)文档的格式提供这个元素的相关信息,而在BeanInfo模型中则是使用一个可序列化的类来实现。
2、带有服务数据的portType的扩展
服务数据定义了一个新的portType子元素serviceData,用于定义该portType相关的服务数据元素,或者说SDE。
这些服务数据元素的定义同时也作为服务数据声明被引用(SDD)。
用static标记的服务数据元素,可以在portType中通过staticServiceDataValues元素来指定其初始值。
所有服务数据元素的值,无论是在portType中静态声明的还是在Web服务实例的运行期间赋予的值,都被称作服务数据元素值或者SDE值。
在使用gwsdl:
portType时,其中也允许出现来自其他命名空间的元素。
<
gwsdl:
portTypename="
NCName"
>
wsdl:
documentation..../>
operationname="
…
sd:
serviceDataname="
…/>
staticServiceDataValues>
someelement>
/sd:
/gwsdl:
portType>
例如,下面的portType声明了两个服务数据元素,全名分别为“tns:
sd1”和“tns:
sd2”。
任何实现该portType的服务,都必须在其服务状态中包含这两个服务数据元素。
definitionsxmlns:
tns=”xxx”targetNamespace=”xxx”>
exampleSDUse"
operationname=…>
sd1"
type=”xsd:
String”
mutability=”static”/>
sd2"
type=”tns:
SomeComplexType”/>
tns:
sdl>
initValue<
/tns:
sd1>
/wsdl:
definitions>
2.1服务数据的声明结构
声明服务数据的元素中所需的字段和XMLSchema中的xsd:
element中使用的字段非常相似,因此对后者稍作修改使其可用于服务数据元素的声明。
另外还明确规定了每个服务数据元素只能包含下述属性:
xsd:
element中的annotation,name,type,minOccurs,maxOccurs,nillable;
OGSI扩展的mutability和modifiable,以及内容模型中的开放属性。
targetNamespace=
“http:
//www.gridforum.org/namespaces/2003/serviceData”
xmlns:
sd=
//www.gridforum.org/namespaces/2003/03/serviceData”
complexTypename=“ClosedServiceDataElementType”mixed=”true”>
complexContent>
restrictionbase=”xsd:
element”>
sequence>
elementref="
annotation"
minOccurs="
0"
/>
/xsd:
attributename="
name"
type="
type"
QName"
/>
attributeGroupref="
occurs"
--minOccurs,maxOccurs-->
nillable"
boolean"
use="
optional"
default="
false"
restiction>
complexType>
complexTypename=”ServiceDataType”mixed=”true”>
extensionbase=”sd:
ClosedServiceDataElementType”>
anynamespace="
##other"
maxOccurs="
unbounded"
mutability"
default=”extendable”>
simpleType>
restrictionbase="
string"
enumerationvalue="
static"
constant"
extendable"
mutable"
restriction>
attribute>
modifiable"
boolean”
default=”false”>
anyAttributenamespace="
processContents="
lax"
extension>
elementname=”serviceData”type=”sd:
ServiceDataType”/>
complexTypename=”ServiceDataValuesType”>
##any"
maxOccurs="
elementname=”serviceDataValues”
type=”sd:
ServiceDataValuesType”/>
elementname=”staticServiceDataValues”
各元素详解如下:
●maxOccurs=(非负整数|unbounded):
默认值为1
⏹该值表示在服务实例的服务数据值或者portType的静态服务数据值中该服务数据元素值的最大数目。
●minOccurs=非负整数:
⏹该值表示在服务实例的服务数据值或者portType的静态服务数据值中该服务数据元素值的最小数目。
⏹如果该值为0,表示该服务数据元素可选
●name=NCName和{targetnamespace}
⏹在wsdl:
definitions元素所定义的命名空间中,服务数据元素的名称必须在所有sd:
serviceData和xsd:
element元素中唯一。
⏹服务数据元素的名称和wsdl:
definitions元素定义的目标命名空间的组合得到该服务数据元素的QName,作为该服务数据元素的专用标识。
●nillable=布尔值:
默认为false
⏹表示该服务数据元素是否可以有空值,也就是属性xsi:
nil的值为true的值。
◆例如下面的服务数据声明:
serviceDataElementname=”foo”type=”xsd:
string”
nillable=true”/>
◆可以有如下的合法SDE值:
fooxsi:
nil=”true”/>
●type=QName
⏹定义服务数据元素值的XMLSchema类型
●modifiable=布尔值:
⏹若为true,则允许服务的请求者在符合(minOccurs,maxOccurs)规定的值的数目和mutability属性的情况下,通过setServiceData操作直接更新改服务数据的值
⏹若为false,则该服务数据元素的值对于请求者来说是只读的。
但是它的值可以因为服务接口的其他操作的结果而改变。
●mutability=“static”|”constant”|”extendable”|”mutable”:
默认为extendable
⏹表示该服务数据元素的值是否可以改变及具体的改变方式。
●{非schema命名空间中的任意属性}
⏹允许将服务数据的属性声明为其他开放内容
●内容
⏹annotation
◆允许注释作为服务数据声明的子元素出现。
⏹开放的内容元素模型,任意XMLSchema之外的其他命名的元素都可以作为服务数据元素的子元素。
开放的内容元素模型,mutability和modifiable属性的定义是对xsd:
element的扩展。
另外,这样定义服务数据,可以使portType中的操作以符合服务数据声明的值作为参数。
2.2GridServiceportType中使用服务数据的例子
下面通过一个GridServiceportType中的例子来说明服务数据的使用。
在这个例子中服务数据的声明(非标准格式)如下:
definitions…
portTypename=”GridService”…>
operationname=…>
serviceDataname=”interface”type=”xsd:
QName”
minOccurs=”1”maxOccurs=”unbounded”
mutability=”constant”/>
serviceDataname=”serviceDataName”type=”xsd:
minOccurs=”0”maxOccurs=”unbounded”
mutability=”mutable”nillable=”false”/>
serviceDataname=”factoryHandle”
type=”ogsi:
HandleType”
minOccurs=”1”maxOccurs=”1”
mutability=”constant”nillable=”true”/>
serviceDataname=”gridServiceHandle”
mutability=”extendable”/>
serviceDataname=”gridServiceReference”
ReferenceType”
mutability=”mutable”/>
serviceDataname=”findServiceDataExtensibility”
OperationExtensibilityType”
serviceDataname=”terminationTime”type=”ogsi:
terminationTime”
serviceDataname=”setServiceDataExtensibility”
minOccurs=”2”maxOccurs=”unbounded”
mutability=”static”/>
下面是GridService中一组服务数据元素值的例子。
crm=”http:
//gridforum.org/namespaces/2002/11/crm”
tns=”
xnlns=”
serviceDataValues>
ogsi:
interface>
crm:
GenericOSPT<
/ogsi:
GridService<
serviceDataName>
interface
serviceDataName
factoryHandle
gridServiceHandle
gridServiceReference
findServiceDataExtensibility
terminationTime
setServiceDataExtensibility
factoryHandle>
someURI<
gridServiceHandle>
someOtherURI<
gridServiceReference>
…<
inputElement=”ogsi:
queryByServiceDataNames”/>
terminationTimeafter=”2002-11-01T11:
22:
33”
before=”2002-12-09T11:
33”/>
setByServiceDataNames”/>
deleteByServiceDataNames”/>
2.3SDE值的可变性
服务数据元素声明中的可变性(mutability)这一属性表示该服务数据元素的值在其生命周期之中的变化情况。
●mutability=”static”:
表示该SDE在WSDL声明中(staticServiceDataValue)赋值且在portType的所有实例中都有效。
一个”static”的SDE相当于编程语言中的类的静态成员变量。
●mutability=”constant”:
表示该SDE在网格服务实例创建时赋值,且一旦赋值则在网格服务实例的整个生命周期中都不能更改。
●mutability=”extendable”:
表示已经在SDE值中的元素,在网格服务实例的生命周期剩下的部分中将一直作为该SDE值的一部分。
新的元素可以加入到SDE值中,但是一旦加入,就不能删除。
●mutability=”mutable”:
表示该SDE值中的任意元素都可以在任意时间删除,而其他元素同样也可以在任意时间加入。
这里所定义的功能不同于XMLSchema的元素定义中的”fixed”和”default”属性。
尽管XMLSchema中的fixed属性可以表示一个OGSI中的static值,但是在描述上述“可附加”或者“可变”等属性时就需要另外使用单独的可变性属性变量。
当mutability=”constant”时表示一旦赋值就不会再更改,尽管在服务描述中并不对其赋值,但是要求在运行期间得到初始化。
3服务数据值
每个服务实例都有一个相关的服务数据元素集合,其中有些服务数据元素在定义该服务接口的各个portType中定义,而另外一些服务数据元素则可能是在运行期间动态的添加进来的。
我们将与某个服务实例相关联的服务数据元素的集合称为该服务实例的服务数据集。
一个服务数据集也可以指在portType的继承层次关系中各个portType定义的所有服务数据元素的集合。
针对每个服务数据元素都必须有一个逻辑上的XML文件,其根元素为serviceDataValues,包含有这个服务数据元素的值。
前面已经给出了一个serviceDataValues元素的例子。
服务在实现的时候可以自由的选择如何存储它的SDE值。
例如可以不用XML文件而是使用实例变量来存储SDE值,需要时再将实例变量转换成XML文件或其他编码格式。
处理服务数据元素的各个操作的wsdl:
binding中规定了服务请求者和服务提供者之间数据的编码格式。
例如,某个binding可能会规定服务数据元素值以序列化的Java对象作为其编码格式。
3.1在PortType中定义SDE值的初始值
在portType中可以为其服务数据集中任一可变性(mutability)为”static”的服务数据元素深声明初始值,无论该服务数据元素是在当前portType中定义的,还是在当前portType所继承的某个portType中定义的。
初始值也可以在portType的继承层次中在多个portType中多次定义,只要服务数据元素的初始值总数没有超过该服
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OGSI 规范 关于 ServiceData 部分 内容