跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. Java使用xml-rpc直接调用workflow操作,可用于模拟订单confirm等按钮动作

Java使用xml-rpc直接调用workflow操作,可用于模拟订单confirm等按钮动作

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
3 帖子 2 发布者 3.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • S 离线
    S 离线
    stevendreamer
    写于 最后由 编辑
    #1

    继上一个帖子使用xml rpc访问object对象后,研究了下,xml rpc也可以直接用来调用workflow动作。
    原文是gooogle了一个外国的帖子,链接如下:<br / http://selvam4u.wordpress.com/2010/12/09/openerp-xml-rpc-java/ br />国内貌似被墙....

    我测试的例子步骤如下,由于是测试,所以中间有查db的步骤。
    1. 在系统上面建立一个purchase order,状态为draft
    2. 使用下面的sql查找出这个新建的purchase order的id:
    select * from "purchase_order" where create_date > current_date -1;
    3. 使用下面代码,替换掉里面的id字段,然后直接运行
    4. 执行完以后,重新查系统,查刚才新建的po单,可以看到,po的状态为已经confirm了。

    有了这个例子,结合前面对象创建的例子,可以做简单的 对象创建->confirm 动作了。

    <br />	public static void callWorkflow() throws MalformedURLException {<br /><br />		XmlRpcClient xmlrpc = new XmlRpcClient();<br /><br />		XmlRpcClientConfigImpl xmlrpcConfgDb = new XmlRpcClientConfigImpl();<br />		xmlrpcConfgDb.setEnabledForExceptions(true);<br />		xmlrpcConfgDb.setServerURL(new URL(<br />				&quot;http://localhost:8069/xmlrpc/object&quot;)); // 服务器链接<br /><br />		xmlrpc.setConfig(xmlrpcConfgDb);<br /><br />		/*<br />		Object r2&#91;] = new Object[5];<br />		r2[0] = &quot;openerp&quot;;<br />		r2[1] = 1;<br />		r2[2] = &quot;000000&quot;;<br />		r2[3] = &quot;purchase.order&quot;;<br />		r2[4] = &quot;purchase_confirm&quot;;<br />		r2[5] = 75;<br />		*/<br />		<br />		// 以下函数调用直接调用了workflow,其中,purchase.order为对象。<br />		// purchase_confirm为该对象绑定的workflow中的signal,75为该对象的ID,在此例子中即为PO的id值<br />		// 测试发现,执行完该操作以后,PO的状态由draft变为approved.<br />		// 6个变量说明<br />		// 1. &quot;openerp&quot; db名<br />		// 2. 1 登录用户的id,登录后获取用户id,这里直接写1,默认admin账户<br />		// 3. 用户密码<br />		// 4. 对象model 名称<br />		// 5. workflow的signal,就是点按钮的那个signal,具体是叫啥忘了<br />		// 6. 对象id,这里就是po的id<br />		Object&#91;] params = new Object&#91;] { &quot;openerp&quot;, 1, &quot;000000&quot;, &quot;purchase.order&quot;,<br />				&quot;purchase_confirm&quot;, 75 };<br />		<br /><br />		Object po_data;<br /><br />		try {<br /><br />			po_data = xmlrpc.execute(&quot;exec_workflow&quot;, params);<br /><br />			System.out.println(&quot;finished&quot;);<br />			// System.out.println(o.length);<br /><br />		} catch (Exception e) {<br />			e.printStackTrace();<br /><br />		}<br />	}<br />
    
    1 条回复 最后回复
    0
    • wjfonhandW 离线
      wjfonhandW 离线
      wjfonhand
      写于 最后由 编辑
      #2

      很棒。可以试着输出一下podata这个返回值,不用到系统查就知道执行结果的。

      GoodERP -- Odoo China fork

      1 条回复 最后回复
      0

      • 登录

      • 没有帐号? 注册

      • 登录或注册以进行搜索。
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 标签
      • 热门
      • 用户
      • 群组