Odoo(OpenERP)server支持通过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。如须要,可点击这里下载。

package memo.by.weichen;

import java.net.URL;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; /**
*
* 通过XML-RPC接口訪问Odoo数据库
* Test@Odoo 8.0
* by WeiChen
*
*/
public class OdooWSDemo {
public static final String URL = "http://127.0.0.1:8069";
public static final String DB = "demo";
public static final int USERID = 1;
public static final String PASS = "demo"; public static void main(String[] args) throws Exception{
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
XmlRpcClient client = new XmlRpcClient();
config.setServerURL(new URL(String.format("%s/xmlrpc/2/object", URL)));
client.setConfig(config); // 新建客户
Integer id = (Integer) client.execute(
"execute_kw", Arrays.asList(
DB, USERID, PASS, "res.partner", "create",
Arrays.asList(new HashMap() {
{
put("name", "苏州园区永旺梦乐城");
put("customer", Boolean.TRUE);
}
})));
// 更新客户
client.execute("execute_kw", Arrays.asList(
DB, USERID, PASS,
"res.partner", "write",
Arrays.asList(
Arrays.asList(id),
new HashMap() {{ put("name", "永旺梦乐城苏州园区店"); }}
)
));
// 查找客户
List<Object> partners = Arrays.asList((Object[])client.execute("execute_kw", Arrays.asList(
DB, USERID, PASS,
"res.partner", "name_get",
Arrays.asList(Arrays.asList(id))
)));
if(partners!=null&&partners.size()>0){// partners格式: [[id, name]]
Object[] partner = (Object[])partners.get(0);
if(partner.length==2)
System.out.println("客户名: "+partner[1]);
}
// 删除客户
client.execute("execute_kw", Arrays.asList(
DB, USERID, PASS,
"res.partner", "unlink",
Arrays.asList(Arrays.asList(id)))); // 客户列表
List<Object> customers = Arrays.asList((Object[]) client.execute(
"execute_kw", Arrays.asList(
DB, USERID, PASS, "res.partner", "search_read",
Arrays.asList(Arrays.asList(
// 设置查询条件
// Arrays.asList("is_company", "=", true),
Arrays.asList("customer", "=", true))),
new HashMap() {
{// 查询name字段, 限定最多返回100条记录
put("fields", Arrays.asList("name"));
put("limit", 100);
}
}))); System.out.println("**********客户列表**********");
for (int i=0;i<customers.size();i++){
Map customer = (Map)customers.get(i);
String name = (String)customer.get("name");
System.out.println(name);
}
System.out.println("****************************");
}
}

參考资料:

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

Odoo(OpenERP)开发实践:通过XML-RPC接口訪问Odoo数据库的更多相关文章

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

    Odoo(OpenERP)服务器支持通过XML-RPC接口访问.操作数据库,基于此可实现与其他系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单示例.本例引用的jar包 ...

  2. Odoo(OpenERP)开发实践:数据模型学习

    作者:苏州-微尘 Odoo中,在Python类里定义的模型及字段信息,可在系统中直接查看.为用户开启技术特性权限后,就可以通过菜单 [设置->技术->数据结构->模型] 进入列表视图 ...

  3. Windows server2008 搭建ASP接口訪问连接oracle数据库全过程记录

    真的是太不easy了,曾经的时候在window server 2003上面搭建了一套asp+oracle的接口系统.就费了好大的劲儿,事实上那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨 ...

  4. Odoo(OpenERP)应用实践:代发货管理

    原文地址:http://blog.csdn.net/wangnan537/article/details/47091857 有些分销商,在买家下单后才向供应商采购产品,并由供应商直接发货给客户.这种模 ...

  5. 升讯威微信营销系统开发实践:微信接口的 .NET 封装

    GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...

  6. 前端开发工程师 - 05.产品前端架构 - 协作流程 & 接口设计 & 版本管理 & 技术选型 &开发实践

    05.产品前端架构 第1章--协作流程 WEB系统 角色定义 协作流程 职责说明 第2章--接口设计 概述 接口规范 规范应用 本地开发 第3章--版本管理 见 Java开发工程师(Web方向) - ...

  7. WebAPI接口开发实践

    背景 在团队两年多陆续负责了几个项目的开发上线已经代码的review,特别是对老项目的重构过程中,发现之前的API设计是没有任何规范和约定的,不同的开发同学有不同的习惯,因此需要一套规范去约定,现在分 ...

  8. 谈谈如何使用Netty开发实现高性能的RPC服务器

    RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议.说的再直白一点,就是客户端在不必知道 ...

  9. Netty开发实现高性能的RPC服务器

    Netty开发实现高性能的RPC服务器 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协 ...

随机推荐

  1. python - 文件处理/open

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_文件处理.py@ide: PyCharm Community E ...

  2. pytion3--class一个更实际的例子

    class一个更实际的例子 到目前为止,我们所看的大多数例子都是人为创造而且是独立完备的,其目的是为了帮助你把注意力集中在基础知识上.然而,本章的结尾是一个较大的例子,把我们所学的大多数概念都聚合在这 ...

  3. hdu5443 The Water Problem

    The Water Problem Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  4. 【bzoj2843】极地旅行社 LCT

    题目描述 不久之前,Mirko建立了一个旅行社,名叫“极地之梦”.这家旅行社在北极附近购买了N座冰岛,并且提供观光服务.当地最受欢迎的当然是帝企鹅了,这些小家伙经常成群结队的游走在各个冰岛之间.Mir ...

  5. Java学习——个人错误集(1)

    [General] 1.构造函数没有返回值,连void也没有. [多态Polymorphism]

  6. 瞄一眼CopyOnWriteArrayList(jdk11)

    CopyOnWriteArrayList是ArrayList线程安全的变体.使用写时复制策略进行修改操作. 与之前版本较明显的区别是,jdk11中用来保护所有设值方法(mutator)的Reentra ...

  7. C#递归删除进程及其子进程

    /// <summary> /// 结束进程和相关的子进程 /// </summary> /// <param name="pid">需要结束的 ...

  8. codeforces练习

    DZY Loves Colors Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u S ...

  9. Problem b(bzoj 2301)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  10. css3 背景图动画一

    一 实现背景图循环播放 @keyframes mlfly { 0%{ background-position:0 0; } 100%{ background-position:210px 0; } } ...