题注: 
      发表这篇解决方案,属于非盈利目的。主要是为了让大家了解一种接口技术解决方案文档的编写格式以及让大家评审在我的这个技术解决方案中的不足之处,以便大家指出并加以改进。 
      转载,下载或与各种形式使用这篇文章,必须注明文章的作者,出处。 
      其他未尽事宜,以国家法律规定的为准! 
                  作者:南疯 

8.2.13   获得字典

施工系统提交字典的分类ID,向外协系统发送请求。外协系统根据字典分类ID,返回对应的字典代码信息。字典代码的信息返回不受最大返回记录100条的限制,一次返回全部的该类字典代码。

请求报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<UserInfo>
    
<User>ZhangSan</User>
    
<PassWord>123456</PassWord>
  
</UserInfo>
  
<Description>        
  
</Description>

  
<Records>
    
<DictionaryID>201</DictionaryID>
  
</Records>
</XmlData>

响应报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<Description>
    
<Result>成功</Result>    <!--如果失败,则返回信息是“失败:(错误信息)”-->
  
</Description>
  
<Records>
    
<Record>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
    
</Record>
    
<Record>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
    
</Record>
    
<Record>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
    
</Record>
  
</Records>
</XmlData>

报文说明:

标签名

说明

<XmlData>

报文数据主体

<Description>

报文头部信息

<Records>

记录集合

<Record>

一行记录

<UserInfo>

业务认证的用户信息

<User>

业务用户登录名

<PassWord>

业务用户验证口令

<DictionaryID>

字典类型ID。请求下载的字典类型,外协根据字典类型返回对应的字典。

<Field1>

<Field2>

<Field3>

<Field4>

一行字典中的英文字段名称。实际中,这些标签都是字典的英文名。字段的标签全部是大写。

具体的字段名称请参见提供的数据模型

<Result>

反馈报文中的下载成功与否信息。

如果下载成功,则信息是“成功”

如果下载失败,则信息是“失败:(后面是错误的详细信息)


8.3    外协系统向施工系统发送请求

外协系统向施工系统发送请求的数据目前有几点需要考虑:

u       如何请求发送一个变更后的业务数据

u       如何请求发送一个变更后的字典数据

u       文档发送请求

外协系统不会主动发送文档的变更信息给施工系统,因为文档的信息(文档的ID)变更是体现在业务的信息当中的,外协系统向施工系统发送业务的变更信息当中就包含了变更了的文档ID,只有在施工系统中进行业务需要获得文档的信息的时候,由施工系统主动发送请求到外协系统获得文档的信息或下载文档。

针对前面这些问题,接口方案的解决方法如下:

 

8.3.1发送变更后的数据

外协系统在业务数据发生变更(新增、修改、逻辑删除)的时候,会自动发送请求到施工系统要求施工系统进行更新。

注意,外协系统中没有记录上的物理删除,外协系统中所有的删除业务都是逻辑上的删除,仅仅在删除标志位上面标记为“1”。所以,外协系统没有向施工系统发送物理删除的请求。

请求报文:
<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<UserInfo>
    
<User>ZhangSan</User>
    
<PassWord>123456</PassWord>
  
</UserInfo>
  
<Description>
    
<Note>项目经理已经对数据进行了审批</Note>
  
</Description>
  
<Records>
    
<Record>
      
<KeyField>KeyValue</KeyField>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
    
<Record>
      
<KeyField>KeyValue</KeyField>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
    
<Record>
      
<KeyField>KeyValue</KeyField>
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
  
</Records>
</XmlData>

响应报文:

<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<Description>
    
<Result>成功</Result>  <!--如果失败,则<Result>里面内容是:失败:(错误原因),同时,KeyField的值为空-->
  
</Description>
  
<Records>    
  
</Records>
</XmlData>

报文说明:

标签名

说明

<XmlData>

报文数据主体

<Description>

报文头部信息

<Records>

记录集合

<Record>

一行记录

<UserInfo>

业务认证的用户信息

<User>

业务用户登录名

<PassWord>

业务用户验证口令

<Note>

业务的简单描述。比如:开工报告审批、施工组织方案审批 等

<KeyField>

一行记录中的主键英文字段名称。实际中,这些标签都是字典的英文名。字段的标签全部是大写。

具体的主键字段名称请参见提供的数据模型

<Field1>

<Field2>

<Field3>

<Field4>

一行记录中的英文字段名称。实际中,这些标签都是字典的英文名。字段的标签全部是大写。

具体的字段名称请参见提供的数据模型

<Result>

反馈报文中的保存成功与否信息。

如果保存成功,则信息是“成功”

如果保存失败,则信息是“失败:(后面是错误的详细信息)

 

 

 

8.3.2发送变更后的字典

外协系统在字典数据发生变更(新增、修改、逻辑删除)的时候,会自动发送请求到施工系统要求施工系统进行更新施工系统的对照字典。

即使是仅仅一个字典条目发生了改变,外协系统向施工系统发送的报文中还是包含了该类字典的所有条目。

请求报文:

<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<UserInfo>
    
<User>ZhangSan</User>
    
<PassWord>123456</PassWord>
  
</UserInfo>
  
<Description>
    
<DictionaryID>201</DictionaryID>
  
</Description>
  
<Records>
    
<Record>      
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
    
<Record>      
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
    
<Record>      
      
<Field1>Value1</Field1>
      
<Field2>Value2</Field2>
      
<Field3>Value3</Field3>
      
<Field4>Value4</Field4>
    
</Record>
  
</Records>
</XmlData>

响应报文:

<?xml version="1.0" encoding="utf-8"?>
<XmlData>
  
<Description>
    
<Result>成功</Result>  <!--如果失败,则<Result>里面内容是:失败:(错误原因),同时,KeyField的值为空-->
  
</Description>
  
<Records>    
  
</Records>
</XmlData>

报文说明:

标签名

说明

<XmlData>

报文数据主体

<Description>

报文头部信息

<Records>

记录集合

<Record>

一行记录

<UserInfo>

业务认证的用户信息

<User>

业务用户登录名

<PassWord>

业务用户验证口令

<DictionaryID>

字典类型ID。发生变更的字典类型。

<Field1>

<Field2>

<Field3>

<Field4>

一行记录中的英文字段名称。实际中,这些标签都是字典的英文名。字段的标签全部是大写。

具体的字段名称请参见提供的数据模型

<Result>

反馈报文中的保存成功与否信息。

如果保存成功,则信息是“成功”

如果保存失败,则信息是“失败:(后面是错误的详细信息)

 

 

 

8.3.3文档发送请求

   外协系统不会主动发送文档的变更信息给施工系统,因为文档的信息(文档的ID)变更是体现在业务的信息当中的,外协系统向施工系统发送业务的变更信息当中就包含了变更了的文档ID,只有在施工系统中进行业务需要获得文档的信息的时候,由施工系统主动发送请求到外协系统获得文档的信息或下载文档。