created transaction queue to process database writes and deletes in first in first out order

This commit is contained in:
Infineon\StieberD
2025-06-24 13:25:47 -07:00
parent 52499b7616
commit bcdfbe0534
4 changed files with 403 additions and 138 deletions

View File

@ -865,108 +865,20 @@ return
WRITE_RECORD:
StartTick = GetTickCount()
StartTick = GetTickCount()
MetricName = 'WriteRecord'
WONo = Record<RDS_WO$>
ReactType = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
EpiPro = (ReactType EQ 'EPP')
GaN = (ReactType EQ 'GAN')
NonEpiPro = ( (ReactType NE 'EPP') and (ReactType NE 'GAN') )
If NonEpiPro then
// Sync up VER, LOAD, UNLOAD, POST, and QA signatures with WO_MAT signature profile.
// The goal of signature services was to remove any dependency on the WO_MAT signature profile,
// however Fabtime relies on this data being replicated to the Scrape SQL DB.
WOMatKey = {WO_MAT_KEY}
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
WOMatSigProf = obj_WO_Mat('CassSigProfile', WOMatKey)
WOMatSig = WOMatRec<WO_MAT_SIGNATURE$>
WOMatSigDTM = WOMatRec<WO_MAT_SIG_DTM$>
// Update WO_MAT signature profile to match for the "1VER" stage
Stage = '1VER'
Locate Stage in WOMatSigProf using @VM setting vPos then
WOMatSig<0, vPos> = Record<RDS_PRE_EPI_SIG$>
PreEpiDate = Record<RDS_PRE_EPI_SIG_DATE$>
If PreEpiDate NE '' then
PreEpiTime = Record<RDS_PRE_EPI_SIG_TIME$>
PreEpiSigDTM = PreEpiDate + (PreEpiTime/86400)
end else
PreEpiSigDTM = ''
end
WOMatSigDTM<0, vPos> = PreEpiSigDTM
end
// Update WO_MAT signature profile to match for "1LOAD" stage
Stage = '1LOAD'
Locate Stage in WOMatSigProf using @VM setting vPos then
WOMatSig<0, vPos> = Record<RDS_OPERATOR_IN$>
DateIn = Record<RDS_DATE_IN$>
If DateIn NE '' then
LoadTime = Record<RDS_TIME_IN$>
LoadSigDTM = DateIn + (LoadTime/86400)
end else
LoadSigDTM = ''
end
WOMatSigDTM<0, vPos> = LoadSigDTM
end
// Update WO_MAT signature profile to match for the "1UNLOAD" stage
Stage = '1UNLOAD'
Locate Stage in WOMatSigProf using @VM setting vPos then
WOMatSig<0, vPos> = Record<RDS_OPERATOR_OUT$>
DateOut = Record<RDS_DATE_OUT$>
If DateOut NE '' then
TimeOut = Record<RDS_TIME_OUT$>
TimeOutSigDTM = DateOut + (TimeOut/86400)
end else
TimeOutSigDTM = ''
end
WOMatSigDTM<0, vPos> = TimeOutSigDTM
end
// Update WO_MAT signature profile to match for the "1POST" stage
Stage = '1POST'
Locate Stage in WOMatSigProf using @VM setting vPos then
WOMatSig<0, vPos> = Record<RDS_POST_EPI_SIG$>
PostSigDate = Record<RDS_POST_EPI_SIG_DATE$>
If PostSigDate NE '' then
PostSigTime = Record<RDS_POST_EPI_SIG_TIME$>
PostSigDTM = PostSigDate + (PostSigTime/86400)
end else
PostSigDTM = ''
end
WOMatSigDTM<0, vPos> = PostSigDTM
end
// Update WO_MAT signature profile to match for the "1QA" stage
Stage = '1QA'
Locate Stage in WOMatSigProf using @VM setting vPos then
WOMatSig<0, vPos> = Record<RDS_SUP_VER_SIG$>
FQADate = Record<RDS_SUP_VER_SIG_DATE$>
If FQADate NE '' then
FQASigTime = Record<RDS_SUP_VER_SIG_TIME$>
FQASigDTM = FQADate + (FQASigTime/86400)
end else
FQASigDTM = ''
end
WOMatSigDTM<0, vPos> = FQASigDTM
end
WOMatRec<WO_MAT_SIG_PROFILE$> = WOMatSigProf
WOMatRec<WO_MAT_SIGNATURE$> = WOMatSig
WOMatRec<WO_MAT_SIG_DTM$> = WOMatSigDTM
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
end
Service_Services('PostProcedure', 'RDS_SERVICES', 'PushSigProfileToWoMat':@VM:Name)
OrigDateOut = OrigRecord<RDS_DATE_OUT$>
NewDateOut = Record<RDS_DATE_OUT$>
If ( ( (OrigDateOut EQ '') and (NewDateOut NE '') ) ) then
// Mark this cassette as processed in the schedule event record
WONo = Record<RDS_WO$>
DatetimeOut = {DATETIME_OUT}
ReactType = Xlate('WO_LOG', WONo, 'REACT_TYPE', 'X')
EpiPro = (ReactType EQ 'EPP')
If EpiPro then
WMIKeys = {WM_IN_KEY}
For each WMIKey in WMIKeys using @VM setting vPos
@ -1062,5 +974,3 @@ Restore_System_Variables:
return