我是新来的开门红和玩。我的计划是将openerp连接到soap web服务。因此,openerp只支持xmlrpc,我将用java编写一个转换器。我可以从java调用openerp,但我不知道如何从另一个方向开始。
我的目标是改变制造工作流程。在“确认生产”之后,它应该通过xmlrpc将一些数据发送到我的javaxmlrpc服务器。
我创建了一个新节点,并使用以下代码添加了一个服务器操作:
import xmlrpclib
sock = xmlrpclib.ServerProxy('http://localhost:8080/xmlrpctest/xmlrpc')
这给了我一个错误名称error:name'xmlrpclib'没有定义
我认为xmlrpclib总是包含在openerp中。
如果有人能告诉我什么是通过xml-rpc从openerpjava服务器调用的正确方法,我会很高兴。
提前谢谢。
3条答案
按热度按时间yhuiod9q1#
“xmlrpclib”在python2.2中被引入python标准库,在3.0版本中被重命名为“xmlrpc”并重新组织。
jdzmm42g2#
正如andrei所说,这不是一个开放性的问题,这只是一个一般的python问题。您将需要查看pythonsoap库来对javaweb服务进行soap调用。
不过,作为一个警告,请仔细考虑将soap调用挂接到工作流中,因为如果java服务器关闭,openerp中的所有事务都将失败。除非您需要它们是同步的,否则最好使用队列(celery 、兔子等)并将消息转储到队列中。您可以使用openerpscheduledtasks在需要时启动同步进程。
htrmnn0y3#
不要在服务器操作中这样做。您可以在openerpdocumentation(我已经发送给您的链接:)中阅读以下内容
代码是使用python的exec函数执行的,exec函数在dictionary名称空间中运行,包含以下变量:object、time、cr、uid、ids
好吧,我认为这不是完全正确的-openerp中的操作是通过
tools.safe_eval.safe_eval()
方法。从该方法的文档字符串:不输入细节,这是限制执行。请执行以下操作:
创建自己的模块
创建继承自的类
mrp.production
. 我是说,你知道吗_inherit = 'mrp.production'
在你的班级里。在这个类中重写“confirm production”之后执行的方法(不管这是什么)。
在此新方法中使用rpc服务器执行所需操作。
别忘了打电话
super()