题注:
发表这篇解决方案,属于非盈利目的。主要是为了让大家了解一种接口技术解决方案文档的编写格式以及让大家评审在我的这个技术解决方案中的不足之处,以便大家指出并加以改进。
转载,下载或与各种形式使用这篇文章,必须注明文章的作者,出处。
其他未尽事宜,以国家法律规定的为准!
作者:南疯
根据前面的兄弟和父子关系的说明,一条记录中补充上传文档的方式就简单了许多。只要施工系统上传了文档,获得最后的文档ID,然后,在施工系统中维护最后的文档ID,再用修改记录的报文上报更新后的业务数据即可。流程:
上传补充的文档 à 获得最后的文档ID à 用最后的文档ID更新业务数据 à 上传修改后的业务数据。
向外协系统请求删除一个文档,只需要向外协系统提交包含有要删除的文档ID即可。
如果需要删除的是文档链当中的某一个文档,则需要向外协请求获得文档链的信息(参见后面的“如何获取文档信息”),然后,从链中找到要删除的文档ID,向外协系统提交。外协系统在删除文档的同时,会自动把链连接起来成为一个完整的链关系,同时,总是返回链的最末尾的文档ID。施工系统获得链末尾的最后文档ID之后,更新业务表中的相应记录,再用修改的报文上报修改后的业务数据(此步骤不要忘记)。
请求删除文档的报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<UserInfo>
<User>ZhangSan</User>
<PassWord>123456</PassWord>
</UserInfo>
<Description>
</Description>
<Records>
<ID>123456</ID>
</Records>
</XmlData>
响应报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<Description>
<Result>成功</Result> <!--如果失败,则返回信息是“失败:(错误信息)”-->
</Description>
<Records>
<Record>
<ID>456789</ID> <!--这个是链当中的最后一个文档ID,如果链已经不存在,返回 -1 -->
</Record>
</Records>
</XmlData>
报文说明:
标签名
|
说明
|
<XmlData>
|
报文数据主体
|
<Description>
|
报文头部信息
|
<Records>
|
记录集合
|
<Record>
|
一行记录
|
<UserInfo>
|
业务认证的用户信息
|
<User>
|
业务用户登录名
|
<PassWord>
|
业务用户验证口令
|
<Result>
|
反馈报文中的保存成功与否信息。
如果文档删除成功,则信息是“成功”
如果文档删除失败,则信息是“失败:(后面是错误的详细信息)”
|
请求报文中<ID>
|
文档的ID。要删除的文档ID
|
反馈报文中<ID>
|
文档的ID。当删除链中的一个文档之后,外协系统自动维护链之间的关系,并返回链末尾最后一个文档的ID
|
施工系统根据文档的ID向外协系统请求获得文档的基本信息。外协系统返回满足结果的文档基本信息。施工系统可以请求一个文档的基本信息,也可以请求多个(最多100个)文档的信息。这个接口不考虑文档链的情况,仅仅是按指定文档ID返回结果。
请求报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<UserInfo>
<User>ZhangSan</User>
<PassWord>123456</PassWord>
</UserInfo>
<Description>
</Description>
<Records>
<Record>
<ID>123456</ID>
</Record>
<Record>
<ID>456789</ID>
</Record>
</Records>
</XmlData>
响应报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<Description>
<Result>成功</Result> <!--如果失败,则返回信息是“失败:(错误信息)”-->
</Description>
<Records>
<Record>
<ID>123456</ID>
<FILE_PRJ_ID>Value1</FILE_PRJ_ID>
<FILE_TYPE>Value2</FILE_TYPE>
<FILE_CREAET_MODE>Value3</FILE_CREAET_MODE>
<FILE_NAME>Value4</FILE_NAME>
<FILE_UNIT>Value5</FILE_UNIT>
<FILE_MAN>Value6</FILE_MAN>
<FILE_CREATE_TIME>Value7</FILE_CREATE_TIME>
<FILE_SIZE>Value8</FILE_SIZE>
<FILE_AUTHOR>Value9</FILE_AUTHOR>
<FILE_TITLE>Value10</FILE_TITLE>
<FILE_BROTHER_ID>Value11</FILE_BROTHER_ID>
<FILE_PARENT_ID>Value12</FILE_PARENT_ID>
</Record>
<Record>
<ID>456789</ID>
<FILE_PRJ_ID>Value1</FILE_PRJ_ID>
<FILE_TYPE>Value2</FILE_TYPE>
<FILE_CREAET_MODE>Value3</FILE_CREAET_MODE>
<FILE_NAME>Value4</FILE_NAME>
<FILE_UNIT>Value5</FILE_UNIT>
<FILE_MAN>Value6</FILE_MAN>
<FILE_CREATE_TIME>Value7</FILE_CREATE_TIME>
<FILE_SIZE>Value8</FILE_SIZE>
<FILE_AUTHOR>Value9</FILE_AUTHOR>
<FILE_TITLE>Value10</FILE_TITLE>
<FILE_BROTHER_ID>Value11</FILE_BROTHER_ID>
<FILE_PARENT_ID>Value12</FILE_PARENT_ID>
</Record>
</Records>
</XmlData>
报文说明:
标签名
|
说明
|
<XmlData>
|
报文数据主体
|
<Description>
|
报文头部信息
|
<Records>
|
记录集合
|
<Record>
|
一行记录
|
<UserInfo>
|
业务认证的用户信息
|
<User>
|
业务用户登录名
|
<PassWord>
|
业务用户验证口令
|
<Result>
|
反馈报文中的保存成功与否信息。
如果文档获得成功,则信息是“成功”
如果文档获得失败,则信息是“失败:(后面是错误的详细信息)”
|
请求报文中<ID>
|
文档的ID。要获取的文档ID
|
反馈报文中<ID>
|
文档的ID。要获取的文档ID
|
<FILE_PRJ_ID>
|
文档所属项目ID
|
<FILE_TYPE>
|
文档类型
|
<FILE_CREAET_MODE>
|
文档创建方式 默认:用户上传
|
<FILE_NAME>
|
文档(文件)名称
|
<FILE_UNIT>
|
创建单位
|
<FILE_MAN>
|
创建人
|
<FILE_CREATE_TIME>
|
创建日期
|
<FILE_SIZE>
|
文档大小
|
<FILE_AUTHOR>
|
文档作者
|
<FILE_TITLE>
|
文档标题
|
<FILE_BROTHER_ID>
|
兄弟节点ID,如果没有兄长,则为 -1
|
<FILE_PARENT_ID>
|
父亲节点ID, 如果没有父亲,则为 -1
|
获得文档所有兄弟信息与获得文档基本信息类似,区别之处在于在获得文档所有兄弟信息的时候,施工系统仅仅需要提交一个最小兄弟的节点,外协系统自动找出该文档的所有“兄长”文档信息返回。
注意,在返回的所有兄弟报文中,最小的兄弟排在记录的最前面,依序排序往上,最后,最大的兄弟排在最后面。
下面的这个报文虽然和前面的“如何获得文档的基本信息”报文一样,但是,施工系统仅仅需要提交一条文档的ID。而且,这个求情所调用的接口和前面的“如何获得文档的基本信息”的所调用的接口是不一样的。
请求报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<UserInfo>
<User>ZhangSan</User>
<PassWord>123456</PassWord>
</UserInfo>
<Description>
</Description>
<Records>
<Record>
<ID>123456</ID>
</Record>
</Records>
</XmlData>
响应报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<Description>
<Result>成功</Result> <!--如果失败,则返回信息是“失败:(错误信息)”-->
</Description>
<Records>
<Record>
<ID>123456</ID>
<FILE_PRJ_ID>Value1</FILE_PRJ_ID>
<FILE_TYPE>Value2</FILE_TYPE>
<FILE_CREAET_MODE>Value3</FILE_CREAET_MODE>
<FILE_NAME>Value4</FILE_NAME>
<FILE_UNIT>Value5</FILE_UNIT>
<FILE_MAN>Value6</FILE_MAN>
<FILE_CREATE_TIME>Value7</FILE_CREATE_TIME>
<FILE_SIZE>Value8</FILE_SIZE>
<FILE_AUTHOR>Value9</FILE_AUTHOR>
<FILE_TITLE>Value10</FILE_TITLE>
<FILE_BROTHER_ID>456789</FILE_BROTHER_ID>
<FILE_PARENT_ID>Value12</FILE_PARENT_ID>
</Record>
<Record>
<ID>456789</ID>
<FILE_PRJ_ID>Value1</FILE_PRJ_ID>
<FILE_TYPE>Value2</FILE_TYPE>
<FILE_CREAET_MODE>Value3</FILE_CREAET_MODE>
<FILE_NAME>Value4</FILE_NAME>
<FILE_UNIT>Value5</FILE_UNIT>
<FILE_MAN>Value6</FILE_MAN>
<FILE_CREATE_TIME>Value7</FILE_CREATE_TIME>
<FILE_SIZE>Value8</FILE_SIZE>
<FILE_AUTHOR>Value9</FILE_AUTHOR>
<FILE_TITLE>Value10</FILE_TITLE>
<FILE_BROTHER_ID>-1</FILE_BROTHER_ID>
<FILE_PARENT_ID>Value12</FILE_PARENT_ID>
</Record>
</Records>
</XmlData>
各种标签说明:(参见前面的“如何获得文档的基本信息”说明)
同“如何获得文档的所有兄弟信息”接口一样,施工系统向外协系统提交最小辈分的一个文档的ID,外协系统自动返回所有的父辈文档信息,包含父亲,爷爷,祖爷爷等。
请求报文:(参见“如何获得文档的所有兄弟信息”请求报文)
响应报文:(参见“如何获得文档的所有兄弟信息”响应报文)
各种标签说明:(参见前面的“如何获得文档的基本信息”说明)
获得文档的ID之后,施工系统可以向外协系统请求下载某一个文档的实体数据。外协系统把文档用二进制读取出来之后,转换成base64的格式供施工系统下载。施工系统一次只能请求下载一个文档。
请求报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<UserInfo>
<User>ZhangSan</User>
<PassWord>123456</PassWord>
</UserInfo>
<Description>
</Description>
<Records>
<ID>123456</ID>
</Records>
</XmlData>
响应报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
<Description>
<Result>成功</Result> <!--如果失败,则返回信息是“失败:(错误信息)”-->
</Description>
<Records>
<Record>
<FileData>/e5asf@dfgafa#sdgsdg……</FileData>
</Record>
</Records>
</XmlData>
报文说明:
标签名
|
说明
|
<XmlData>
|
报文数据主体
|
<Description>
|
报文头部信息
|
<Records>
|
记录集合
|
<Record>
|
一行记录
|
<UserInfo>
|
业务认证的用户信息
|
<User>
|
业务用户登录名
|
<PassWord>
|
业务用户验证口令
|
<ID>
|
文档的ID。请求下载的文档ID
|
<FileData>
|
文件实体内容。文件实体内容用二进制读取出来之后,然后转换成base64的格式提供给施工系统。
|
<Result>
|
反馈报文中的下载成功与否信息。
如果下载成功,则信息是“成功”
如果下载失败,则信息是“失败:(后面是错误的详细信息)”
|