a92a418d7f
Read-only export of DEV vd03 and QA vq03 (2026-11-12): the only
Children["DelmiaRecv"] user is CvdReactor.ProcessRecipeDownload (script 4,
identical on both envs; DEV 3 / QA 9 instances), and the only ScriptAlarm
.Severity reader is DEV TestMesMachine.AlarmStatus (script 42, SBTEST01/02).
QA has no #131 work.
Adds the original (rollback) and fixed bodies, a guarded check/apply/rollback
script that re-sends every script field, and the apply plan: #52 any time,
#131 with or after the dd4f1c2a binary. The old #131 body still compiles on
main but returns banded values; the fixed body is what fails to compile on the
deployed binaries. Rig evidence for both gates is in the README.
Refs #52 #131
Claude-Session: https://claude.ai/code/session_01GT67ACmpMR7b9LGRPLijMi
26 lines
1.6 KiB
C#
26 lines
1.6 KiB
C#
// Generic DELMIA recipe-download — performed DIRECTLY on the composed DelmiaReceiver child
|
|
// (mirrors how MesMoveIn writes the MESReceiver child) instead of delegating via CallScript.
|
|
// No side logic; the receiver's own DelmiaReceiver.Download method holds the same handshake.
|
|
var recv = Children["DelmiaReceiver"];
|
|
System.Func<object,bool> IsTrue = v => { var s=v?.ToString(); return (v is bool b && b)||s=="1"||string.Equals(s,"true",System.StringComparison.OrdinalIgnoreCase); };
|
|
System.Func<string,object?> P = k => Parameters.ContainsKey(k) ? Parameters[k] : null;
|
|
if (!IsTrue(recv.Attributes["ReadyFlag"]))
|
|
return new { Result=false, ResultText="Receiver ready flag not set to true" };
|
|
try {
|
|
recv.Attributes["RecipeProcessedFlag"] = false;
|
|
var data = new System.Collections.Generic.Dictionary<string, object?> {
|
|
{ "DownloadPath", P("DownloadPath") },
|
|
{ "WorkOrderNumber", P("WorkOrderNumber") },
|
|
{ "PartNumber", P("PartNumber") },
|
|
{ "JobStepNumber", P("JobStepNumber") },
|
|
{ "Username", P("Username") },
|
|
};
|
|
if (!await recv.Attributes.WriteBatchAndWaitAsync(data, "RecipeDownloadFlag", true, "RecipeProcessedFlag", true, System.TimeSpan.FromSeconds(25)))
|
|
return new { Result=false, ResultText="Timeout waiting for recipe to be processed" };
|
|
return new {
|
|
Result = IsTrue(recv.Attributes["RecipeProcessResult"]),
|
|
ResultText = recv.Attributes["RecipeProcessResultText"]?.ToString() ?? ""
|
|
};
|
|
} catch (Exception ex) {
|
|
return new { Result=false, ResultText="RecipeDownload failed: " + ex.Message };
|
|
} |