Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

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



  • 继上一个帖子使用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 />
    


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


Log in to reply