注册氚云社区,学习低代码知识,与更多氚友互动交流
您需要 登录 才可以下载或查看,没有帐号?立即注册  
 
x
 
 本帖最后由 氚云-白泽 于 2020-12-28 02:59 编辑  
 
  1.  氚云后端代码,是不能直接调用到第三方接口,必须做个中间层webservice,通过webservice去调用第三方返回数据,在将数据转义为JSON字符串,以SOAP协议回传给氚云。 总体业务流程图如下:  
     2. webservice规范性:只能有4个同名接口,大小写都要一致,返回类型都为JSON字符串。对应关系如下表: 序号  |  |   | GetSchema(string schemaCode)  |   |  |   | GetList(string userCode, string   schemaCode, string filter)  |   | Invoke(string userCode, string   schemaCode, string methodName, string param)  |  
   示例(C#): - namespace   DingtalkWebService
 
  
- {
 
  
-       /// <summary>
 
  
-       /// DingWebService 的摘要说明
 
  
-       /// </summary>
 
  
-       [WebService(Namespace = "http://tempuri.org/")]
 
  
-       [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
 
  
-       [System.ComponentModel.ToolboxItem(false)]
 
  
-       // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
 
  
-       // [System.Web.Script.Services.ScriptService]
 
  
-       public class DingWebService :   System.Web.Services.WebService
 
  
-       {
 
  
-           [WebMethod]
 
  
-           public string   GetSchema(string schemaCode)
 
  
-           {
 
  
-             return string.Empty;//返回JSON字符串
 
  
-           }
 
  
-           [WebMethod]
 
  
-           public string   GetSchemaList()
 
  
-           {
 
  
-             return string.Empty;//返回JSON字符串
 
  
-           }
 
  
-  
 
  
-           [WebMethod]
 
  
-           public string   GetList(string userCode, string   schemaCode, string filter)
 
  
-           {
 
  
-             return string.Empty;//返回JSON字符串
 
  
-           }
 
  
-  
 
  
-           [WebMethod]
 
  
- //氚云后端调用的方法名
 
  
-           public string   Invoke(string userCode, string   schemaCode, string methodName, string   param)
 
  
-           {
 
  
- //书写调用第三方接口方法
 
  
-  
 
  
-             return string.Empty;//返回JSON字符串
 
  
-           }
 
  
-       }
 
  
- }
 
  复制代码Invoke方法返回的JSON字符串格式  
- {"ResultCode":"0",   "Message":"",   "Schema":{"Code":"Student","Items":[{"Name":"Name","DisplayName":"学生姓名","DataType":"String"},{"Name":"Age","DisplayName":"学生年龄","DataType":"Int"},{"Name":"ReturnData","DisplayName":"子表数据","DataType":"BizStructureArray","ChildSchema":{"Code":"ResultObject","Items":[{"Name":"ResultCode","DisplayName":"执行结果代码","DataType":"Int"},{"Name":"ErrorMessage","DisplayName":"异常原因","DataType":"String"}]}}]},   "Data":{"Name":"张三","Age":"10","ReturnData":[{"ResultCode":"0","ErrorMessage":"0"},{"ResultCode":"1","ErrorMessage":"1"}]}}
 
  复制代码  3.  氚云系统集成-接入第三方系统的配置:将书写好的webservice挂载到服务器上,发布访问的webservice地址(外网要能访问),在将该地址配置‘接入通用系统 ’,如下图所示:  
  
  
  
 注意若webservice书写的不规范,则会显示连接失败。     4. 氚云后端调用webservice方法:Invoke 示例: -   //定义传输结构-主表
 
  
-           H3.BizBus.BizStructureSchema paramSchema = new   H3.BizBus.BizStructureSchema();
 
  
-           paramSchema.Add(new H3.BizBus.ItemSchema("BillsCustomer",   "客户", H3.Data.BizDataType.ShortString, 200,   null));
 
  
-           paramSchema.Add(new H3.BizBus.ItemSchema("TotalMoney",   "总计", H3.Data.BizDataType.Double, 200,   null));
 
  
-           //定义传输结构-子表
 
  
-           H3.BizBus.BizStructureSchema detailsSchema = new   H3.BizBus.BizStructureSchema();
 
  
-           detailsSchema.Add(new H3.BizBus.ItemSchema("Type", "收款类型", H3.Data.BizDataType.ShortString, 200, null));
 
  
-           detailsSchema.Add(new H3.BizBus.ItemSchema("Money", "金额", H3.Data.BizDataType.Double, 200, null));
 
  
-           //主表赋值
 
  
-           paramSchema.Add(new H3.BizBus.ItemSchema("details", "明细", H3.Data.BizDataType.BizStructureArray, detailsSchema));//子表添加到主表
 
  
-           H3.BizBus.BizStructure paramData = new   H3.BizBus.BizStructure(paramSchema);
 
  
-           paramData["BillsCustomer"] = "chen";
 
  
-           paramData["TotalMoney"] = 123;
 
  
-           //子表赋值
 
  
-           List < H3.BizBus.BizStructure > detailsDatas=new   List<H3.BizBus.BizStructure>();
 
  
-           for(int k = 0;k < 2; k++)
 
  
-           {
 
  
-             H3.BizBus.BizStructure   detailsData = new H3.BizBus.BizStructure(detailsSchema);
 
  
-             detailsData["Type"] =   "氚云";
 
  
-             detailsData["Money"] =   11;
 
  
-             detailsDatas.Add(detailsData);
 
  
-           }
 
  
-           //子表的值赋值给主表
 
  
-           paramData["details"] = detailsDatas.ToArray();
 
  
-  
 
  
-           //调用Invoke接口,系统底层访问第三方WebService接口的Invoke方法
 
  
-           H3.BizBus.InvokeResult InResult = this.Engine.BizBus.Invoke(H3.Organization.User.SystemUserId,   H3.BizBus.AccessPointType.Legacy, this.Request.SchemaCode, "自定义参数", paramData);
 
  
-           if(InResult != null)
 
  
-           {
 
  
-             int Code = InResult.Code; //调用是否成功
 
  
-             if(Code == 0)
 
  
-               {
 
  
-                 //获取返回数据
 
  
-                 H3.BizBus.BizStructure Obj =   InResult.Data;
 
  
-             }
 
  
-             else
 
  
-             {
 
  
-                 //获取错误信息
 
  
-                 string ErrorMessage =   InResult.Message;
 
  
-             }
 
  
-           }
 
  复制代码 
 |