Transaction 响应 |
在响应事务请求时,网络要素服务会生成一个 XML 文档指明事务的最终状态。另外,如果事务请求包括 <Insert> 操作,则网络要素服务必须报告所有新创建的要素标识符。如果事务执行失败,网络要素服务同样也会在响应中声明。
用 XML 编码的 WFS 事务响应由以下 XML 模式判断定义:
<xsd:element name="WFS_TransactionResponse"
type="wfs:WFS_TransactionResponseType"/>
<xsd:complexType name="WFS_TransactionResponseType">
<xsd:sequence>
<xsd:element name="InsertResult"
type="wfs:InsertResultType"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="TransactionResult"
type="wfs:TransactionResultType"/>
</xsd:sequence>
<xsd:attribute name="version"
type="xsd:string" use="required" fixed="1.0.0"/>
</xsd:complexType>
<xsd:complexType name="TransactionResultType">
<xsd:sequence>
<xsd:element name="Status" type="wfs:StatusType"/>
<xsd:element name="Locator" type="xsd:string" minOccurs="0"/>
<xsd:element name="Message" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="handle" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="InsertResultType">
<xsd:sequence>
<xsd:element ref="ogc:FeatureId" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="handle" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="StatusType">
<xsd:choice>
<xsd:element ref="wfs:SUCCESS"/>
<xsd:element ref="wfs:FAILED"/>
<xsd:element ref="wfs:PARTIAL"/>
</xsd:choice>
</xsd:complexType>
<xsd:element name="SUCCESS" type="wfs:EmptyType"/>
<xsd:element name="FAILED" type="wfs:EmptyType"/>
<xsd:element name="PARTIAL" type="wfs:EmptyType"/>
<WFS_TransactionResponse> 元素包含零个或者多个 <InsertResult> 元素以及一个 <TransactionResult> 元素。
<InsertResult> 元素包含一个或者多个新创建的要素实例的要素标识符。一个<InsertResult> 要素报告请求中的一个 <Insert> 元素的结果,<Insert> 结果的报告顺序是依照 <Transaction> 元素中的操作顺序。另外,如果 handle 属性被指定,它们可以相互关联。
事务请求的所有结果使用 <TransactionResult> 元素指定。<TransactionResult> 元素必须包含 <Status> 元素,可以包含 <Locator> 元素和 <Message> 元素。
<Status> 元素用来表示事务完成的状态,事务有以下结束状态:
响应状态 | 描述 |
SUCCESS | 事务完全完成。 |
FAILED | 当事务处理请求中的一个或多个元素时发生异常。 |
PARTIAL | 事务部分成功,数据可能处于不一致性状态。当系统不支持原子事务时,很有可能输出部分成功的结果。 |
当事务请求失败,<Locator> 元素用来指出哪部分事务失败了。如果失败的那个元素使用了 handle 属性标记,网络要素服务报告它的值用以定位失败,否则,要素服务会从事务请求的开始定位失败,使用行号或其它方便的机制。
<Message> 元素用来报告错误信息。
请求示例 中,添加要素、更新要素、删除要素的响应结果分别如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs null">
<wfs:InsertResult>
<ogc:FeatureId fid="World.Capitals.164" />
</wfs:InsertResult>
<wfs:TransactionResult>
<wfs:Status>
<wfs:SUCCESS />
</wfs:Status>
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>
<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs null">
<wfs:TransactionResult>
<wfs:Status>
<wfs:SUCCESS />
</wfs:Status>
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>
<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0"
xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/wfs null">
<wfs:TransactionResult>
<wfs:Status>
<wfs:SUCCESS />
</wfs:Status>
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>