GenerateCodeActivity - 生成码
概述
GenerateCodeActivity 是一个 MES 专用的条码生成节点,用于在生产过程中根据配置的条码规则自动生成产品条码。该节点支持多种条码匹配方式,包括产品识别码匹配、指定条码规则和自动匹配当前产品等。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 生成码 |
| 类名 | GenerateCodeActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | ProcessBusinessActivity |
| 分类 | 工序步骤 |
| 排序 | 7 |
| 发布 | 是 |
配置说明
该节点通过流程上下文变量进行配置,无需直接配置属性。
输入变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| GenerateCode_ProductVariable_Value | GenerateCodeProductVariableValue | string | 产品识别码,用于匹配条码规则 |
| GenerateCode_CustomerNameVariable_Value | GenerateCodeCustomerNameVariableValue | string | 客户名称,用于筛选适用的条码规则 |
| GenerateCode_BarcodeRule | GenerateCodeBarcodeRule | string | 指定的条码规则 ID(GUID 格式) |
输出变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| GenerateCode_BarcodeVariable_Value | GenerateCodeBarcodeVariableValue | string | 生成的条码结果 |
| GenerateCode_Description_Value | GenerateCodeDescriptionValue | string | 生成条码异常说明(失败时) |
业务逻辑
执行流程
┌─────────────────────────────────────────────────────────────┐
│ GenerateCodeActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ └─ 工艺模型 GenerateCode != Enable → 返回禁用说明 │
├─────────────────────────────────────────────────────────────┤
│ 2. 确定条码规则(三种方式) │
│ ├─ 方式一:产品识别码匹配 │
│ │ └─ 根据识别码查找产品 → 匹配条码规则 │
│ ├─ 方式二:指定条码规则 │
│ │ └─ 直接使用配置的条码规则 ID │
│ └─ 方式三:自动匹配当前产品 │
│ └─ 从配方/工单/点检任务获取产品 → 匹配条码规则 │
├─────────────────────────────────────────────────────────────┤
│ 3. 生成条码 │
│ └─ 调用 IBarcodeProvider.GenerateAsync() │
├─────────────────────────────────────────────────────────────┤
│ 4. 输出结果 │
│ ├─ 成功 → 存储条码到上下文,缓存条码 │
│ └─ 失败 → 存储错误信息到上下文 │
└─────────────────────────────────────────────────────────────┘
条码规则匹配优先级
-
产品识别码匹配(最高优先级)
- 当
GenerateCode_ProductVariable_Value有值时 - 根据识别码查找产品型号
- 结合工序和客户名称匹配条码规则
- 当
-
指定条码规则
- 当
GenerateCode_BarcodeRule有值时 - 直接使用指定的条码规则 ID
- 当
-
自动匹配当前产品(默认)
- 从配方下发信息获取产品
- 或从当前工序段的工单获取产品
- 或从点检任务获取产品
产品获取逻辑
┌─────────────────────────────────────────────────────────────┐
│ 获取当前产品 │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查配方下发方式 │
│ └─ 模式2(工序识别产品时下发)→ 返回 null │
├─────────────────────────────────────────────────────────────┤
│ 2. 从配方下发信息获取 │
│ └─ 有配方信息 → 返回产品 │
├─────────────────────────────────────────────────────────────┤
│ 3. 从工单获取 │
│ └─ 查询当前工序段的生产工单 → 返回产品 │
├─────────────────────────────────────────────────────────────┤
│ 4. 从点检任务获取 │
│ └─ 存在点检任务 → 返回点检任务中的产品 │
└─────────────────────────── ──────────────────────────────────┘
使用示例
基本流程配置
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ InboundInitialize │────▶│ GenerateCodeActivity│────▶│ PrintLabelActivity│
│ 入站初始化 │ │ 生成条码 │ │ 打印标签 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
使用 产品识别码匹配
{
"Activities": [
{
"Name": "设置产品识别码",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_ProductVariable_Value",
"VariableValue": "PROD-001"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
指定条码规则
{
"Activities": [
{
"Name": "设置条码规则",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_BarcodeRule",
"VariableValue": "550e8400-e29b-41d4-a716-446655440000"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
指定客户名称
{
"Activities": [
{
"Name": "设置客户",
"Type": "VariableWriteActivity",
"VariableName": "GenerateCode_CustomerNameVariable_Value",
"VariableValue": "客户A"
},
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
}
]
}
获取生成结果
{
"Activities": [
{
"Name": "生成条码",
"Type": "GenerateCodeActivity"
},
{
"Name": "读取条码",
"Type": "VariableReadActivity",
"VariableName": "GenerateCode_BarcodeVariable_Value"
}
]
}
错误处理
| 错误场景 | 错误信息 | 处理建议 |
|---|---|---|
| 功能未启用 | 生成码禁用 | 在工艺配置中启用生成码功能 |
| 产品识别码无效 | 条码生成失败:{识别码} 找不到对应产品型号 | 检查产品识别码是否正确 |
| 条码规则格式错误 | 条码生成失败:{规则} 条码规则格式不匹配 | 确保条码规则为有效的 GUID |
| 未找到产品 | 条码生成失败:未找到产品型号 | 确保有有效的工单或配方下发 |
| 条码规则为空 | 条码生成失败:生成条码规则不能为空 | 配置条码规则或确保产品有关联的条码规则 |
| 生成失败 | 条码生成失败:{结果}, {错误信息} | 检查条码规则配置和序列号状态 |
依赖服务
| 服务接口 |
|---|