3. 业务对象与业务元素基础
在 Teamcenter BMIDE 中做数据模型扩展,第一步不是急着打开编辑器,而是先弄清 BMIDE 里到底有哪些“可被建模的东西”。BMIDE 把数据模型拆成两类基本构件:业务对象(Business Object,简称 BO)和业务元素(Business Element,简称 BE)。理解这两者的分工,以及它们各自携带的属性、关系、操作和标识符,是后续所有扩展工作的地基。
业务对象:可实例化的业务实体
业务对象是 Teamcenter 中真正承载业务数据的实体类型,它最终会在数据库里对应一张业务表,并可以被创建成一条条具体的对象实例。例如 Item(物料)、Document(文档)、Folder(文件夹)、ChangeNotice(变更通知)都是典型的业务对象。当用户在客户端新建一个物料时,系统实际上是在实例化 Item 这个业务对象。
业务对象在 BMIDE 中具有几个关键特征:
- 可实例化:能通过“新建”操作产生真实数据记录,拥有自己的对象 UID。
- 可继承:业务对象之间可以建立父子继承关系,子对象自动获得父对象的属性、关系和操作。
- 可持久化:其数据最终落到 Teamcenter 数据库的业务表中。
- 可挂接业务逻辑:可以绑定扩展点、条件、命名规则等。
BMIDE 中常见的业务对象基类包括 POM_object(所有持久化对象的根)、WorkspaceObject(工作区对象,如 Item、Folder)、BusinessObject(业务对象基类)等。做扩展时,通常不是直接改这些基类,而是从它们派生出自己的子类型,例如从 Item 派生一个 MyCompanyPart。
业务元素:不可实例化的抽象构件
业务元素与业务对象最大的区别在于:业务元素不能被实例化,它只用于被业务对象“引用”或“组合”。业务元素本身不产生独立的数据记录,而是作为业务对象的一部分存在。典型例子包括:
Form(表单):用于组织一组属性,被 Item 或 Document 引用。Dataset(数据集):描述文件集合及其类型,被 ItemRevision 引用。ListOfValues(值列表):为属性提供可选值集合。Note、Condition等辅助构件。
业务元素在 BMIDE 中同样可以定义属性、关系和操作,但它不能被单独创建成一条业务数据。它更像是一个“模板”或“结构定义”,通过关系挂接到业务对象上,从而影响业务对象的行为和界面表现。
属性、关系、操作与标识符
无论是业务对象还是业务元素,它们都由四类核心成员构成:
属性(Property)描述对象的数据字段,例如 item_id、object_name、revision。属性有明确的数据类型(字符串、整型、日期、布尔、引用等),并可以设置是否必填、是否可搜索、默认值等。BMIDE 中属性分为持久属性(存库)和运行时属性(计算得出)。
关系(Relation)描述对象之间的连接,例如 Item 与 ItemRevision 之间的版本关系、ItemRevision 与 Dataset 之间的引用关系。关系本身也是一种业务元素,它定义了源端、目标端、基数和方向。
操作(Operation)定义对象可以执行的动作,例如 create、delete、revise、checkout。操作可以绑定扩展点,在特定时机插入自定义逻辑。
标识符(Identifier)用于唯一标识对象,例如对象 UID、item_id 加版本号组成的业务键。标识符决定了对象在系统中的可寻址性和唯一性约束。
BMIDE 中的表示与继承关系
在 BMIDE 的模型树中,业务对象和业务元素分别位于不同的节点下。业务对象通常挂在 Business Objects 节点,业务元素挂在 Business Elements 节点。两者都支持继承,子类型会继承父类型的全部属性、关系和操作,并可以覆盖或新增。
下面这张图展示了业务对象与业务元素在 BMIDE 中的结构关系,以及它们各自携带的属性、关系、操作和标识符:
实际建模中的判断原则
在实际 BMIDE 扩展中,判断该建业务对象还是业务元素,可以遵循一条简单原则:如果这个类型需要被用户单独创建、拥有独立生命周期和 UID,就建业务对象;如果它只是作为某个对象的组成部分或可选值集合存在,就建业务元素。
例如,企业需要一种“自制件”物料类型,它比标准 Item 多出“材料牌号”和“热处理状态”两个属性。此时应新建一个业务对象 MyPart,继承自 Item,并在其上新增这两个属性。而如果企业需要一套统一的“表面处理选项”供多个属性下拉选择,则应新建一个业务元素 SurfaceTreatmentLOV,作为值列表被相关属性引用。
标识符与命名规则
标识符在 BMIDE 中通常通过 Identifier 业务元素或属性上的 isIdentifying 标记来定义。例如 Item 的 item_id 是业务标识符,而系统内部的 UID 是技术标识符。业务标识符用于用户可见的唯一性约束,技术标识符用于系统内部引用。在自定义业务对象时,应明确指定哪个属性作为业务标识符,并考虑是否需要自动生成规则(如 PREFIX-YYYYMMDD-####)。
理解业务对象与业务元素的区别、掌握属性/关系/操作/标识符四类成员的配置方式,是后续学习扩展点、条件、命名规则和部署流程的前提。在 BMIDE 中建模时,始终先问自己:这个类型需要被实例化吗?它的数据是独立存储还是依附于其他对象?回答清楚这两个问题,模型结构就不会跑偏。