### 业务模块
> OFBiz中自带的业务模块是经过OFBiz社区所有人的协作和不断积累而逐渐完善的, 它是16年的OFBizer共同的结晶.
> 在研发初期, 初创团队研究过很多其他优秀的ERP和CRM系统,
> 最终, 以Len Silverston的书籍 **“数据模型资源手册”第1卷和第2卷** 为业务模型构建的主要参考(书籍链接请看本文末尾).
> 业务块如下:
> 1. 通用数据(Common Data)
> 2. 内容(Content)
> 3. 安全(Security)
> 4. 当事人(Party)
> 5. 产品(Product)
> 6. 订单(Order)
> 7. 场所/设施(Facility)
> 8. 装运(Shipment)
> 9. 会计(Accounting)
> 10. 营销(Marketing)
> 11. 人工服务(WorkEffort)
> 12. 制造(Manufacturing)
> 13. 人力资源(Humans)
>
> 接下来我将为大家简单介绍下OFBiz支持的业务能力
#### 1. 通用数据(Common Data)
> 集中管理系统中的公共数据, 包括地理位置(Geo)、计量单位(Uom)、状态机(Status)、枚举常量(Enum)、语种(Language)、主题(Theme)、门户(Portal)等.
> 这些数据在项目初始化时就会以种子数据的形式存在于数据库, 为其他模块提供支持.
#### 2. 内容(Content)
> 一切信息的载体皆是资源, 资源皆存取于内容, 如图片(image)、文件(file)、网站(website)、博客(blog)、论坛(forums)、邮件(email)、调查问卷(survey)、文章(article)、文档(document)、帮助文档(helpdata)、模板(template)、说明书(annotation)、产品详情大文本(html)等任何(MIME)标准的文件, 还可以存储二进制文件到数据库, 内容相关实体记录并跟踪这些数据资源.
> 为了确保数据资源的独立性和公用性, OFBiz的模型设计时将信息和使用者分离了, 那样就允许数据资源被多方使用, 达到资源存储的原子性唯一, 用者关联管者专注
#### 3. 安全(Security)
> 安全模块, 顾名思义就是专注负责系统数据操作权限的, 管理着系统账户的各种信息, 控制着页面(查看/操作)和数据(查看/管理)的各种功能权限和业务权限的授予和校验.
> 比如验证登录的账户(可用/可访问/可查看/可操作), 审计用户操作的数据.
> 使用权限组辅助**业务实体**和**用户角色类型的限定**, 达到更多的权限限定和校验, 辅助完成业务权限控制
#### 4. 当事人(Party)
> Party, 一个神奇的单词, 中文释义一直找不到很准确的表述.
> 我个人认为**当事人**一词尚可, 类似法律条文中有当事人的定义及用法.
> 但是在被关联到其他业务实体时建议解释为**干系人**, 即多种角色的关联人, 如产品生产者和租赁者.
> 它分两种类型, 一个是组织(Group), 一个是人(Person), 没有明显的职能属性, 都是通过角色(Role)来标记其职能和特性的.
> - 组织(Group): 团体性机构, 如: 客户(公司)、供应商(公司)、集团、企业、公司、门店、办事处、家族、部门、团体、小组等任何多人团体的代表
> - 人(Person): 个体性机构, 如: 客户(个人)、供应商(个人)、员工、工人、人等任何相对个体性的代表
> 这个模块同时维护着与当事人直接相关的各种信息, 如当事人相互关系(relationship)、合同协议(agreement)、沟通事件(communication)、联系信息(contact)、需求(need)
#### 5. 产品(Product)
> 任意当事人之间交易品的定义, 既可以是实物也可以是服务, 它将根据任意的需求产生, 并实例化于当事人之间的订单里.
> 为了顺畅的提供产品(product), 这里同时维护了产品相关的所有辅助信息, 如产品分类(category)、存储仓库(facility)、库存记录(inventory)、产品价格(price)、产品成本(cost)、产品特征(feature)、产品属性(attribute)、产品配置(config) 产品图片库(image)、产品促销(promo)、产品售卖的店铺(store)、产品订阅记录(subscription)、产品维修记录(maintain)、产品供应商(supplier)等.
> 同时因为仓库主要用于产品(成品)的存储, 因而和仓库相关的收货(receive)、拣货(packing)、送货(shipment)、退单货(return)业务也在这里一并维护.
>
> 产品故事: 一个可购买也可租赁的多配置型办公电脑
> - (标准办公电脑)产品在(OFBiz官方)店铺中的(办公用品)分类下公开售卖, 参与店铺的(一周年庆)促销活动
> - 销售(最低)配置价格在(4000元), 不同(CPU频率)特征不同价格, 提供(电脑)属性和详细介绍
> - 在(一号)仓库中还有库存(98件), (价格有时段性)年初从(多币种转换)国外(进货)成本是(售价*80%),
> - 客户可以订阅(产品动态), 并租赁电脑, 此时会登记租赁产品的订单, 并提供电脑的(维修记录)
> - 产品角色(生产商,供应商,代理商,客户), 每个角色都有联系信息(电话、地址、手机号、邮箱等)
> - 仓库在收货后,盘点库存,然后根据销售订单生成拣货单,拣好货品后按订单送货,不符合客户要求的订单可以退货
> 产品示例
>
| 产品类型 | 产品示例 | 生成的订单类型 |
| --- | --- | --- |
| 有实物(Asset) | 服装美食、超市进货、服装生产订货 | 购物单、采购单、订购单 |
| 虚拟资产(Asset) | 人力外包、办公室租赁、阿里云服务器租赁、京东会员 | 服务单、租赁单、订阅单 |
#### 6. 订单(Order)
> 集中管理系统中任何方式产生的交易单, 此订单包括采购单(购入)和销售单(售出)
> 订单将关联购买的产品,接受订单的店铺,订单总金额可以调整(税/运费/折扣/附加费),收款(payment)后可以提供发票(invoice),还可以进行期结.
> 当然, 可以退货(return)
> 因为购物清单(shoppinglist)和购物车(shoppingcart)是为了订单而存在的, 销售机会(opportunity)是为了促进下单率的, 所以也在这里维护.
> 订单会因类型和产品性质的不同, 细化触发不同用途的交易后续业务流程.
> 采购单
> - 实物(现货): 公司采购直接购买,产生对非本部门(其他事业部/外部公司)的采购订单,跟进产品交付进展
> - 实物(待生产):
> - 若需要向卖方询价,则发起客户请求(request); 等待一到多个卖方报价(quote); 根据收到的报价生成采购单(order)
> - 若直接订购,则直接下采购单,视采购量和交付周期签订合同(agreement),
>
> 销售单
> - 实物(现货): 客户直接购买,产生普通的销售订单; 后续涉及到财务(accounting),仓储(facility),库存(inventory),包裹(package),发货(shipment)等环节.
> - 实物(待生产): 若客户发起询价,则接收客户请求(request); 发回复报价(quote); 等待客户下订单(order)
> 库存不足或后续服务
> - 若客户购买的产品本公司没有现货(库存数量不足)
> - 当产品是采购来的情况时,创建产品需求(requirement),对供应商发起采购单
> - 当产品是自己生产时,创建内部需求(requirement),对生产车间发起生产单(workeffort)
> - 若客户购买的是本公司提供的服务,则创建作业需求(requirement),对相关职员发起人工服务(workeffort)
#### 7. 场所/设施(Facility)
> 任何场地、场所、建筑、楼栋、工厂、车间、公共设施、房间、门店、仓库等可定义的空间(物理位置)都在这里统一管理.
> 同时管理着场所的联系信息(contact)、干系人(party)、空间内的容器及货架(container)、所在地理位置(geo)等.
> 场所还可以分组管理, 如连锁店, 专业的仓储公司的仓库.
> 实物可以与场所或场所内的(容器/货架/巷道/特定位置)关联, 形成实物库存记录, 可对库存物品进行跟踪和管理.
> 人或组织可以和场所关联, 那样就可以设定办公地点, 仓库管理员, 仓库的拣货员等.
#### 8. 装运(Shipment)
> 此块是用于集中追踪进货和出货记录的, 登记了物品出库(库存)或物品接收(receive)放入库存的所有痕迹
> 一次装运涉及到多个运输物品, 如装运的物品和订单项的关联, 这是是订单指定的固定数量的产品, 所以收到货时可以与订单进行核对, 同时还可以查阅装运收据中相关信息.
> 当一次货运是用于对库存物品进行出库时, 会生成拣货单(PickList)来与之关联, 以便快速的从指定仓库或库位拣出待出库物品.
> 可以创建代表一个货箱或装运实例的包裹(package), 一个箱子可以包含多个装运物品, 当装运送货目的地一致时,甚至一个箱子可以包含不同装运实例的物品.
> 货运路由(route), 同如今快递的物流记录, 记录着一个装运实例中所有包裹的运输路段(轨迹),
> - 可以将整个货运任务交给指定承运商(carrier),那样整个运输轨迹将有此商家所在公司来提供.
> - 也可以将运输路段拆分开, 其中每个路段可以指定不同的承运商(carrier)
#### 9. 会计(Accounting)
> 这个模块还是按古老且普遍接受的方式进行组织的, 如复式会计、具有分级账户的总账、日记账和过账交易及相应的条目.
> 业务实现主要基于(OMG GL)标准以及在此标准的(AR/AP)上扩展的功能, 这个标准可以很好的与(ebXML或OAGIS)标准关联起来.
> 本模块的模型设计, 允许管理多个组织的账户, 多个组织可以是任何有团体特性的组织, 如公司、事业部、内部部门等.
> - 每个组织都可以有与之关联的各种总账科目, 以便它可以使用自己的主科目表的子集进行操作
> - 每个组织也可以有自己的一套灵活的日记账, 可以尽量少用日记账功能, 这样系统可以根据标准的程序规则来触发业务事件的自动创建, 如采购订单、销售订单、发票、库存转移、付款(payment)、收据(receipts)等.
>
> 这里同时可以进行预算管理, 且可以将预算与特定的财政周期对应的实际总分类账余额进行对账.
> 追踪固定资产的使用情况也是会计功能的一部分, 如维护(maintenance)、折旧(scheduling)、人工服务(workeffort)相关的资产调度等
#### 10. 营销(Marketing)
> 在这里对营销活动相关的信息进行统一管理和跟踪.
> - 联系人列表(ContactList): 包含联系人相关的邮件(mailing)、电子邮件(email)、电话(calling))列表
> - 跟踪码: 跟踪码主要用于自动化系统,
> - 跟踪客户来源, 用于分析包括广告(advertisements)、合作关系(partnerships)、从属关系(affiliations)等特定的营销活动
> - 还可以用于佣金目的的跟进(commission)
#### 11. 人工服务(WorkEffort)
> 统一管理着人工事件(工单)及其处理的记录, 如任务(task)、项目(project)、项目阶段(phase)、里程碑(milestone)、待办事项(todo)、事件(event)、工作日程(calendar)、个人日程(timeoff)、工作流程(workflow)、活动(activity)、工艺路线(routing)、生产任务(ProductionRun)、会议(Meeting)、培训(Training)等
> 因为管理着工单, 自然要跟踪工单的执行耗时(工时-timesheet)和成果, 这将用于检查工作效率、计算人工成本、计算计时工资、计件工资等.
> 同时因为涉及到人工服务, 人会使用各种资源, 那么就需要同时记录工作场所(facility)、使用资产(asset)、干系人(party)、相关联系信息(contact)等.
> 若人工服务的实例是用于生产制造或其他产品维护的时候, 还可以追踪工作耗时、计件效率、产量等.
#### 12. 制造(Manufacturing)
> 这个模块专注于生产制造环节, 从生产成品的物料清单(BOM)计算, 到工单(ProductionRun)生成, 然后进行生产计划安排(MRP), 按工艺路线(Routing)进行生产作业, 定期提交生产进度汇总报告(Report).
> 生产环节的主要单据与作业流程的全程管理, 会涉及到车间、作业区、工位、制造设备、工人、工作计划、物料计划、半成品准备、工时记录、工人工时内生产件数等各种信息的计划与实际情况的作业记录.
#### 13. 人力资源(Humans)
> 此模块是专用于跟踪职位(positions)、职能(responsibilities)、技能(skills)、雇用情况(employment)、解雇(termination)、员工福利(benefits)、培训(training)、薪酬等级(PayGrades)、薪资偏好(PayrollPreferences)、绩效评估(PerformanceReviews)、招聘简章(recruitment)、简历(resumes)、应聘记录(applications)等各种人力资源相关的信息的.
#### 本文相关书籍
- The Data Model Resource CD, Volume 1: A Library of Universal Data Models for All Enterprises(https://www.amazon.cn/dp/0471388289)
- 数据模型资源手册 第1卷
- The Data Model Resource Book: Volume 2: A Library of Universal Data Models by Industry Types(https://www.amazon.cn/dp/0471353485)
- 数据模型资源手册 第2卷
- The Data Model Resource Book: Volume 3: Universal Patterns for Data Modeling(https://www.amazon.cn/dp/0470178450)
- 中文版: 数据模型资源手册(卷3):数据模型通用模式(https://www.amazon.cn/dp/B01N5Y4H0F)
#### 参考
https://cwiki.apache.org/confluence/display/OFBIZ/Apache+OFBiz+Project+Overview
https://cwiki.apache.org/confluence/display/OFBIZ/Chinese+-+Apache+OFBiz+Project+Overview
- OFBiz开发手册
- 关于
- 更新日志
- 快速引导
- 关于本书
- 关于作者
- 认知篇
- 认识OFBiz
- 什么是OFBiz
- 架构图析
- 依赖库
- 请求核心流程
- 获取框架
- 衍生项目
- OFBiz的特点
- 框架特性
- 业务能力
- 框架优势
- 框架劣势
- 行业解决方案
- 架构对比
- OFBiz适应症
- 适合我吗
- OFBiz中国
- 中国业界
- 优秀博客
- 基础篇
- 开发准备
- 操作系统
- 开发环境
- 框架导入IDE
- 配置运行
- 创建模块
- 模块介绍
- 模块结构
- 模块创建
- 模块载入访问
- 标准CRUD
- 文件关系
- 实体设计-Entity
- 国际化-UiLabel
- 配置菜单-Menu
- 配置请求-Controller
- 配置屏幕-Screen
- 配置表单-Form
- 配置服务-Service
- 配置业务脚本-Minilang
- 测试CRUD
- 基础进阶
- 中文环境配置
- 通用搜索服务
- 文件上传
- Form表单验证
- 导出PDF
- 导出Excel
- 发送Email
- 配置Job
- 配置视图-view-entity
- 动态请求-ajax
- 常用功能
- 加速Gradle
- 常用命令
- 修改端口
- 调试模式
- 调试项目
- 重启生效
- 数据导入
- 缓存清理
- 在线日志
- 更换数据库
- 实体设计管理
- 表数据管理
- 配置本地dtd
- 使用Static静态文件
- 验证码-RandomCode
- 主题切换-Theme
- 时区切换-TimeZone
- 语种切换-Language
- webtools在线框架管理功能介绍
- 编码规范
- 驼峰命名法
- 代码编码规范
- 实体设计规范
- 字段类型规范
- 请求命名规范
- 业务实现规范
- 提高篇
- 环境上下文
- 上下文-ftl
- 上下文-groovy
- 上下文-event
- 上下文-form
- 上下文-screen
- 上下文-minilang
- 标签API
- 实体设计-entitymodel
- 实体触发器-eeca
- 国际化-UiLabel
- 菜单-Menu
- 请求-Controller
- 屏幕-Screen
- 表单-Form
- 服务-Service
- 服务触发器-seca
- 脚本-Minilang
- 脚本-Groovy
- 模板-Freemarker
- 演示数据-Data
- PDF标签-XSL-FO
- 工具类
- 调试-Debug.java
- 对象类型-ObjectType.java
- 字符串工具-StringUtil.java
- 日期时间-UtilDateTime.java
- 通用-UtilGenerics.java
- Http-UtilHttp.java
- 综合-UtilMisc.java
- 属性-UtilProperties.java
- URL-UtilURL.java
- 校验-UtilValidate.java
- XML操作-UtilXml.java
- 高级实现
- 忽略版本控制
- 配置项目使用MySQL数据库
- 配置项目使用Postgres数据库
- 扩展支付宝支付
- Webservice公共服务
- Rest接口
- Ftl自定义宏与使用
- 接入条形码
- 接入二维码
- 自定义主题-Theme
- error页面自定义
- 接入SMS手机短信服务
- QQ微信联合登录
- 微信服务号接管
- 页面静态化
- CMS帮助中心
- 访客IP与城市定位
- 使用二级域名
- Tenant多租户应用
- date-time中国化显示
- datepicker日期控件
- 图片处理
- SSL安全证书
- 接入workflow
- 使用solr搜索引擎
- 生产服务器性能优化
- 框架篇
- 框架模块
- 模块关系
- 框架基础-base
- 通用功能-common
- 运行容器-catalina
- 实体引擎-entity
- 静态资源-images
- XML脚本-minilang
- 用户权限-security
- 服务引擎-service
- 项目启动-start
- 测试工具-testtools
- 应用站点-webapp
- 在线框架管理-webtools
- 装饰器-widget
- 核心类
- 请求核心类
- 实体核心类
- 服务核心类
- 框架原理
- Start启动过程
- 实体引擎
- 请求控制
- 服务引擎
- ECA触发器
- 实体主键生成器
- Job定时任务
- 跨模块免登陆访问
- 无处不在的UEL表达式
- cache缓存的实现
- minilang原理
- 实体相关资源加载模式
- OFBiz支持的模块目录
- OFBiz请求处理过程分析
- 权限
- 权限介绍
- 权限分布
- 权限运用
- 重要文件
- 模块加载component-load.xml
- 模块配置ofbiz-component.xml
- 站点配置web.xml
- 缓存cache.properties
- 调试debug.properties
- 综合配置general.properties
- 二维码qrcode.properties
- 安全security.properties
- 服务端统计serverstats.properties
- 启动配置start.properties
- 网络访问配置url.properties
- 装饰器配置widget.properties
- 业务篇
- 业务模块
- 业务介绍
- 模块关系
- 内容-content
- 当事人-party
- 人事-humanres
- 商品-product
- 跟进-marketing
- 订单-order
- 制造-manufacturing
- 人工服务-workeffort
- 财务-accounting
- 行业解决方案
- 电商综合应用
- 运维篇
- 运行环境
- 服务器硬件要求
- Linux服务器初始化
- JDK安装与配置
- MySQL安装与配置
- SVN客户端安装
- Nginx安装与配置
- 项目部署
- 项目父目录
- 修改端口
- 一个服务器运行多个项目实例
- 运行项目
- 常用命令
- 番外篇
- 进阶技巧
- 标准CRUD完整模板
- 参考书目与简介
- 数据模型资源手册
- Freemarker语法
- Freemarker介绍
- Groovy语法
- Groovy介绍
- Groovy比之Java
- OFBiz中的Groovy增强
- 常见问题
- Ftl中文乱码
- PDF中文乱码
- 数据库中文乱码
- Console中文乱码
- 下载文件乱码
- http链接存数据库异常
- html代码存数据库异常
- OFBiz框架精简
- OFBiz_v16.11初始化好慢 为什么?
- 怎么查看自己的项目基于OFBiz的哪个版本
- IDEA里Gradle执行命令时提示 No cached version available for offline mode 错误
- OFBiz为什么可以下载了就能直接运行起来用?
- 用IDEA手工执行Gradle指令
- 不允许你浏览这个页面
- 使用[loadDefault]或[load-demo]指令到底加载了哪些实体和数据
- OFBiz中怎么手工导入Data.xml数据
- 怎么确认一个用户是否配置并授予了某个权限
- 哪些情况下需要重启OFBiz系统
- 如何清空缓存呢?
- MySQL或PostSQL等数据库时,更新一个实体字段类型,重启OFBiz并没有生效,为什么?
- 实体添加字段,重启在数据库没看到此字段,为什么?
- Gradle项目在Eclipse中自动链接依赖的jar包
- 解决Gradle项目导入Eclipse后抛出UnsupportedConfigurationException异常
- 为Eclipse安装Gradle环境
- Eclipse配置显示工具窗口
- 用Eclipse手工执行Gradle指令
- 回答问题
- 看云使用小记