ProcessBusinessActivity - 工序业务活动
概述
ProcessBusinessActivity 是 MES 专用节点的基类,继承自 BusinessActivity,为所有工序相关的业务节点提供通用的基础设施。该类封装了配方应用、生产记录查询、点检任务检测、当前用户获取等常用功能,简化了工序节点 的开发。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 工序业务 |
| 类名 | ProcessBusinessActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | BusinessActivity |
| 分类 | 工序步骤 |
| 发布 | 否 |
| 排序 | 1 |
继承关系
BusinessActivity (FlowManagement.Abstractions)
└── ProcessBusinessActivity (MesSuite.Activitys)
├── GenerateCodeActivity
├── InboundInitializeActivity
├── InboundDetectionActivity
│ ├── DuplicateCodeDetectionActivity
│ ├── ProductStateDetectionActivity
│ ├── MissingProcessDetectionActivity
│ └── ProductAutomaticRepairActivity
├── OutboundInitializeActivity
├── MaterialDetectionActivity
├── MaterialVerificationActivity
├── MaterialDeductionActivity
├── MaterialIntegrityDetectionActivity
├── QualificationJudgmentActivity
├── DistributeFormulaActivity
├── ParameterCollectActivity
├── PrintLabelActivity
└── ... (其他工序节点)
提供的通用方法
1. InitFormulaApplyModel - 初始化配方应用模型
获取当前工序应用的配方信息。
protected virtual async Task<FormulaApplyModel> InitFormulaApplyModel(
ProcessModel processModel,
bool forceRefresh = false)
| 参数 | 类型 | 说明 |
|---|---|---|
| processModel | ProcessModel | 工艺模型 |
| forceRefresh | bool | 是否强制刷新(默认 false) |
返回值:FormulaApplyModel - 配方应用模型
功能说明:
- 优先从流程上下文获取已缓存的配方应用
- 如果不存在或强制刷新,则从服务查询
- 查询结果会缓存到流程上下文
2. GetProductionAsync - 获取生产记录
根据产品序列号查询生产记录、工单和产品信息。
protected virtual async Task<(
AssociationProductModel ProductModel,
OrderModel OrderModel,
ProductionRecordModel RecordModel)> GetProductionAsync(
ProcessModel processModel,
string serialNumber)
| 参数 | 类型 | 说明 |
|---|---|---|
| processModel | ProcessModel | 工艺模型 |
| serialNumber | string | 产品序列号 |
返回值:元组包含:
ProductModel- 产品型号信息OrderModel- 工单信息RecordModel- 生产记录信息
功能说明:
- 根据序 列号和工位查询生产记录
- 获取当前工序的进站信息
- 根据工序段配置匹配正确的工单
- 支持工序段启用和未启用两种模式
3. HasInspectionAsync - 检测点检任务
检测当前工序是否存在执行中的点检任务。
protected virtual async Task<(
bool HasInspectionMark,
InspectionPointTaskModel InspectionPointTask)> HasInspectionAsync(
ProcessModel processModel)
| 参数 | 类型 | 说明 |
|---|---|---|
| processModel | ProcessModel | 工艺模型 |
返回值:元组包含:
HasInspectionMark- 是否存在点检任务InspectionPointTask- 点检任务模型
功能说明:
- 优先检查流程上下文中的点检任务
- 如果不存在,则查询所有点检任务提供者
- 返回第一个找到的执行中点检任务
4. GetCurrentUser - 获取当前用户
获取当前工位的登录用户信息。
protected string GetCurrentUser(ProcessModel processModel)
| 参数 | 类型 | 说明 |
|---|---|---|
| processModel | ProcessModel | 工艺模型 |
返回值:string - 用户名(多个用户以逗号分隔)
流程上下文变量
该基类使用和设置的流程上下文变量:
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| FormulaApplyModel | FlowItemCollection.FormulaApplyModel | FormulaApplyModel | 配方应用模型 |
| InspectionPointTaskModel | FlowItemCollection.InspectionPointTaskModel | InspectionPointTaskModel | 点检任务模型 |
使用示例
创建自定义工序节点
[Design("自定义工序", "自定义工序步骤"), Category("工序步骤")]
[Serializable]
public class CustomProcessActivity : ProcessBusinessActivity
{
public override async Task ProcessAsync(ProcessflowEventArgs args)
{
// 获取工艺模型
var processModel = Flow.DataItems.ApplicationData as ProcessModel;
// 使用基类方法获取配方应用
var formulaModel = await InitFormulaApplyModel(processModel);
// 检查是否有点检任务
(var hasInspection, var task) = await HasInspectionAsync(processModel);
// 获取当前用户
var currentUser = GetCurrentUser(processModel);
// 自定义业务逻辑
// ...
}
}
获取生产记录
public override async Task ProcessAsync(ProcessflowEventArgs args)
{
var processModel = Flow.DataItems.ApplicationData as ProcessModel;
var serialNumber = Flow.DataItems[FlowItemCollection.SerialNumber]?.ToString();
// 获取生产记录
var (product, order, record) = await GetProductionAsync(processModel, serialNumber);
if (product != null)
{
Flow.Logger.LogMessage($"产品型号: {product.Name}");
}
if (order != null)
{
Flow.Logger.LogMessage($"工单号: {order.Code}");
}
if (record != null)
{
Flow.Logger.LogMessage($"进站时间: {record.EntryTime}");
}
}
依赖服务
| 服务接口 | 说明 |
|---|---|
| IFormulaProvider | 配方服务,获取配方应用信息 |
| IProductionManager | 生产管理服务,查询生产记录 |
| IOrderProvider | 工单服务,获取工单信息 |
| IProductProvider | 产品服务,获取产品信息 |
| ISettingManager | 配置管理服务,获取系统配置 |
| IInspectionPointTaskProvider | 点检任务服务,查询点检任务 |
| ICMSCurrentUserAccessor | 当前用户访问器,获取登录用户 |
注意事项
- 基类节 点:该节点为基类,不应直接在流程中使用
- 配方缓存:配方应用会缓存到流程上下文,避免重复查询
- 工序段支持:生产记录查询支持工序段启用和未启用两种模式
- 点检模式:点检任务会影响多个子类节点的行为
- 用户信息:当前用户基于工位登录信息获取
子类节点
以下节点继承自 ProcessBusinessActivity:
产品和条码类
- GenerateCodeActivity - 生成码
- DuplicateCodeDetectionActivity - 重码校验
- InboundInitializeActivity - 进站初始化
- OutboundInitializeActivity - 出站初始化
物料类
- MaterialDetectionActivity - 物料检测
- MaterialVerificationActivity - 物料校验
- MaterialDeductionActivity - 物料扣减
工序和流程类
- QualificationJudgmentActivity - 质量判定
- DistributeFormulaActivity - 配方下发
- ParameterCollectActivity - 参数采集
标签打印类
- PrintLabelActivity - 标签打印
相关节点
- BusinessActivity - 业务活动基类
- InboundDetectionActivity - 进站检测基类
最后更新时间: 2025-11-28