用友U8提供的数据集成方式有:1、EAI模式;2、OpenAPI模式;
1、EAI模式
它是U8早期版本就提供的一种企业数据集成模式,它比较适合用于内网系统与U8之间的数据集成,比如:WMS系统、MES系统等。
具体的实现方式有两种:
1、通过调用COM组件的方式实现与U8系统的通信;
2、通过HTTP的方式,U8提供了一个用于交互的HTTP地址,可以IIS里查看。因为我们系统就是Java语言编写的,不便于通过JNI来调用COM组件,所以,采用了HTTP的方式,
这种方式其实很简单,就是向U8提供的服务地址发送HTTP POST请求,具体请求参数需要参考“企业系统集成”中的模板格式。样例代码如下:
1 public static void main(String[] args) throws Exception { 2 String requestXml=""; 3 requestXml+="<ufinterface sender=\"001\" receiver=\"u8\" roottag=\"purchaseorder\" proc=\"query\" codeexchanged=\"n\" paginate=\"0\">"; 4 requestXml+=" <purchaseorder> "; 5 requestXml+=" <field name=\"cpoid\" operation=\">\" value=\"0000000003\" />"; 6 requestXml+=" </purchaseorder> "; 7 requestXml+="</ufinterface>"; 8 9 URL url = new URL("http://192.168.1.106/u8eai/import.asp");//服务地址 10 HttpURLConnection con = (HttpURLConnection) url.openConnection(); 11 con.setConnectTimeout(3000000); 12 con.setReadTimeout(3000000); 13 con.setDoInput(true); 14 con.setDoOutput(true); 15 con.setAllowUserInteraction(false); 16 con.setUseCaches(false); 17 con.setRequestMethod("POST"); 18 con.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 19 // 发送Request消息 20 OutputStream out = con.getOutputStream(); 21 DataOutputStream dos = new DataOutputStream(out); 22 dos.write(requestXml.getBytes("UTF-8")); 23 24 // 获取Response消息 25 InputStream in = con.getInputStream(); 26 BufferedReader br = new BufferedReader(new InputStreamReader(in)); 27 StringBuilder sb = new StringBuilder(); 28 String s = null; 29 while ((s = br.readLine()) != null) { 30 sb.append(s); 31 } 32 String responseXml = sb.toString(); 33 System.out.println(responseXml); 34 }
1、OpenAPI模式
这种模式是相对于EAI比较新的一种集成方式,它比较适合用于外网,比如:你的系统部署在和U8不同的网络,而你想访问内网U8系统的数据,那么就需要用这种方式。我理解的原理是:
1、U8同网内要安装UP客户端,其实这个客户端就是为了提供供用友OpenApi平台访问的服务;
2、客户端需要在OpenAPI平台申请对应的账户信息,就可以访问指定内网U8的数据了,提供的接口有很多,涉及方方面面;