OPM 建模基础
掌握复杂系统知识建模的核心语义、结构表达与评审方法
什么是 OPM?
OPM(Object-Process Methodology,对象-过程方法)是智绘采用的核心建模方法, 用于把复杂系统知识组织成统一、可评审、可复用的结构化表达。它通过同一套图形语言同时表达系统的结构(对象) 与行为(过程),并把状态、关系与约束纳入同一模型,帮助团队围绕同一份知识资产协作。
对象(Object)
表示系统中的实体,是行为的载体。例如:机器、工件、订单、用户等。
过程(Process)
表示系统的变化与活动,是模型中承载执行逻辑和流程演进的核心。例如:加工、传输、检验、生成订单等。
状态(State)
表示对象在行为执行过程中的状态变化。例如:空闲、忙碌、已完成、待处理等。
OPM 基本元素
1. 对象(Object)
对象用矩形表示,是系统中持续存在的实体。
对象的特征:
- 持续性:在系统运行期间持续存在
- 属性:可以具有多个属性值
- 状态:可以有多个不同的状态
对象示例:
制造系统中的对象:
- 机器:执行加工任务的设备
- 工件:待加工的产品
- 操作员:操作机器的人员
- 订单:包含生产任务的订单
对象的图形表示(矩形)
2. 过程(Process)
过程用椭圆表示,是系统中的动态行为或转换。
过程的特征:
- 瞬时性:在特定时间发生,然后结束
- 转换:改变对象的状态或属性
- 触发:可以被条件触发
过程示例:
制造系统中的过程:
- 加工:将原材料加工成产品
- 运输:将工件从一个位置移动到另一个位置
- 检验:检查产品质量
- 生成订单:创建新的生产订单
过程的图形表示(椭圆)
3. 状态(State)
状态用圆角矩形表示,描述对象在某一时刻的特定情况。
状态的特征:
- 从属性:状态必须属于某个对象
- 互斥性:对象在同一时刻只能处于一个状态
- 转换:通过过程从一个状态转换到另一个状态
状态示例:
机器对象的状态:
- 空闲:机器没有任务
- 忙碌:机器正在加工
- 故障:机器出现故障
- 维护:机器正在维护
状态的图形表示(圆角矩形)
OPM 连线类型
连线用于表达对象和过程之间的关系。智绘 支持多种连线类型:
Instrument Link(工具/手段链接)
语义:对象作为过程的工具或手段
示例:机器 → 加工(机器用于执行加工过程)
图形:实线箭头,从对象指向过程
Agent Link(代理/执行者链接)
语义:对象作为过程的执行者或代理
示例:操作员 → 操作(操作员执行操作过程)
图形:带圆圈的箭头,从对象指向过程
Result Link(结果链接)
语义:过程生成或产生对象
示例:加工 → 成品(加工过程生成成品)
图形:实线箭头,从过程指向对象
Consumption Link(消耗链接)
语义:过程消耗对象
示例:原材料 → 加工(加工过程消耗原材料)
图形:箭头末端为三角形,从对象指向过程
Effect Link(效果链接)
语义:过程改变对象的状态
示例:加工 → 工件(加工过程改变工件状态)
图形:虚线箭头,从过程指向对象
Invocation Link(调用链接)
语义:一个过程触发或调用另一个过程
示例:检验完成 → 包装(检验完成后触发包装过程)
图形:虚线箭头,从一个过程指向另一个过程
Event Link(事件链接)
语义:对象状态变化触发过程
示例:订单[新建] → 生产计划(新建订单触发生产计划)
图形:虚线箭头,从状态指向过程
Aggregation(聚合关系)
语义:对象由其他对象组成
示例:汽车包含引擎、车轮、车身
图形:三角形连接,表示"部分-整体"关系
Generalization(泛化关系)
语义:对象之间的继承关系
示例:车辆是汽车、卡车的父类
图形:空心三角形箭头
多视图建模
智绘 支持多视图分层建模,允许您将复杂系统分解为多个层次, 每个视图聚焦于系统的特定方面。
视图层次结构
- 顶层视图(System View):展示系统的整体结构和主要组件
- 中层视图(Component View):展开某个对象或过程的内部细节
- 底层视图(Detail View):展示最细粒度的实现细节
创建子视图
- 右键点击对象或过程节点
- 选择 "展开到新视图"
- 系统自动创建子视图,并在视图树中显示
- 在子视图中可以添加更详细的元素
视图导航
- 通过左侧的视图树切换不同视图
- 双击已展开的节点可以进入其子视图
- 使用面包屑导航返回上层视图
建模最佳实践
1. 命名规范
- 对象:使用名词,例如"机器"、"工件"、"订单"
- 过程:使用动词,例如"加工"、"传输"、"检验"
- 状态:使用形容词或状态描述,例如"空闲"、"忙碌"、"已完成"
- 保持一致:在整个模型中使用统一的命名风格
2. 适当的抽象层次
- 顶层视图:3-7 个主要元素
- 中层视图:5-15 个元素
- 避免在单个视图中放置过多元素(超过 20 个)
- 使用子视图来组织复杂的逻辑
3. 清晰的布局
- 使用网格对齐功能保持整齐
- 遵循从左到右、从上到下的流程方向
- 避免连线交叉,必要时使用中间节点
- 使用自动布局功能快速整理
4. 合理使用连线
- 确保每个过程至少有一个输入(Instrument 或 Agent)
- 避免过程之间直接连线(除了 Invocation)
- 使用状态来表达对象的变化
- 为连线添加标签说明特殊关系
5. 文档和注释
- 为每个节点添加描述信息
- 在属性面板中记录设计决策
- 使用注释节点添加额外说明
- 定期进行合规性检查
实战示例:空中任务总控行为模型
本示例源自项目库中的“空中任务总控行为模型”,用于协调战斗机在巡逻、交战、规避和返航之间的行为切换。
场景描述
当任务被激活后,飞机首先进入空中巡逻流程;若雷达发现目标则评估交战条件并发起打击; 当探测到威胁或油量不足时,会切换到规避或返回基地,以保证飞机安全并完成任务。
建模步骤
步骤 1:识别核心对象
- 通用任务执行条件:汇聚“油量充足”“健康良好”“任务未取消”等基础状态,为所有任务提供入口。
- 交战任务执行条件:在通用条件基础上要求“目标存活”和“弹药未耗尽”,控制是否可以继续攻击。
- 规避任务执行条件:当“威胁存在”时构成规避触发器。
- 目标发现 / 威胁发现:感知对象,用于驱动交战或规避流程。
- 目标已被摧毁、油量过低:决定后续流程,例如退出交战或转入返航。
步骤 2:识别关键过程
- 空中巡逻:包含“获取下一个巡逻点”“飞向航点”等子过程,保持空域覆盖。
- 执行交战:由“根据目标选择最佳武器”“机动以进入射程”“武器开火”等过程组成,直到“目标已被摧毁”。
- 规避威胁:先“计算规避机动”,根据需要“执行规避机动”并“释放干扰弹/箔条”。
- 返回基地:根据情况“计算飞往最近基地的航线”,执行“飞往基地”,并按油量选择“紧急降落”或“正常降落”。
步骤 3:定义状态与条件
- 到达巡逻点、目标在武器射程内:作为过程结果的状态对象,用于判断是否进入下一步。
- 有对抗措施可用:在规避流程中充当 Instrument,控制是否可以释放干扰弹。
- 威胁存在、任务被激活:作为事件对象,通过 Event 或 Invocation Link 驱动流程转换。
步骤 4:组织多视图
- 顶层视图“飞机任务总控”聚合巡逻、交战、规避、返航等主流程。
- 子视图“1.4 空中巡逻”“1.5 执行交战”等分别展开内部步骤,使复杂逻辑分层呈现。
- 条件类对象放在专门视图(如“1.1 通用任务执行条件”),便于复用和维护。
空中任务总控行为模型的 OPM 示意
常见错误和解决方案
错误 1:过程没有输入
问题:过程节点没有任何 Instrument 或 Agent 连线。
解决:添加执行该过程所需的对象或代理。
错误 2:对象直接连接对象
问题:两个对象之间直接连线(非聚合或泛化)。
解决:使用过程作为中介,表达对象之间的转换关系。
错误 3:过程直接连接过程
问题:两个过程之间使用了错误的连线类型。
解决:使用 Invocation Link 或通过对象/状态间接连接。
错误 4:状态孤立存在
问题:状态节点没有附属于任何对象。
解决:将状态作为对象的子节点或使用状态转换连线。