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. 0014.Linux环境搭建 Python环境搭建

    -安装Linux-- 找了了老男孩19期的运维班安装视频,尼玛真心不想看书,文字枯燥的要死,还不如直接看视频进行安装... 可怜了我的C盘只有1GB了...绝对不能安装在C盘...那就安装在E盘吧,足 ...

  2. [办公软件篇][3]windows软件安装

    http://www.jeffjade.com/2015/10/19/2015-10-18-Efficacious-win-software/

  3. 九度oj 题目1527:首尾相连数组的最大子数组和

    题目描述: 给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首尾是相连的.数组中一个或多个连续元素可以组成一个子数组,其中存在这样的子数组arr[i],…arr ...

  4. 读《MySql必知必会》笔记

    MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...

  5. debian 切换最新源

    deb http://ftp.cn.debian.org/debian sid main#deb http://ftp.debian.org/debian/ wheezy main

  6. 刷题总结——寻宝游戏(bzoj3991 dfs序)

    题目: Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄 ...

  7. Java数据库连接JDBC用到哪种设计模式?

    还没看桥接模式,占tag 桥接模式: 定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化. 意图 :将抽象与实现解耦. 桥接模式所涉及的角色 1.  Abstraction :定义抽象接口, ...

  8. hdu 2999 sg函数(简单博弈)

    Stone Game, Why are you always there? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/ ...

  9. jquery 焦点轮播图控制每张图片停留不同时间

    轮播代码是代签博客园一位前辈写的代码,这里作了点小修改,实现了每张图片停留不同时间 *{ padding:0px; border:0px; margin:0px; } ul { list-style: ...

  10. 根据ipnut的maxlength实时提示输入的字符长度

    $(function(){ $("body").on("focus","input,textarea", function() { if(! ...