Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

前端之家收集整理的这篇文章主要介绍了Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Odoo(OpenERP)服务器支持通过XML-RPC接口访问、操作数据库,基于此可实现与其他系统的交互与集成。
本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例。本例引用的jar包包括xmlrpc-common-3.1.3.jar, xmlrpc-client-3.1.3.jar和ws-commons-util-1.0.2.jar,如需要,可点击这里下载。

  1. package memo.by.weichen;
  2.  
  3. import java.net.URL;
  4. import java.util.Arrays;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.apache.xmlrpc.client.XmlRpcClient;
  10. import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
  11.  
  12. /**
  13. *
  14. * 通过XML-RPC接口访问Odoo数据库
  15. * Test@Odoo 8.0
  16. * by WeiChen
  17. *
  18. */
  19. public class OdooWSDemo {
  20. public static final String URL = "http://127.0.0.1:8069";
  21. public static final String DB = "demo";
  22. public static final int USERID = 1;
  23. public static final String PASS = "demo";
  24. public static void main(String[] args) throws Exception{
  25. XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
  26. XmlRpcClient client = new XmlRpcClient();
  27. config.setServerURL(new URL(String.format("%s/xmlrpc/2/object",URL)));
  28. client.setConfig(config);
  29. // 新建客户
  30. Integer id = (Integer) client.execute(
  31. "execute_kw",Arrays.asList(
  32. DB,USERID,PASS,"res.partner","create",Arrays.asList(new HashMap() {
  33. {
  34. put("name","苏州园区永旺梦乐城");
  35. put("customer",Boolean.TRUE);
  36. }
  37. })));
  38. // 更新客户
  39. client.execute("execute_kw",Arrays.asList(
  40. DB,"write",Arrays.asList(
  41. Arrays.asList(id),new HashMap() {{ put("name","永旺梦乐城苏州园区店"); }}
  42. )
  43. ));
  44. // 查找客户
  45. List<Object> partners = Arrays.asList((Object[])client.execute("execute_kw","name_get",Arrays.asList(Arrays.asList(id))
  46. )));
  47. if(partners!=null&&partners.size()>0){// partners格式: [[id,name]]
  48. Object[] partner = (Object[])partners.get(0);
  49. if(partner.length==2)
  50. System.out.println("客户名: "+partner[1]);
  51. }
  52. // 删除客户
  53. client.execute("execute_kw","unlink",Arrays.asList(Arrays.asList(id))));
  54. // 客户列表
  55. List<Object> customers = Arrays.asList((Object[]) client.execute(
  56. "execute_kw","search_read",Arrays.asList(Arrays.asList(
  57. // 设置查询条件
  58. // Arrays.asList("is_company","=",true),Arrays.asList("customer",true))),new HashMap() {
  59. {// 查询name字段,限定最多返回100条记录
  60. put("fields",Arrays.asList("name"));
  61. put("limit",100);
  62. }
  63. })));
  64. System.out.println("**********客户列表**********");
  65. for (int i=0;i<customers.size();i++){
  66. Map customer = (Map)customers.get(i);
  67. String name = (String)customer.get("name");
  68. System.out.println(name);
  69. }
  70. System.out.println("****************************");
  71. }
  72. }
参考资料:

[1]https://www.odoo.com/documentation/8.0/api_integration.html

猜你在找的XML相关文章