如何从openerp向javaserver发出xmlrpc调用?

8ftvxx2r  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(310)

我是新来的开门红和玩。我的计划是将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服务器调用的正确方法,我会很高兴。
提前谢谢。

yhuiod9q

yhuiod9q1#

“xmlrpclib”在python2.2中被引入python标准库,在3.0版本中被重命名为“xmlrpc”并重新组织。

jdzmm42g

jdzmm42g2#

正如andrei所说,这不是一个开放性的问题,这只是一个一般的python问题。您将需要查看pythonsoap库来对javaweb服务进行soap调用。
不过,作为一个警告,请仔细考虑将soap调用挂接到工作流中,因为如果java服务器关闭,openerp中的所有事务都将失败。除非您需要它们是同步的,否则最好使用队列(celery 、兔子等)并将消息转储到队列中。您可以使用openerpscheduledtasks在需要时启动同步进程。

htrmnn0y

htrmnn0y3#

不要在服务器操作中这样做。您可以在openerpdocumentation(我已经发送给您的链接:)中阅读以下内容
代码是使用python的exec函数执行的,exec函数在dictionary名称空间中运行,包含以下变量:object、time、cr、uid、ids
好吧,我认为这不是完全正确的-openerp中的操作是通过 tools.safe_eval.safe_eval() 方法。从该方法的文档字符串:

"""safe_eval(expression[, globals[, locals[, mode[, nocopy]]]]) -> result

System-restricted Python expression evaluation

Evaluates a string that contains an expression that mostly
uses Python constants, arithmetic expressions and the
objects directly provided in context.

This can be used to e.g. evaluate
an OpenERP domain expression from an untrusted source.

Throws TypeError, SyntaxError or ValueError (not allowed) accordingly.

不输入细节,这是限制执行。请执行以下操作:
创建自己的模块
创建继承自的类 mrp.production . 我是说,你知道吗 _inherit = 'mrp.production' 在你的班级里。
在这个类中重写“confirm production”之后执行的方法(不管这是什么)。
在此新方法中使用rpc服务器执行所需操作。
别忘了打电话 super()

相关问题