我是OpenERP的新手并且在玩游戏。 我的计划是将OpenERP连接到SOAP Web服务。因此,OpenERP只支持XML-RPC我将用Java编写转换器。我能够从Java打电话到OpenERP,但我不知道如何从另一个方向开始。
我的目标是改变制造工作流程。在“确认生产”之后,它应该通过XML-RPC将一些数据发送到我的Java xmlrpc服务器。
我创建了一个新节点并使用以下代码添加服务器操作:
import xmlrpclib
sock = xmlrpclib.ServerProxy('http://localhost:8080/xmlrpctest/xmlrpc')
这给了我错误 NameError:名称'xmlrpclib'未定义
我认为xmlrpclib总是包含在OpenERP中。
如果有人能说出从OpenERP通过XML-RPC调用java服务器的正确方法,我会很高兴。
提前致谢。
答案 0 :(得分:2)
正如安德烈所说,这不是一个OpenERP问题,这只是一个普遍的蟒蛇问题。您需要查看python SOAP库以对您的Java Web服务进行SOAP调用。
作为一个注意事项,请仔细考虑将SOAP调用挂钩到工作流中,因为如果java服务器关闭,您将在OpenERP中使所有事务失败。除非你需要它们是同步的,否则最好使用队列(Celery,Rabbit等)并将消息转储到队列中。您可以在需要时使用OpenERP计划任务启动同步过程。
答案 1 :(得分:1)
不要在服务器操作中执行此操作。您可以阅读OpenERP文档(我已发送给您的链接:))以下
使用python的exec函数执行代码,该函数在字典命名空间中运行,包含变量:object,time,cr,uid,ids
嗯,我认为这不完全正确 - OpenERP中的操作是通过tools.safe_eval.safe_eval()
方法执行的。从此方法的doc字符串:
"""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'
super()
答案 2 :(得分:1)
'xmlrpclib'在Python 2.2中引入Python标准库,并在3.0版中重命名为“xmlrpc”并重新组织。