OPenerp server六种服务类型
-
最近查看了服务端的源代码,有一些所得,发贴出来跟大家一起分享
服务端内部服务基本分成六种类型
object_proxy(object)
workflowdb
common
report
wizard
前面两种比较经常可以见object_proxy(object)是处理业务逻辑的服务接口
workflow是工作流模型的服务接口
db是获取数据库操作的服务接口 包括备份,删除,恢复。
common是处理登录,登出的服务接口
report是报表的服务接口
wizard故明思义是wizard的服务接口。
client发送的服务请求类型也就以上六个类型对于这些服务类型的继承,扩展可以采用如下方法
这六种类型的服务都是注册在netsvc.SERVICES字典里面,采用以下方法注册
netsvc.Service.init(self, 'object_proxy', audience='')
具体代码见web_services.py
class common(netsvc.Service):
def init(self,name="common"):
netsvc.Service.init(self,name)
self.joinGroup("web-services")
self.exportMethod(self.ir_get)
self.exportMethod(self.ir_set)
self.exportMethod(self.ir_del)
self.exportMethod(self.about)
self.exportMethod(self.login)
self.exportMethod(self.logout)
self.exportMethod(self.timezone_get)
self.exportMethod(self.get_available_updates)
self.exportMethod(self.get_migration_scripts)
self.exportMethod(self.get_server_environment)
self.exportMethod(self.login_message)
self.exportMethod(self.check_connectivity)对于这些服务的扩展比较容易.只需要继承netsvc.SERVICES中对应的python类。然后在init方法里面调用一下netsvc.Service.init(self, 'object_proxy', audience='')就可以完成扩展
objects_proxy = netsvc.SERVICES['object'].class
具体代码:见:base_module_record模块中的base_module_record.py或者audittrail模块中的audittrail.py
objects_proxy = netsvc.SERVICES['object'].classclass recording_objects_proxy(objects_proxy):
[[i] 本帖最后由 piaosha198 于 2010-4-9 17:41 编辑 [/i]]