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> 元素用来报告错误信息。

 

响应示例

请求示例 中,添加要素、更新要素、删除要素的响应结果分别如下所示:

  1. 添加要素请求,服务器端返回相应的 xml 文本如下:

<?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>

  1. 更新要素请求,服务器端返回的 xml 文本如下:

<?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>

  1. 删除要素请求,服务器端返回的 xml 文本如下:

<?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>