跳到主要内容
版本:Next

LMES 生成码流程处理逻辑

本文档详细描述了生成码环节(GenerateCodeActivity)的处理逻辑,该环节负责根据一系列规则和输入生成唯一条码。

流程图

详细处理步骤

1. 启动与功能检查

当流程流转到“生成码”环节时,系统首先会从流程的上下文数据(ProcessModel​)中,判断 GenerateCode​ 功能是否处于**启用(Enable)**状态。

  • :如果功能启用,流程继续执行。
  • :如果功能禁用,系统会在流程变量中记录“生成码功能已禁用”的描述,并直接结束当前环节。

2. 读取上下文信息

系统会从流程数据(Flow.DataItems)中读取以下关键信息,用于后续的条码生成:

  • 产品识别码 (GenerateCodeProductVariableValue):用于唯一标识产品的代码,优先级最高。
  • 客户名称 (GenerateCodeCustomerNameVariableValue):用于在某些场景下筛选特定的条码规则。
  • 条码规则ID (GenerateCodeBarcodeRule):直接指定使用的条码生成规则的GUID。

3. 确定条码生成规则

系统会根据读取到的信息,按照以下优先级顺序来确定使用哪一个条码生成规则(barcodeId):

3.1. 依据“产品识别码”

如果提供了产品识别码

  1. 系统使用该识别码查询对应的产品型号(ProductModel)。
  2. 如果找不到产品型号,流程将记录错误信息并终止。
  3. 如果找到产品,系统将结合工段ID产品ID,查询最匹配的条码生成规则。

3.2. 依据“条码规则ID” (隐藏功能,二开扩展)

如果未提供产品识别码,但直接指定了条码规则ID

  1. 系统会尝试将该字符串解析为 GUID
  2. 如果解析失败,流程将记录错误信息并终止。
  3. 如果解析成功,则直接使用此 GUID 作为条码生成规则ID。

3.3. 依据当前上下文(工单/配方)

如果以上信息均未提供:

  1. 系统会调用 GetCurrentProduct​ 方法,尝试从当应用配方(Formula) 、**工单(Order)点检任务(Inspection Task)**中推断出当前正在生产的产品。
  2. 如果无法确定当前产品,流程将记录错误信息并终止。
  3. 如果成功获取到产品信息,系统将使用该产品ID工序ID和可选的客户名称,来查询匹配的条码生成规则。

4. 生成条码

在成功确定条码生成规则ID(barcodeId)后:

  1. 如果 barcodeId 为空(即未找到任何适用规则),流程将记录错误信息并终止。
  2. 系统调用条码服务(IBarcodeProvider.GenerateAsync​),传入 barcodeId、工序ID和工位ID,请求生成新的条码。

5. 下发生成结果

条码生成服务的返回结果将决定流程的最终状态:

  • 成功

    • 生成的条码字符串会被写入流程数据 GenerateCodeBarcodeVariableValue 中。
    • 系统会记录一条包含生成码内容的成功日志。
  • 失败

    • 失败原因和相关的错误信息会被写入流程数据 GenerateCodeDescriptionValue 中。
    • 系统会记录一条警告日志,包含详细的失败原因。

6. 结束

完成结果下发后,GenerateCodeActivity 环节的逻辑执行完毕,流程将根据设计继续流转到下一个步骤。后续的信号复位、结果清空等操作由流程中的其他环节负责。