跳到主要内容
版本:Next

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)
参数类型说明
processModelProcessModel工艺模型
forceRefreshbool是否强制刷新(默认 false)

返回值FormulaApplyModel - 配方应用模型

功能说明

  • 优先从流程上下文获取已缓存的配方应用
  • 如果不存在或强制刷新,则从服务查询
  • 查询结果会缓存到流程上下文

2. GetProductionAsync - 获取生产记录

根据产品序列号查询生产记录、工单和产品信息。

protected virtual async Task<(
AssociationProductModel ProductModel,
OrderModel OrderModel,
ProductionRecordModel RecordModel)> GetProductionAsync(
ProcessModel processModel,
string serialNumber)
参数类型说明
processModelProcessModel工艺模型
serialNumberstring产品序列号

返回值:元组包含:

  • ProductModel - 产品型号信息
  • OrderModel - 工单信息
  • RecordModel - 生产记录信息

功能说明

  • 根据序列号和工位查询生产记录
  • 获取当前工序的进站信息
  • 根据工序段配置匹配正确的工单
  • 支持工序段启用和未启用两种模式

3. HasInspectionAsync - 检测点检任务

检测当前工序是否存在执行中的点检任务。

protected virtual async Task<(
bool HasInspectionMark,
InspectionPointTaskModel InspectionPointTask)> HasInspectionAsync(
ProcessModel processModel)
参数类型说明
processModelProcessModel工艺模型

返回值:元组包含:

  • HasInspectionMark - 是否存在点检任务
  • InspectionPointTask - 点检任务模型

功能说明

  • 优先检查流程上下文中的点检任务
  • 如果不存在,则查询所有点检任务提供者
  • 返回第一个找到的执行中点检任务

4. GetCurrentUser - 获取当前用户

获取当前工位的登录用户信息。

protected string GetCurrentUser(ProcessModel processModel)
参数类型说明
processModelProcessModel工艺模型

返回值string - 用户名(多个用户以逗号分隔)

流程上下文变量

该基类使用和设置的流程上下文变量:

变量名常量类型说明
FormulaApplyModelFlowItemCollection.FormulaApplyModelFormulaApplyModel配方应用模型
InspectionPointTaskModelFlowItemCollection.InspectionPointTaskModelInspectionPointTaskModel点检任务模型

使用示例

创建自定义工序节点

[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当前用户访问器,获取登录用户

注意事项

  1. 基类节点:该节点为基类,不应直接在流程中使用
  2. 配方缓存:配方应用会缓存到流程上下文,避免重复查询
  3. 工序段支持:生产记录查询支持工序段启用和未启用两种模式
  4. 点检模式:点检任务会影响多个子类节点的行为
  5. 用户信息:当前用户基于工位登录信息获取

子类节点

以下节点继承自 ProcessBusinessActivity

产品和条码类

物料类

工序和流程类

标签打印类

相关节点


最后更新时间: 2025-11-28