跳到主要内容
版本:Next

LocalQualificationJudgmentActivity - 本机合格判断

概述

属性
节点名称本机合格判断
节点描述本机合格判断步骤
节点类型业务节点
命名空间CMS.Plugin.MesSuite.Activitys
程序集CMS.Plugin.MesSuite.Activitys
分类工序步骤
排序27
发布
基类QualificationJudgmentActivity

功能说明

LocalQualificationJudgmentActivity 是本机合格判断节点,用于根据配方参数的上下限范围,对采集的参数值进行本地校验判定。

与 PLC 合格判断不同,本机判断不依赖 PLC 返回的合格信号,而是由系统根据配方参数定义的规格范围自行计算判定结果。

配置属性

属性名显示名称类型必填默认值说明
ExclusionValue指定排除检验的值double?null当参数值等于此值时跳过该参数的校验
IgnoreNull忽略空值boolfalse若采集值为空,忽略空值后将不会判断为 NG

业务逻辑

执行流程

开始


调用 LocalJudgmentAsync 方法

├─► 获取配方版本参数定义

├─► 遍历工艺参数
│ │
│ ├─► 匹配配方参数
│ │
│ ├─► 检查是否为排除值
│ │
│ └─► 调用 JudgmentAsync 判断

├─► 汇总判断结果


设置流程数据项

├─► QualityResultValue = 结果值

└─► QualityResultReason = 不合格原因


结束

判断策略扩展

本机判断支持通过 ILocalJudgmentStrategy 接口扩展判断策略:

public interface ILocalJudgmentStrategy
{
Task<(int? resultVariable, string unqualifiedReason)> JudgmentAsync(
FormulaVersion2ProcessParameterModel formulaParameter,
double? data,
bool ignoreNull = false,
string parameterIsNull = null,
string parameterOutOfRange = null);
}

系统会依次调用注册的判断策略,直到某个策略返回非空结果。如果所有策略都返回空,则使用基类的默认判断逻辑。

流程数据项

输入数据项

数据项类型说明
ApplicationDataProcessModel工艺模型
OrderModelOrderModel工单模型
FormulaApplyModelFormulaApplyModel配方应用模型
ParameterCollectDataIReadOnlyDictionary<string, IVariableValue>参数采集数据

输出数据项

数据项类型说明
QualityResultValueint质量结果值(1=合格,2=不合格)
QualityResultReasonstring不合格原因

依赖服务

服务接口说明
IFormulaProvider配方提供者,获取配方版本信息
IBusinessTextProvider业务文本提供者
ILocalJudgmentStrategy本机判断策略(可选,支持多个)

使用示例

基本配置

<LocalQualificationJudgmentActivity Name="本机合格判断">
<ExclusionValue>-999</ExclusionValue>
<IgnoreNull>false</IgnoreNull>
</LocalQualificationJudgmentActivity>

忽略空值配置

当某些参数可能采集不到值时,可以配置忽略空值:

<LocalQualificationJudgmentActivity Name="本机合格判断">
<IgnoreNull>true</IgnoreNull>
</LocalQualificationJudgmentActivity>

排除特定值

当参数值为特定值(如 -999 表示无效)时跳过校验:

<LocalQualificationJudgmentActivity Name="本机合格判断">
<ExclusionValue>-999</ExclusionValue>
</LocalQualificationJudgmentActivity>

典型流程配置

参数采集 → 本机合格判断 → 条件分支(合格/不合格)
<ParameterCollectActivity Name="参数采集">
<!-- 采集配置 -->
</ParameterCollectActivity>

<LocalQualificationJudgmentActivity Name="本机合格判断">
<IgnoreNull>false</IgnoreNull>
</LocalQualificationJudgmentActivity>

<ConditionActivity Name="质量判断">
<Condition>Flow.DataItems["QualityResultValue"] == 1</Condition>
<TrueBranch>合格处理</TrueBranch>
<FalseBranch>不合格处理</FalseBranch>
</ConditionActivity>

扩展判断策略

实现自定义策略

public class CustomJudgmentStrategy : ILocalJudgmentStrategy
{
public Task<(int? resultVariable, string unqualifiedReason)> JudgmentAsync(
FormulaVersion2ProcessParameterModel formulaParameter,
double? data,
bool ignoreNull = false,
string parameterIsNull = null,
string parameterOutOfRange = null)
{
// 自定义判断逻辑
if (formulaParameter.ParameterName == "特殊参数")
{
// 特殊处理
return Task.FromResult<(int?, string)>((1, string.Empty));
}

// 返回 null 表示使用下一个策略或默认逻辑
return Task.FromResult<(int?, string)>((null, null));
}
}

注册策略

services.AddTransient<ILocalJudgmentStrategy, CustomJudgmentStrategy>();

相关节点

注意事项

  1. 本机判断需要配方参数定义上下限范围才能进行校验
  2. 参数采集节点必须在本节点之前执行
  3. 排除值功能仅对同一参数组内有多个参数时生效
  4. 自定义判断策略按注册顺序依次执行