LocalQualificationJudgmentActivity - 本机合格判断
概述
| 属性 | 值 |
|---|---|
| 节点名称 | 本机合格判断 |
| 节点描述 | 本机合格判断步骤 |
| 节点类型 | 业务节点 |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 程序集 | CMS.Plugin.MesSuite.Activitys |
| 分类 | 工序步骤 |
| 排序 | 27 |
| 发布 | 是 |
| 基类 | QualificationJudgmentActivity |
功能说明
LocalQualificationJudgmentActivity 是本机合格判断节点,用于根据配方参数的上下限范围,对采集的参数值进行本地校验判定。
与 PLC 合格判断不同,本机判断不依赖 PLC 返回的合格信号,而是由系统根据配方参数定义的规格范围自行计算判定结果。
配置属性
| 属性名 | 显示名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| ExclusionValue | 指定排除检验的值 | double? | 否 | null | 当参数值等于此值时跳过该参数的校验 |
| IgnoreNull | 忽略空值 | bool | 否 | false | 若采集值为空,忽略空值后将不会判断为 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);
}
系统会依次调用注册的判断策略,直到某个策略返回非空结果。如果所有策略都返回空,则使用基类的默认判断逻辑。
流程数据项
输入数据项
| 数据项 | 类型 | 说明 |
|---|---|---|
| ApplicationData | ProcessModel | 工艺模型 |
| OrderModel | OrderModel | 工单模型 |
| FormulaApplyModel | FormulaApplyModel | 配方应用模型 |
| ParameterCollectData | IReadOnlyDictionary<string, IVariableValue> | 参数采集数据 |
输出数据项
| 数据项 | 类型 | 说明 |
|---|---|---|
| QualityResultValue | int | 质量结果值(1=合格,2=不合格) |
| QualityResultReason | string | 不合格原因 |
依赖服务
| 服务接口 | 说明 |
|---|---|
| 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>();
相关节点
- QualificationJudgmentActivity - 合格判断基类
- PLCQualificationJudgmentActivity - PLC 合格判断
- CompositeQualificationJudgmentActivity - 综合合格判断
- ParameterCollectActivity - 参数采集节点
注意事项
- 本机判断需要配方参数定义上下限范围才能进行校验
- 参数采集节点必须在本节点之前执行
- 排除值功能仅对同一参数组内有多个参数时生效
- 自定义判断策略按注册顺序依次执行