【Day4】重要底层系统篇-Base

#odoo #开源系统 #数位赋能 #E化自主

前言

若要将odoo与其他商业软件进行比较差异,我会说odoo与其他的大型ERP系统比较大的差异在於odoo的系统模组化设计。odoo在系统规划过程中透过高度模组化的设计,将不同的功能需求进行模组划分,这样的设计我们可以用乐高积木来做理解。在每个导入个案中,我们可以针对其不同之需求进行模块组合拼凑出对於需求个案来说"刚刚好"的系统,而非将所有的功能一次装上,如此一来,我们可以达成系统介面与功能面之整洁,同时又可以保有企业流程未来持续增长的弹性。

再次拿出乐高积木来帮大家做快速的理解,如果说每件乐高积木作品中最大的零件或区块,那必定是作为乘载整个乐高积木的底层,在一些乐高作品中如果有一些重要的功能需求,我们也经常发现对应这些功能之重要模组(如电控模组、马达模组)等,也都会设计安装於底层,来满足整个作品来使用。类似的观念也适用於odoo的底层模组架构,针对一些系统重要的功能或运作架构,在odoo中一般都将这些功能的规划安排在底层模组里。而对於应用面的模组而言,我们仅需呼叫使用即可!

模组名称:Base等系统底层模组

功能与特点

作为odoo系统之统合性应用,有相当多之系统架构规划於底层系统进行定义与规划,以下针对经常在应用模组开发中会使用的功能做简单介绍:

  1. 系统使用者/公司/联系人主档
    作为不管哪个系统而言,系统使用者主档(res.user)可能是每个系统都相当基础的功能需求。
    https://ithelp.ithome.com.tw/upload/images/20210914/201346772FxivFdAB7.png
    而在odoo中比较特殊的,是在odoo的公司(res.company)运作架构。在其他系统中的设计,通常是预设一个资料库仅对应到一间公司,因此当我们面对多公司之管理需求时,通常就会必须面对到相对复杂的跨资料库之资料管理。在odoo系统中,存在在一个资料库中运行多公司之可能性,省下了不少的烦恼!
    https://ithelp.ithome.com.tw/upload/images/20210914/201346776ae2VlUm8B.png
    另外odoo在联系人(res.partner)的设计更是有趣。在过去的资料规划上来说,我们可能在客户、供应商、公司员工等等资料会透过分拆的资料表来进行储存,而当中有相当多重复的类似栏位(如名称、地址等等)。分拆的资料表在进行系统使用时很有可能会针对相同对象重复建档(如员工同时也是公司的客户等),这也造成系统内在进行一些整合性比对时的困难。odoo在联系人之设计上,将不管是客户、供应商、系统使用者甚至公司自身都为一个系统之联系人,因此所有与公司运作流程上可能有关连的对象都可以透过联系人来进行资料整合,避免过去的各种困扰!
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677cYejFFClUp.png

  2. 资料库
    说到odoo的资料库,就不能不说odoo的ORM架构,ORM为Object Relational Mapping的缩写,在中文翻译上可以称为物件关系对映,维基百科是这样说的:ORM是一种程序设计之技术,此技术用於实现物件导向程序语言里不同类型系统的资料之间的转换。
    odoo的ORM架构协助我们将一些基础会使用的资料库开发功能先写成物件式之程序让我们可以快速呼叫并且帮我们处理好在资料库中该做的事,如此一来我们不用再花时间去处理资料库的栏位设置,减少开发资料库时可能发生的错误,并可以花更多精力专注於系统之程序逻辑!
    相关odoo的ORM框架可以透过odoo官方文件了解更多!
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677ZfyWMHW2cT.png

  3. 使用者介面架构
    odoo对一般系统之应用需求预先进行系统介面之规划,首先对整体系统之介面设计包含表单、看板、枢纽分析表、日历、图表等等之系统介面,另外针对不同类型之栏位开发对应之小部件(widget),因此在开发odoo系统时,我们可以快速取用这些底层之使用者介面架构,让系统可以有个基础的应用介面,而不用每个系统画面都重头开始刻,节省了非常多的开发时间!
    相关odoo的View框架可以透过odoo官方文件了解更多!
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677XknphcZUCN.png

  4. 报表运作架构
    不管是什麽系统,报表列印可能是系统基础运作需求的前几名。在odoo的系统运作规划,报表之列印有单一表单之列印,以及透过系统批次运算後产生报表两种模式。相关odoo的Report框架可以透过odoo官方文件了解更多!
    https://ithelp.ithome.com.tw/upload/images/20210914/2013467750PtGmx6l7.png

  5. 多国家/多币别
    odoo之系统面对全世界之应用需求,因此多国家与多币别之处理为系统之基础架构。
    在国家(res.country)的设置中,包括地址之列印方式设置等等
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677DZm7VrM66n.png
    在币别(res.currency)的设置中,包括币别符号以及舍入设置等等
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677CxKVeY2D6M.png

  6. 多语系/翻译
    odoo之系统面对全世界之应用需求,因此多语系与系统之字段翻译功能为系统之基础架构,透过此功能我们可以调整系统之介面文字,让用词更贴近企业之产业用语!
    在语系设置中,包括该语系对应之日期格式、时间格式等等
    https://ithelp.ithome.com.tw/upload/images/20210914/201346773PtQzj9lKQ.png
    系统翻译设置
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677bCnh9F7le6.png

  7. 权限群组与运作架构
    系统权限之规划不管在甚麽系统都会是最复杂的一块,而odoo也建构了面对各种复杂权限需求之弹性化系统权限架构。
    权限群组(res.groups)用於串接系统使用者与各项系统权限细节设置:
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677e1EXO6X2Bd.png
    模型访问权(ir.model.access)用於设定每个不同的权限群组是否可运行该模型(model)进行读、写、建、删之四种权限。
    https://ithelp.ithome.com.tw/upload/images/20210914/201346774xlFDvEYkb.png
    纪录规则(ir.rule)用於系统中每笔纪录(data)之四权限(读、写、建、删)运作。
    https://ithelp.ithome.com.tw/upload/images/20210914/20134677GoItCq4Xgu.png
    其他系统权限设置:在系统选单(ir.ui.menu)与视图设定(ir.ui.view),或在视图(view)结构中亦可设置可应用的对应群组

结论

我们在本篇简单的认识了odoo的重要系统底层架构,是否对於odoo系统在技术面有了一些了解呢? 下一篇章我们将介绍odoo另一个相同重要且广用於整个odoo系统之模组:Discuss

参考文件:


Day5预告:重要底层系统篇-Discuss


<<:  文件物件模型--DOM

>>:  基础统计-让我们来聊聊叙述统计

DAY27 - 建议避免的CSS命名规则

昨天,提供了一种CSS命名的方法, 今天,我们再来看看有什麽要避免的CSS命名呢? 避免直接把颜色放...

Day 28: 人工智慧在音乐领域的应用 (伦敦-Jukedeck、纽约-Amper Music 、OpenAI-Jukebox)

今天我们继续介绍一些比较知名的AI作曲的公司/软件。 Jukedeck Jukedeck可以说是AI...

[Day30]Flutter Netflix UI 使用shared_preferences

大家好,今天是最後一天,今天跟大家介绍shared_preferences,可以把一些简单的设定的东...

[机派X] Day 10 - 寒酸的无人机介绍

引言 今天是机派X系列文章的第十天。 昨天介绍了关於 Bash 的几个实用案例,也是 Linux 系...

Day30 帝君最爱 凤九拿手菜-糖醋鲈鱼

始於糖醋,终於糖醋,一如挑战30天铁人出好菜的滋味,酸酸甜甜 最後一场铁人,再次挑战炸物料理,有了...