From ebd8b36d138144b4279b1bb6aea36497b86f84d2 Mon Sep 17 00:00:00 2001 From: Chase Tucker Date: Fri, 6 Jun 2025 09:30:18 -0700 Subject: [PATCH] smart scanner metrics --- LSL2/STPROC/LOT_SERVICES.txt | 105 ++++++++++++++++++++++++---- LSL2/STPROC/MONA_SERVICES.txt | 6 +- LSL2/STPROC/OBJ_POST_LOG.txt | 18 ++++- LSL2/STPROC/OBJ_REACTOR.txt | 24 ++++++- LSL2/STPROC/OBJ_REACT_STATE.txt | 16 ++++- LSL2/STPROC/OBJ_REACT_STATUS.txt | 38 ++++++++-- LSL2/STPROC/OBJ_WO_MAT.txt | 17 ++++- LSL2/STPROC/OBJ_WO_MAT_LOG.txt | 18 ++++- LSL2/STPROC/OBJ_WO_REACT.txt | 29 ++++++-- LSL2/STPROC/QA_SERVICES.txt | 35 +++++++++- LSL2/STPROC/RDS_SERVICES.txt | 32 ++++++++- LSL2/STPROC/REACTOR_SERVICES.txt | 18 ++++- LSL2/STPROC/SCAN_API.txt | 78 +++++++++++++++++++-- LSL2/STPROC/SCAN_SERVICES.txt | 39 ++++++++--- LSL2/STPROC/SCHEDULE_SERVICES.txt | 41 ++++++++++- LSL2/STPROC/SIGNATURE_SERVICES.txt | 19 ++++- LSL2/STPROC/SUPPLEMENT_SERVICES.txt | 24 ++++++- LSL2/STPROC/TEST_RUN_SERVICES.txt | 35 +++++++++- LSL2/STPROC/WO_MAT_SERVICES.txt | 18 ++++- 19 files changed, 551 insertions(+), 59 deletions(-) diff --git a/LSL2/STPROC/LOT_SERVICES.txt b/LSL2/STPROC/LOT_SERVICES.txt index e5c12ad..1925035 100644 --- a/LSL2/STPROC/LOT_SERVICES.txt +++ b/LSL2/STPROC/LOT_SERVICES.txt @@ -2,9 +2,9 @@ Compile function Lot_Services(@Service, @Params) #pragma precomp SRP_PreCompiler Declare function TEST_WAFER_PROD_SERVICES, SRP_Datetime, Datetime, Database_Services, Lot_Services, Error_Services, RTI_CREATEGUID -Declare function SRP_Array, SRP_Json, Environment_Services, Logging_Services, MemberOf, Lot_Event_Services +Declare function SRP_Array, SRP_Json, Environment_Services, Logging_Services, MemberOf, Lot_Event_Services, GetTickCount Declare subroutine Database_Services, Btree.Extract, Lot_Services, Error_Services, Labeling_Services, SRP_Json, Logging_Services -Declare subroutine SRP_Run_Command, Service_Services, obj_notes, Lot_Event_Services +Declare subroutine SRP_Run_Command, Service_Services, obj_notes, Lot_Event_Services, Mona_Services $insert APP_INSERTS $Insert LOT_EQUATES $Insert TEST_WAFER_PROD_EQUATES @@ -38,6 +38,13 @@ objLotClosureLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Options EVENT_TYPES = 'MOVE_IN', 'MOVE_OUT', 'HOLD_ON', 'HOLD_OFF', 'REDUCE_WAFER_QTY', 'BONUS_WAFER_QTY', 'COMMENT', 'LOCATION', 'LOAD', 'UNSIGN_LOAD', 'TW_USE', 'CLOSE' Options LOT_TYPES = 'TW', 'RDS', 'WM_OUT', 'WM_IN', 'WO_MAT', 'LOT' +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_LOTSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_LOTSERVICES' +end + GoToService Return Response or "" @@ -113,6 +120,9 @@ Service GenerateNewLotId(LotType) end service Service GetLotIdByLegacyLotIdAndType(LegacyLotId, LegacyLotType) + StartTick = GetTickCount() + MetricName = 'GetLotIdByLegacyLotIdAndType' + Open 'DICT.LOT' to DictLot then SearchString = '' @@ -130,10 +140,16 @@ Service GetLotIdByLegacyLotIdAndType(LegacyLotId, LegacyLotType) end else ErrorMsg = 'Error in ':Service:' service. Error opening LOT dictionary.' end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, VendorCode, Username, PrinterID, LotId) + StartTick = GetTickCount() + MetricName = 'CreateNewLot' + CreatedLotNumber = '' ErrorMessage = '' Begin Case @@ -279,6 +295,8 @@ Service CreateNewLot(LotType, ProdName, LotQty, VendorPartNo, VendorLotNo, Vendo end Response = CreatedLotNumber + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) End Service @@ -484,6 +502,9 @@ end service //Returns a @FM delimited list of operations in sequence Service GetLotOperationSequence(LotId) + StartTick = GetTickCount() + MetricName = 'GetLotOperationSequence' + LotOperationsInSequence = '' If LotID NE '' then //Get Operations @@ -496,9 +517,15 @@ Service GetLotOperationSequence(LotId) //error: lot id was null end Response = LotOperationsInSequence + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetLotCurrOperationId(LotId) + StartTick = GetTickCount() + MetricName = 'GetLotCurrOperationId' + CurrOperation = '' If LotID NE '' then //Get them in sequence first @@ -515,9 +542,15 @@ Service GetLotCurrOperationId(LotId) //error: lot id was null end Response = CurrOperation + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetLotCurrOperationName(LotId) + StartTick = GetTickCount() + MetricName = 'GetLotCurrOperationName' + CurrOperationId = '' CurrOperationName = '' If LotID NE '' then @@ -536,6 +569,9 @@ Service GetLotCurrOperationName(LotId) //error: lot id was null end Response = CurrOperationName + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service AddLotOperationIntoSequence(LotId, NewOperationId, NewSequence, Rework) @@ -591,6 +627,9 @@ Service AddLotOperationIntoSequence(LotId, NewOperationId, NewSequence, Rework) end service Service IsLotMovedIn(LotId) + StartTick = GetTickCount() + MetricName = 'IsLotMovedIn' + Response = '' If RowExists('LOT', LotId) then CurrOperId = Lot_Services('GetLotCurrOperationId', LotId) @@ -601,6 +640,9 @@ Service IsLotMovedIn(LotId) Response = False$ end end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service IsOperationCompleted(LotOperationId) @@ -619,6 +661,8 @@ Service IsOperationCompleted(LotOperationId) end service Service MoveInLot(LotID, Operator) + StartTick = GetTickCount() + MetricName = 'MoveInLot' ErrorMessage = '' ThisLotCurrOperationID = '' @@ -667,9 +711,15 @@ Service MoveInLot(LotID, Operator) Logging_Services('AppendLog', objLotMoveLog, LogData, @RM, @FM, False$) Error_Services('Add', ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service MoveOutLot(LotID, Operator) + StartTick = GetTickCount() + MetricName = 'MoveOutLot' + ErrorMessage = '' ThisLotCurrOperationID = '' If LotId NE '' then @@ -729,6 +779,9 @@ Service MoveOutLot(LotID, Operator) Logging_Services('AppendLog', objLotMoveLog, LogData, @RM, @FM, False$) Error_Services('Add', ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service ConvertLotRecordToJson(LotId, ItemURL, CurrUser, FullObject=BOOLEAN) @@ -855,6 +908,9 @@ Service ConvertLotRecordToJson(LotId, ItemURL, CurrUser, FullObject=BOOLEAN) end service Service OpenLot(LotId) + StartTick = GetTickCount() + MetricName = 'OpenLot' + ErrorMessage = '' If RowExists('LOT', LotId) then LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) @@ -871,9 +927,15 @@ Service OpenLot(LotId) If ErrorMessage NE '' then Error_Services('Add', ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service CloseLot(LotId) + StartTick = GetTickCount() + MetricName = 'CloseLot' + ErrorMessage = '' If RowExists('LOT', LotId) then LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) @@ -890,6 +952,9 @@ Service CloseLot(LotId) If ErrorMessage NE '' then Error_Services('Add', ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service AutoCloseTestWaferLot(LotId, CloseUserId) @@ -989,15 +1054,26 @@ Service AutoCloseTestWaferLot(LotId, CloseUserId) end service Service HoldLot(LotId, OperatorId) + StartTick = GetTickCount() + MetricName = 'HoldLot' + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service UnholdLot(LotId, OperatorId) + StartTick = GetTickCount() + MetricName = 'UnholdLot' + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service ReduceLotWaferCount(LotId, ReductionQty, OperatorId) + StartTick = GetTickCount() + MetricName = 'ReduceLotWaferCount' + ErrorMessage = '' If RowExists('LOT', LotId) then LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) @@ -1043,9 +1119,15 @@ Service ReduceLotWaferCount(LotId, ReductionQty, OperatorId) if ErrorMessage NE '' then Error_Services('Add', ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service IncreaseLotWaferCount(LotId, IncreaseQty, OperatorId) + StartTick = GetTickCount() + MetricName = 'IncreaseLotWaferCount' + ErrorMessage = '' If RowExists('LOT', LotId) then LotRec = Database_Services('ReadDataRow', 'LOT', LotId, True$, 0, False$) @@ -1087,6 +1169,8 @@ Service IncreaseLotWaferCount(LotId, IncreaseQty, OperatorId) Error_Services('Add', ErrorMessage) end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service OpenOIWizardCreateTWLotInBrowser() @@ -1095,6 +1179,9 @@ Service OpenOIWizardCreateTWLotInBrowser() end service Service CreateNewVoidedLotRecord(LotId, LegacyLotId, LotType=LOT_TYPES, Username) + StartTick = GetTickCount() + MetricName = 'CreateNewVoidedLotRecord' + ErrorMessage = '' If RowExists('LSL_USERS', Username) then If LotType NE '' then @@ -1165,16 +1252,8 @@ Service CreateNewVoidedLotRecord(LotId, LegacyLotId, LotType=LOT_TYPES, Username If ErrorMessage NE '' then //Todo Log Error Message end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service - - - - - - - - - - - diff --git a/LSL2/STPROC/MONA_SERVICES.txt b/LSL2/STPROC/MONA_SERVICES.txt index c1d7223..c2caa5a 100644 --- a/LSL2/STPROC/MONA_SERVICES.txt +++ b/LSL2/STPROC/MONA_SERVICES.txt @@ -178,6 +178,11 @@ Service SendBufferedAverageMetric(MonaResource, MetricName, MetricValue) end service +Service QueueLatencyAndCountMetrics(MonaResource, MetricName, StartTick, EndTick) + Diff = EndTick - StartTick + Mona_Services('SendMetric', MonaResource, MetricName:'_LATENCY', Diff) + Mona_Services('SendMetric', MonaResource, MetricName:'_COUNT', 1) +end service SwapResourceNames: @@ -201,4 +206,3 @@ SwapResourceNames: return - diff --git a/LSL2/STPROC/OBJ_POST_LOG.txt b/LSL2/STPROC/OBJ_POST_LOG.txt index f6789ee..c83aecd 100644 --- a/LSL2/STPROC/OBJ_POST_LOG.txt +++ b/LSL2/STPROC/OBJ_POST_LOG.txt @@ -20,7 +20,7 @@ COMPILE FUNCTION obj_Post_Log(Method,Parms) DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Get_Property, obj_RDS, Database_Services, Environment_Services -DECLARE FUNCTION Logging_Services, Datetime, SRP_DateTime +DECLARE FUNCTION Logging_Services, Datetime, SRP_DateTime, GetTickCount DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Send_Dyn, RList, obj_WO_Log, Send_Event, obj_RDS DECLARE SUBROUTINE obj_WO_Mat, Send_Info, obj_Notes, ErrMsg, Logging_Services, Mona_Services @@ -42,6 +42,13 @@ Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : ' SAPBatchNo' : @FM : 'Fa objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJPOSTLOG' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJPOSTLOG' +end + ErrTitle = 'Error in Stored Procedure "obj_Post_Log"' ErrorMsg = '' @@ -115,7 +122,10 @@ RETURN * * * * * * * Post: * * * * * * * - + + StartTick = GetTickCount() + MetricName = 'Post' + hSysLists = Database_Services('GetTableHandle', 'SYSLISTS') ServiceKeyID = 'Obj_Post_Log*Post' Lock hSysLists, ServiceKeyID then @@ -228,6 +238,10 @@ Post: Unlock hSysLists, ServiceKeyID else Null end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN + diff --git a/LSL2/STPROC/OBJ_REACTOR.txt b/LSL2/STPROC/OBJ_REACTOR.txt index ca466e8..f9abc49 100644 --- a/LSL2/STPROC/OBJ_REACTOR.txt +++ b/LSL2/STPROC/OBJ_REACTOR.txt @@ -18,8 +18,8 @@ COMPILE FUNCTION obj_Reactor(Method,Parms) -DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg -DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables +DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Mona_Services +DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Environment_Services, GetTickCount $INSERT REACTOR_EQUATES @@ -28,6 +28,14 @@ $INSERT REACT_STATE_EQUATES $INSERT REACT_ITEM_EQUATES $INSERT MSG_EQUATES $insert REACTOR_CHILD_KEY_IDS_EQUATES +$Insert LOGICAL + +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJREACTOR' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJREACTOR' +end ErrTitle = 'Error in Stored Procedure "obj_Reactor"' ErrorMsg = '' @@ -66,6 +74,9 @@ RETURN Result CurrItem: * * * * * * * +StartTick = GetTickCount() +MetricName = 'CurrItem' + ReactNo = Parms[1,@RM] ItemType = Parms[COL2()+1,@RM] ReactRec = Parms[COL2()+1,@RM] @@ -96,6 +107,9 @@ LOCATE ItemType IN CurrInstTypes USING @VM SETTING Pos THEN Result = FIELD(CurrInstItems<1,Pos>,'*',2) END +EndTick = GetTickCount() +Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN @@ -103,6 +117,9 @@ RETURN CurrGraphite: * * * * * * * +StartTick = GetTickCount() +MetricName = 'CurrGraphite' + ReactNo = Parms[1,@RM] ReactRec = Parms[COL2()+1,@RM] @@ -135,6 +152,9 @@ FOR I = 1 TO ciCnt END NEXT I +EndTick = GetTickCount() +Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN diff --git a/LSL2/STPROC/OBJ_REACT_STATE.txt b/LSL2/STPROC/OBJ_REACT_STATE.txt index b5856b2..d2577e6 100644 --- a/LSL2/STPROC/OBJ_REACT_STATE.txt +++ b/LSL2/STPROC/OBJ_REACT_STATE.txt @@ -15,10 +15,10 @@ COMPILE FUNCTION obj_React_State(Method,Parms) */ -DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Database_Services +DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, ErrMsg, Database_Services, Mona_Services DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, Send_Dyn, Database_Services, Error_Services - +Declare function Environment_Services, GetTickCount $INSERT REACT_STATE_EQUATES $INSERT PROD_SPEC_EQUATES @@ -28,6 +28,12 @@ $INSERT LOGICAL EQU CRLF$ TO \0D0A\ EQU TAB$ TO \09\ +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJREACTSTATE' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJREACTSTATE' +end ErrTitle = 'Error in Stored Procedure "obj_React_State"' ErrorMsg = '' @@ -62,6 +68,9 @@ RETURN Result ReactRunUnload: * * * * * * * +StartTick = GetTickCount() +MetricName = 'ReactRunUnload' + * Upadate all parameters set at Reactor Unload signature * ReactNo = Parms[1,@RM] @@ -115,6 +124,9 @@ end * otParms = FieldStore(otParms,@RM,4,0,RSRec) * obj_Tables('WriteRec',otParms) +EndTick = GetTickCount() +Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN diff --git a/LSL2/STPROC/OBJ_REACT_STATUS.txt b/LSL2/STPROC/OBJ_REACT_STATUS.txt index 3a30eb0..ea33c98 100644 --- a/LSL2/STPROC/OBJ_REACT_STATUS.txt +++ b/LSL2/STPROC/OBJ_REACT_STATUS.txt @@ -20,9 +20,9 @@ COMPILE FUNCTION obj_React_Status(Method,Parms) #pragma precomp SRP_PreCompiler DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box,NextKey, Popup, Get_Property, Database_Services -DECLARE FUNCTION Error_Services, Environment_Services, Logging_Services, Override_Log_Services +DECLARE FUNCTION Error_Services, Environment_Services, Logging_Services, Override_Log_Services, GetTickCount DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg, Database_Services, Rlist -DECLARE SUBROUTINE Logging_Services +DECLARE SUBROUTINE Logging_Services, Mona_Services $INSERT LOGICAL $INSERT MSG_EQUATES @@ -43,6 +43,13 @@ LogFilename = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : Headers = 'Logging DTM' : @FM : 'User' : @FM : 'CassNo' : @FM : 'RDSNo' : @FM : 'Load DTM' : @FM : 'Service' : @FM : 'Notes' objReactStatusLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJREACTSTATUS' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJREACTSTATUS' +end + ErrTitle = 'Error in Stored Procedure "obj_React_Status"' ErrorMsg = '' @@ -125,6 +132,9 @@ RETURN CassLoad: * * * * * * * + StartTick = GetTickCount() + MetricName = 'CassLoad' + ReactNo = Parms[1,@RM] WONo = Parms[COL2()+1,@RM] CassNo = Parms[COL2()+1,@RM] @@ -202,6 +212,9 @@ CassLoad: IdleTime = OCONV(ICONV(IdleTime*24,'MD2'),'MD2,') Result = IdleTime + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN @@ -209,7 +222,9 @@ RETURN * * * * * * * CassUnload: * * * * * * * - + StartTick = GetTickCount() + MetricName = 'CassUnload' + ReactNo = Parms[1,@RM] WONo = Parms[COL2()+1,@RM] CassNo = Parms[COL2()+1,@RM] @@ -270,6 +285,9 @@ CassUnload: If Error_Services('HasError') then ErrorMsg = Error_Services('GetMessage') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN @@ -277,7 +295,9 @@ RETURN * * * * * * * ReactorLoad: * * * * * * * - + StartTick = GetTickCount() + MetricName = 'ReactorLoad' + * EpiPro Reactor Load ReactNo = Parms[1,@RM] @@ -361,13 +381,18 @@ ReactorLoad: end else ErrorMsg = 'Unable to read REACT_STATUS record ':ReactNo:' for update (':Method:').' end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN * * * * * * * ReactorUnload: * * * * * * * - + StartTick = GetTickCount() + MetricName = 'ReactorUnload' + * EpiPro Reactor Unload ReactNo = Parms[1,@RM] @@ -431,6 +456,9 @@ ReactorUnload: end else ErrorMsg = Error_Services('GetMessage') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN diff --git a/LSL2/STPROC/OBJ_WO_MAT.txt b/LSL2/STPROC/OBJ_WO_MAT.txt index 0714b0b..96e238f 100644 --- a/LSL2/STPROC/OBJ_WO_MAT.txt +++ b/LSL2/STPROC/OBJ_WO_MAT.txt @@ -28,11 +28,12 @@ Compile Function obj_WO_Mat(Method,Parms) Declare Function Get_Status, Msg, Utility, obj_Tables, Dialog_Box,NextKey, Popup, Get_Property, obj_RDS, RetStack Declare Function Database_Services, GaN_Services, Logging_Services, Environment_Services, Signature_Services Declare Function obj_WO_Mat, obj_WM_In, obj_WM_Out, obj_Prod_Spec, obj_Clean_Insp, obj_Calendar, obj_Popup -Declare Function Error_Services, Memberof, Datetime +Declare Function Error_Services, Memberof, Datetime, GetTickCount Declare Subroutine Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg, Send_Dyn, RList, obj_WO_Log, Send_Event Declare Subroutine obj_RDS, Extract_SI_Keys, obj_Pend_Ship_Labels, obj_WO_Mat_QA, Work_Order_Services, Service_Services Declare Subroutine obj_notes, obj_Clean_Insp, obj_Post_Log, Send_Info, obj_WO_Mat_Log, obj_SAP, obj_WO_Mat, obj_WO_Wfr Declare Subroutine Logging_Services, Set_Property, Delete, Database_Services, SRP_Stopwatch, Material_Services +Declare subroutine Mona_Services $Insert MSG_EQUATES $Insert WO_MAT_EQUATES @@ -120,6 +121,13 @@ SAPFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' SetS SAPHeaders = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'SAPBatchNo' objSAPLog = Logging_Services('NewLog', SAPLogPath, SAPFileName, CRLF$, Comma$, SAPHeaders, '', False$, False$) +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJWOMAT' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJWOMAT' +end + IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine' IF NOT(ASSIGNED(Parms)) THEN Parms = '' @@ -633,6 +641,9 @@ RETURN * * * * * * * CurrStatus: * * * * * * * + + StartTick = GetTickCount() + MetricName = 'CurrStatus' IF NOT(ASSIGNED(WOMatKey)) THEN WOMatKey = Parms[1,@RM] IF NOT(ASSIGNED(WOMatRec)) THEN WOMatRec = Parms[COL2()+1,@RM] @@ -894,6 +905,9 @@ CurrStatus: IF Result = 'RTS' AND WOMatRec = 1 THEN Result = 'SHOLD' + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN @@ -5566,3 +5580,4 @@ ExpCOA: RETURN + diff --git a/LSL2/STPROC/OBJ_WO_MAT_LOG.txt b/LSL2/STPROC/OBJ_WO_MAT_LOG.txt index 632de8e..4ecdb43 100644 --- a/LSL2/STPROC/OBJ_WO_MAT_LOG.txt +++ b/LSL2/STPROC/OBJ_WO_MAT_LOG.txt @@ -17,9 +17,9 @@ COMPILE FUNCTION obj_WO_Mat_Log(Method,Parms) DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Dialog_Box, NextKey, Popup, Get_Property, obj_RDS, Database_Services -Declare function Logging_Services, Environment_Services, RTI_CreateGUID, Error_Services, Datetime +Declare function Logging_Services, Environment_Services, RTI_CreateGUID, Error_Services, Datetime, GetTickCount DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Btree.Extract, ErrMsg, Send_Dyn, RList, obj_WO_Log, Send_Event, obj_RDS -DECLARE SUBROUTINE obj_WO_Mat, Send_Info, obj_Notes, Logging_Services, Database_Services, Lot_Event_Services +DECLARE SUBROUTINE obj_WO_Mat, Send_Info, obj_Notes, Logging_Services, Database_Services, Lot_Event_Services, Mona_Services $INSERT MSG_EQUATES $INSERT WO_MAT_LOG_EQUATES @@ -49,6 +49,13 @@ Headers = 'Logging DTM' objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJWOMATLOG' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJWOMATLOG' +end + ErrTitle = 'Error in Stored Procedure "obj_WO_Mat_Log"' ErrorMsg = '' @@ -77,7 +84,9 @@ RETURN Result * * * * * * * Create: * * * * * * * - + StartTick = GetTickCount() + MetricName = 'Create' + LogFile = Parms[1,@RM] TransDTM = Parms[COL2()+1,@RM] Action = Parms[COL2()+1,@RM] @@ -233,6 +242,8 @@ Create: ErrorMsg = Error_Services('GetMessage') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) RETURN @@ -364,3 +375,4 @@ Post: RETURN + diff --git a/LSL2/STPROC/OBJ_WO_REACT.txt b/LSL2/STPROC/OBJ_WO_REACT.txt index 3fa41a0..b8d3747 100644 --- a/LSL2/STPROC/OBJ_WO_REACT.txt +++ b/LSL2/STPROC/OBJ_WO_REACT.txt @@ -15,8 +15,9 @@ COMPILE FUNCTION obj_WO_React(Method,Parms) */ -DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Prod_Spec, obj_WO_Mat_QA -DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, Btree.Extract, obj_WO_Mat_QA +DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Prod_Spec, obj_WO_Mat_QA, GetTickCount +Declare function Environment_Services +DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, Btree.Extract, obj_WO_Mat_QA, Mona_Services $INSERT MSG_EQUATES $INSERT WO_REACT_EQUATES @@ -24,6 +25,7 @@ $INSERT PRS_STAGE_EQUATES $INSERT WO_MAT_EQUATES $INSERT RDS_EQUATES $INSERT QA_MET_EQUATES ;* Used in GetQAMet data structure return variable +$Insert LOGICAL ErrTitle = 'Error in Stored Procedure "obj_PRS_Prop"' @@ -40,6 +42,13 @@ END Result = '' Log = '' +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_OBJWOREACT' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_OBJWOREACT' +end + BEGIN CASE CASE Method = 'AddRdsNo' ; GOSUB AddRdsNo CASE Method = 'RemRdsNo' ; GOSUB RemRdsNo @@ -59,7 +68,10 @@ RETURN Result * * * * * * * AddRdsNo: -* * * * * * * +* * * * * * * + +StartTick = GetTickCount() +MetricName = 'AddRdsNo' WONo = Parms[1,@RM] StepNo = Parms[COL2()+1,@RM] @@ -135,13 +147,19 @@ obj_Tables('WriteOnlyRec',otParms) ;* Done with updates to the WO_REA Result = Log +EndTick = GetTickCount() +Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN * * * * * * * RemRDSNo: -* * * * * * * +* * * * * * * + +StartTick = GetTickCount() +MetricName = 'RemRDSNo' WONo = Parms[1,@RM] StepNo = Parms[COL2()+1,@RM] @@ -218,6 +236,9 @@ obj_Tables('WriteOnlyRec',otParms) ;* Done with updates to the WO_REA Result = Log +EndTick = GetTickCount() +Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + RETURN diff --git a/LSL2/STPROC/QA_SERVICES.txt b/LSL2/STPROC/QA_SERVICES.txt index e1d23c7..eae6a25 100644 --- a/LSL2/STPROC/QA_SERVICES.txt +++ b/LSL2/STPROC/QA_SERVICES.txt @@ -143,7 +143,7 @@ Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_ Declare subroutine Set_Status, Sleepery, Winyield, Yield, SRP_COM, QA_Services, Logging_Services, Obj_RDS Declare subroutine Validate, obj_WO_Mat, obj_WO_Mat_Log, obj_React_Status, Record_Lock, obj_React_State, obj_Post_Log Declare subroutine RDS_Services, obj_WO_React, RDS_React_Run, Signature_Services, SQL_Services, SRP_Stopwatch -Declare subroutine Override_Services, Reactor_Services, Lot_Services +Declare subroutine Override_Services, Reactor_Services, Lot_Services, Mona_Services Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services Declare function Min, Max, SRPSendMail, Btree.Extract, GetTickCount, HTTPClient_Services, Obj_RDS, SQL_Services @@ -177,6 +177,13 @@ LogFilename = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : Headers = 'Logging DTM' : @FM : 'User' : @FM : 'CassNo' : @FM : 'RDSNo' : @FM : 'Load DTM' : @FM : 'Service' : @FM : 'Notes' objReactStatusLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_QASERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_QASERVICES' +end + GoToService else Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') end @@ -1671,6 +1678,8 @@ end service // False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service PreEpiSignatureReady(RDSNo, Username, WaferQty, Reactor) + StartTick = GetTickCount() + MetricName = 'PreEpiSignatureReady' If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') or (Reactor EQ '') then ErrorMessage = 'RDSNo, Username, WaferQty, or Reactor not supplied in the ':Service:' service.' @@ -1769,6 +1778,8 @@ Service PreEpiSignatureReady(RDSNo, Username, WaferQty, Reactor) Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -1785,6 +1796,8 @@ end service // Reponse - True$ if PRE stage was successfully signed, False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service SignPreEpiStage(RDSNo, Username, WaferQty, Reactor, ScanEntry) + StartTick = GetTickCount() + MetricName = 'SignPreEpiStage' Error_Services('Clear') If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') or (Reactor EQ '') then @@ -1962,6 +1975,8 @@ Service SignPreEpiStage(RDSNo, Username, WaferQty, Reactor, ScanEntry) Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -1981,6 +1996,8 @@ end service // False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOpt) + StartTick = GetTickCount() + MetricName = 'LoadSignatureReady' Error_Services('Clear') If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') then @@ -2227,6 +2244,8 @@ Service LoadSignatureReady(RDSNo, Username, WaferQty, LLSide, PreFlag, ReactNoOp Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -2315,6 +2334,8 @@ end service // False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry) + StartTick = GetTickCount() + MetricName = 'SignLoadStage' Error_Services('Clear') If (RDSNo EQ '') or (Username EQ '') or (WaferQty EQ '') then @@ -2522,6 +2543,8 @@ Service SignLoadStage(RDSNo, Username, WaferQty, LLSide, ScanEntry) Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -2537,6 +2560,8 @@ end service // False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service UnloadSignatureReady(RDSNo, Username, Reactor) + StartTick = GetTickCount() + MetricName = 'UnloadSignatureReady' If (RDSNo EQ '') or (Username EQ '') or (Reactor EQ '') then ErrorMsg = 'RDSNo or Username or Reactor not supplied in the ':Service:' service.' @@ -2683,6 +2708,8 @@ Service UnloadSignatureReady(RDSNo, Username, Reactor) Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -2769,6 +2796,9 @@ end service // Response - True$ if UNLOAD stage was successfully signed , False$ otherwise. //---------------------------------------------------------------------------------------------------------------------- Service SignUnloadStage(RDSNo, Username, ScanEntry) + StartTick = GetTickCount() + MetricName = 'SignUnloadStage' + If (RDSNo EQ '') or (Username EQ '') then ErrorMsg = 'RDSNo or Username not supplied in the ':Service:' service.' Error_Services('Add', ErrorMsg) @@ -2961,6 +2991,8 @@ Service SignUnloadStage(RDSNo, Username, ScanEntry) Response = False$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -3611,3 +3643,4 @@ ClearCursors: return + diff --git a/LSL2/STPROC/RDS_SERVICES.txt b/LSL2/STPROC/RDS_SERVICES.txt index f4e4ee9..0474940 100644 --- a/LSL2/STPROC/RDS_SERVICES.txt +++ b/LSL2/STPROC/RDS_SERVICES.txt @@ -115,7 +115,7 @@ AutoDisplayErrors = FALSE$ ; // Set this to True$ when debugging so all erro Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON, Logging_Services Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_SI_Keys, Obj_WO_Mat, Obj_WO_Mat_Log Declare subroutine Dialog_Box, Obj_Notes, RList, Set_Status, Errmsg, Obj_React_Status , Reactor_Services -Declare subroutine Rds_Services, Obj_Post_Log +Declare subroutine Rds_Services, Obj_Post_Log, Mona_Services Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services Declare function Memberof, Obj_WO_Mat, Obj_WO_Mat_Log, SRP_Array, DateTime, Dialog_Box, obj_Prod_Spec @@ -131,6 +131,13 @@ Headers = 'Logging DTM':@FM:'Ctrl':@FM:'Load/Calculate Time' objCtrlLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, COMMA$, Headers, '', False$, False$) LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_RDSSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_RDSSERVICES' +end + GoToService else Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') end @@ -226,6 +233,8 @@ End Service // to an RDS record. //---------------------------------------------------------------------------------------------------------------------- Service AddComment(RDSNo, Comment, UsernameOpt) + StartTick = GetTickCount() + MetricName = 'AddComment' RDSRow = Database_Services('ReadDataRow', 'RDS', RDSNo) Username = @USER4 @@ -247,7 +256,9 @@ Service AddComment(RDSNo, Comment, UsernameOpt) oblParms := Values:@RM oblParms := "TOP" :@VM: "TOP" :@VM: "TOP" obj_Post_Log('Create',oblParms) - + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) End Service @@ -750,6 +761,9 @@ Service IsValidSubLot(RDSNo, RDSType, SupplierLot) end service Service GetRDSRunHistoryByReactorAndWO(ReactorNo, WO) + StartTick = GetTickCount() + MetricName = 'GetRDSRunHistoryByReactorAndWO' + table = "RDS" ErrorMessage = '' RDSRecords = '' @@ -783,10 +797,16 @@ Service GetRDSRunHistoryByReactorAndWO(ReactorNo, WO) end Next RDS Response = FinalRDSSortedByAssignmentDTM<1> + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service IsTWLoggingReqd(RDSNo) + StartTick = GetTickCount() + MetricName = 'IsTWLoggingReqd' + IsTWReqd = False$ ExistingTWRuns = Test_Run_Services('GetTestRunKeysByRDS', RDSNo) If ExistingTWRuns EQ '' then @@ -847,6 +867,9 @@ Service IsTWLoggingReqd(RDSNo) IsTWReqd = False$ end Response = IsTWReqd + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service TestWaferRanAfterLoad(RDSNo) @@ -1099,6 +1122,8 @@ end service Service CopyRDSLayerParameters(RDSNo) + StartTick = GetTickCount() + MetricName = 'CopyRDSLayerParameters' If (RDSNo NE '') then RunOrderNo = Xlate('RDS', RDSNo, 'RUN_ORDER_NUM', 'X') @@ -1151,6 +1176,8 @@ Service CopyRDSLayerParameters(RDSNo) Error_Services('Add', 'RDSNo not supplied in ':Service:' service.') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -1829,3 +1856,4 @@ return + diff --git a/LSL2/STPROC/REACTOR_SERVICES.txt b/LSL2/STPROC/REACTOR_SERVICES.txt index 0428860..3978131 100644 --- a/LSL2/STPROC/REACTOR_SERVICES.txt +++ b/LSL2/STPROC/REACTOR_SERVICES.txt @@ -78,7 +78,7 @@ Declare function SRP_Math, SRP_Hash, SRP_JSON, Epi_Part_Services, Schedule_Se Declare function Logging_Services, GetCommandLine, NextKey, Reactor_Log_Services, SRP_DateTime, ole_getwebpage Declare function Datetime, Reactor_Modes_Services, Work_Order_Services, React_Mode_NG_Services, Lsl_Users_Services Declare function SRP_Time, Rds_Services, SRP_Fastarray, Httpclient_Services, SRP_List, Utility, Memberof, Error_Services -Declare function Nica_Orders_Services, Max, RTI_CreateGUID +Declare function Nica_Orders_Services, Max, RTI_CreateGUID, GetTickCount // Report paths for various performance report services. TemplatesFolder = Environment_Services('GetApplicationRootPath') : '\Reports\Scheduler\Templates\' @@ -91,6 +91,13 @@ LogDate = Oconv(Date(), 'D4/') LogTime = Oconv(Time(), 'MTS') LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_REACTORSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_REACTORSERVICES' +end + GoToService else end @@ -116,6 +123,8 @@ Options REACTORMETRIC = 'TUBE_BELL_JAR_THK', 'TUBE_BELL_JAR_WFR_CNT', 'SUSC_THK' // //---------------------------------------------------------------------------------------------------------------------- Service IncrementWfrMetrics(RDSNo) + StartTick = GetTickCount() + MetricName = 'IncrementWfrMetrics' // Get Reactor and run count details RDSRec = Xlate('RDS', RDSNo, '', 'X', '') @@ -217,6 +226,8 @@ Service IncrementWfrMetrics(RDSNo) Database_Services('WriteDataRow', 'REACTOR', ReactorNo, NewReactorRec, 1, 0, 0) + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -3603,6 +3614,8 @@ end service Service GetReactorAvailChamberCount(ReactNo) + StartTick = GetTickCount() + MetricName = 'GetReactorAvailChamberCount' ErrMsg = 'Error in ReactorServices -> GetReactorAvailChamberCount: ' AvailableChamberCount = 0 @@ -3622,6 +3635,8 @@ Service GetReactorAvailChamberCount(ReactNo) end Response = AvailableChamberCount + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -4340,3 +4355,4 @@ ClearCursors: return + diff --git a/LSL2/STPROC/SCAN_API.txt b/LSL2/STPROC/SCAN_API.txt index 57314f6..a60ac54 100644 --- a/LSL2/STPROC/SCAN_API.txt +++ b/LSL2/STPROC/SCAN_API.txt @@ -45,9 +45,9 @@ $insert RDS_EQUATES $insert SCAN_SETUP Declare Function Scan_Services, Database_Services, QA_Services, Datetime, RDS_Services, SRP_Array, SRP_Stopwatch -Declare function Logging_Services, Environment_Services +Declare function Logging_Services, Environment_Services, GetTickCount Declare Subroutine Scan_Services, Database_Services, QA_Services, obj_WO_Mat_Log, SRP_Stopwatch -Declare Subroutine Logging_Services +Declare Subroutine Logging_Services, Mona_Services LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\ScanAPI\APIResponseTime'; //Define the directory where the log will be saved to. This happens the first time of the day that the log is written to. LogDate = Oconv(Date(), 'D4/') @@ -57,6 +57,13 @@ LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' ScanAPIResponseTimes.csv'; //Define the file name that will get created. Headers = 'Logging DTM' : @FM : 'API' : @FM : 'ResponseTime' : @FM : 'ScanID' : @FM : 'ScanData' : @VM : 'StatusCode' ; //Define the column names in the log file, delimited by a Field Mark. objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$); //Actually creates the log. + +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_SCANAPI' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_SCANAPI' +end GoToAPI else // The specific resource endpoint doesn't have a API handler yet. @@ -72,16 +79,25 @@ Return Response OR '' API scan.POST + StartTick = GetTickCount() + MetricName = 'SCAN_POST' + SRP_Stopwatch('Reset') SRP_Stopwatch('Start', 'SCAN_POST_RESPONSE_TIME') ScanID = Scan_Services('CreateScansRow') If Error_Services('NoError') then StatusCode = 201 GoSub CreateHALItem + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 500, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'CRITICAL') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_POST_RESPONSE_TIME') TotalPostResponseTime = SRP_Stopwatch('GetData', 'SCAN_POST_RESPONSE_TIME') LogData = '' @@ -100,6 +116,9 @@ end api API scan.ID.POST + StartTick = GetTickCount() + MetricName = 'SCAN_ID_POST' + SRP_Stopwatch('Reset') SRP_Stopwatch('Start', 'SCAN_ID_POST_RESPONSE_TIME') ScanID = EndpointSegment @@ -112,13 +131,20 @@ API scan.ID.POST If Error_Services('NoError') then StatusCode = 200 GoSub CreateHALItem + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end else Message = Error_Services('GetMessage') - HTTP_Services('SetResponseStatus', 400, Message) + HTTP_Services('SetResponseStatus', 400, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'CRITICAL') end end else HTTP_Services('SetResponseStatus', 400, 'JSON object is missing from the request.') - end + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') + end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_ID_POST_RESPONSE_TIME') TotalPostResponseTime = SRP_Stopwatch('GetData', 'SCAN_ID_POST_RESPONSE_TIME') LogData = '' @@ -143,11 +169,19 @@ end api API scan.ID.HEAD API scan.ID.GET + StartTick = GetTickCount() + MetricName = 'SCAN_ID_GET' + SRP_Stopwatch('Reset') SRP_Stopwatch('Start', 'SCAN_ID_GET_RESPONSE_TIME') ScanID = EndpointSegment StatusCode = 200 GoSub CreateHALItem + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_ID_POST_RESPONSE_TIME') TotalGetResponseTime = SRP_Stopwatch('GetData', 'SCAN_ID_GET_RESPONSE_TIME') LogData = '' @@ -166,6 +200,9 @@ end api API scan.ID.DELETE + StartTick = GetTickCount() + MetricName = 'SCAN_ID_DELETE' + SRP_Stopwatch('Reset') SRP_Stopwatch('Start', 'SCAN_ID_DELETE_RESPONSE_TIME') ScanID = EndpointSegment @@ -176,17 +213,25 @@ API scan.ID.DELETE Database_Services('DeleteDataRow', 'SCANS', ScanID, True$, False$) If Error_Services('NoError') then HTTP_Services('SetResponseStatus', 200) + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 500, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'CRITICAL') end end else HTTP_Services('SetResponseStatus', 403, 'This scan is already accepted and cannot be deleted.') + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 404, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_ID_DELETE_RESPONSE_TIME') TotalDeleteResponseTime = SRP_Stopwatch('GetData', 'SCAN_ID_DELETE_RESPONSE_TIME') LogData = '' @@ -205,7 +250,9 @@ end api API scan.ID.PATCH - + StartTick = GetTickCount() + MetricName = 'SCAN_ID_PATCH' + // This is where scans are ultimately accepted for final processing. We will need to determine which type // of scan this is (i.e. Location, Pre-Epi + Load, or Unload). This will be determined by the data coming in and the // current status of the lot. For example a Location scan would only have an RDS, location code, and username. @@ -232,14 +279,17 @@ API scan.ID.PATCH If Error_Services('NoError') then StatusCode = 200 GoSub CreateHALItem + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 500, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'CRITICAL') end SRP_JSON(hBody, 'Release') end else HTTP_Services('SetResponseStatus', 400, 'JSON object is missing from the request.') + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end end else ScanNotAcceptableReason = SRP_JSON(objResource, 'GetValue', 'scan.notAcceptableReason') @@ -249,11 +299,17 @@ API scan.ID.PATCH end else Message = 'Unable to parse the JSON scan resource.' HTTP_Services('SetResponseStatus', 400, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 404, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_ID_PATCH_RESPONSE_TIME') TotalPatchResponseTime = SRP_Stopwatch('GetData', 'SCAN_ID_PATCH_RESPONSE_TIME') LogData = '' @@ -272,6 +328,8 @@ end api API scan.ID.PUT + StartTick = GetTickCount() + MetricName = 'SCAN_ID_PUT' SRP_Stopwatch('Reset') SRP_Stopwatch('Start', 'SCAN_ID_PUT_RESPONSE_TIME') @@ -314,17 +372,25 @@ API scan.ID.PUT Database_Services('WriteDataRow', 'SCANS', ScanID, ScanRow, True$, False$, True$) If Error_Services('NoError') then GoSub CreateHALItem + Mona_Services('SendStatus', MonaResource, MetricName, 'OK') end else Message = Error_Services('GetMessage') HTTP_Services('SetResponseStatus', 500, Message) + Mona_Services('SendStatus', MonaResource, MetricName, 'CRITICAL') end SRP_JSON(hBody, 'Release') end else HTTP_Services('SetResponseStatus', 400, 'Unable to parse the scanData JSON.') + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end end else HTTP_Services('SetResponseStatus', 400, 'JSON object is missing from the request.') + Mona_Services('SendStatus', MonaResource, MetricName, 'WARNING') end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) + SRP_Stopwatch('Stop', 'SCAN_ID_PUT_RESPONSE_TIME') TotalPutResponseTime = SRP_Stopwatch('GetData', 'SCAN_ID_PUT_RESPONSE_TIME') LogData = '' @@ -339,7 +405,6 @@ API scan.ID.PUT end LogData<6> = ResponseStatusCode Logging_Services('AppendLog', objLog, LogData, @RM, @FM, False$) - end api @@ -378,3 +443,4 @@ CreateHALItem: end return + diff --git a/LSL2/STPROC/SCAN_SERVICES.txt b/LSL2/STPROC/SCAN_SERVICES.txt index f45fac6..563f13d 100644 --- a/LSL2/STPROC/SCAN_SERVICES.txt +++ b/LSL2/STPROC/SCAN_SERVICES.txt @@ -47,9 +47,10 @@ Declare Function Scan_Services, Memory_Services, Database_Services, SRP_JSON, Declare Function QA_Services, Error_Services, Security_Services, SRP_Array, obj_WO_Mat, Memberof, Override_Log_Services Declare Function Keyboard_Sim_Services, Environment_Services, Logging_Services, Reactor_Services, Supplement_Services Declare function Test_Run_Services, Lot_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services +Declare function GetTickCount Declare Subroutine Scan_Services, Memory_Services, Database_Services, SRP_JSON, QA_Services, Error_Services Declare Subroutine obj_WO_Mat_Log, Tool_Parms_Services, RDS_Services, Logging_Services, Supplement_Services -Declare Subroutine Test_Run_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services +Declare Subroutine Test_Run_Services, WO_MAT_Services, Reactor_Log_Services, Schedule_Services, Mona_Services Equ CRLF$ to \0D0A\ @@ -61,6 +62,13 @@ Headers = 'Logging DTM' : @FM : 'RDS Key ID' : @FM : 'User' : @FM : 'CurrSta objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$) LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_SCANSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_SCANSERVICES' +end + GoToService else Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' module.') end @@ -200,6 +208,8 @@ end service // Returns the database row from the SCANS table for the indicated Scan ID. The default format is MultiValue. //---------------------------------------------------------------------------------------------------------------------- Service GetScansRow(ScanID, ReturnJSON) + StartTick = GetTickCount() + MetricName = 'GetScansRow' ScansRow = '' @@ -214,6 +224,8 @@ Service GetScansRow(ScanID, ReturnJSON) Response = ScansRow + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -223,6 +235,8 @@ end service // Returns the database row from the SCANS table for the indicated Scan ID. The default format is MultiValue. //---------------------------------------------------------------------------------------------------------------------- Service SetScansRow(ScanID, ScansRow) + StartTick = GetTickCount() + MetricName = 'SetScansRow' If (ScanID NE '') AND (ScansRow NE '') then Database_Services('WriteDataRow', 'SCANS', ScanID, ScansRow) @@ -230,6 +244,8 @@ Service SetScansRow(ScanID, ScansRow) Error_Services('Add', 'ScanID or ScansRow argument was missing in the ' : Service : ' service.') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -242,6 +258,8 @@ end service // evaluated on a case by case basis. //---------------------------------------------------------------------------------------------------------------------- Service ProcessScanData(ScanID, ScanJSON) + StartTick = GetTickCount() + MetricName = 'ProcessScanData' If ( (ScanID NE '') AND (ScanJSON NE '') ) then hScanJSON = '' @@ -1285,8 +1303,10 @@ Service ProcessScanData(ScanID, ScanJSON) SRP_JSON(hScanJSON, 'Release') end else Error_Services('Add', 'ScanID or ScanJSON argument was missing in the ' : Service : ' service.') - end + end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -1295,6 +1315,9 @@ end service // //---------------------------------------------------------------------------------------------------------------------- Service AcceptScan(ScanID, ScanJSON) + StartTick = GetTickCount() + MetricName = 'AcceptScan' + If ( (ScanID NE '') and (ScanJSON NE '') ) then hBody = '' ParseResponse = SRP_JSON(hBody, 'PARSE', ScanJSON) @@ -1649,6 +1672,8 @@ Service AcceptScan(ScanID, ScanJSON) Error_Services('Add', 'ScanID or ScanJSON argument was missing in the ' : Service : ' service.') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service //---------------------------------------------------------------------------------------------------------------------- @@ -1659,6 +1684,8 @@ end service // HAL+JSON properties will be added to the JSON object. //---------------------------------------------------------------------------------------------------------------------- Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) + StartTick = GetTickCount() + MetricName = 'ConvertMVScanToJSON' jsonScan = '' @@ -2160,6 +2187,8 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) Response = jsonScan + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service //---------------------------------------------------------------------------------------------------------------------- @@ -2396,9 +2425,3 @@ ClearCursors: return - - - - - - diff --git a/LSL2/STPROC/SCHEDULE_SERVICES.txt b/LSL2/STPROC/SCHEDULE_SERVICES.txt index a790426..e022c1a 100644 --- a/LSL2/STPROC/SCHEDULE_SERVICES.txt +++ b/LSL2/STPROC/SCHEDULE_SERVICES.txt @@ -55,15 +55,23 @@ EQU NOTIFICATION_PERIOD$ TO 12 Declare subroutine Error_Services, Schedule_Services, Memory_Services, RList, Database_Services, Logging_Services Declare subroutine Btree.Extract, Set_Status, Reduce, FSMsg, Messaging_Services, obj_Notes, Make.List +Declare subroutine Mona_Services Declare function SRP_Array, Schedule_Services, Memory_Services, Database_Services, SRP_Sort_Array, Datetime Declare function Epi_Part_Services, SRP_Math, SRP_Hash, obj_Prod_Spec, Logging_Services, Environment_Services Declare function Work_Order_Services, RTI_CreateGUID, Reactor_Services, Schedule_Services, NextKey, SRP_Datetime -Declare function SRP_Time, Lsl_Users_Services +Declare function SRP_Time, Lsl_Users_Services, GetTickCount Date = Oconv(Date(), 'D4/') LogFileName = Date[7, 4] : '-' : Date[1, 2] : '-' : Date[4, 2] : ' Scheduler Log.csv' Headers = 'Logging DTM' : @FM : 'Service Step' : @FM : 'Service Notes' -ColumnWidths = 20 : @FM : 30 : @FM : 150 +ColumnWidths = 20 : @FM : 30 : @FM : 150 + +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_SCHEDULESERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_SCHEDULESERVICES' +end GoToService else Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') @@ -795,6 +803,8 @@ end service Service GetCurrentEvent(ReactNo) + StartTick = GetTickCount() + MetricName = 'GetCurrentEvent' SchedDetKey = '' If ReactNo NE '' then @@ -814,9 +824,14 @@ Service GetCurrentEvent(ReactNo) GoSub ClearCursors end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service CurrentEventIsBlock(ReactNo) + StartTick = GetTickCount() + MetricName = 'CurrentEventIsBlock' + If ReactNo NE '' then CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo) @@ -838,9 +853,15 @@ Service CurrentEventIsBlock(ReactNo) ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.' Error_Services('Add', ErrorMsg) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetNextEvent(ReactNo) + StartTick = GetTickCount() + MetricName = 'GetNextEvent' + SchedDetKey = '' If ReactNo NE '' then CurrDTM = Datetime() @@ -870,6 +891,9 @@ Service GetNextEvent(ReactNo) end GoSub ClearCursors end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetEngagedEvent(ReactNo) @@ -919,6 +943,9 @@ Service GetLastEngagedEvent(ReactNo) end service Service NextEventIsSamePsn(ReactNo) + StartTick = GetTickCount() + MetricName = 'NextEventIsSamePsn' + Response = False$ If ReactNo NE '' then CurrentSchedDetKey = Schedule_Services('GetCurrentEvent', ReactNo) @@ -962,9 +989,15 @@ Service NextEventIsSamePsn(ReactNo) ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.' Error_Services('Add', ErrorMsg) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service NextEventIsBlock(ReactNo) + StartTick = GetTickCount() + MetricName = 'NextEventIsBlock' + If ReactNo NE '' then NextSchedDetKey = Schedule_Services('GetNextEvent', ReactNo) @@ -986,6 +1019,9 @@ Service NextEventIsBlock(ReactNo) ErrorMsg = 'Error in service ':Service:' module. Invalid reactor number.' Error_Services('Add', ErrorMsg) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service //---------------------------------------------------------------------------------------------------------------------- @@ -3561,3 +3597,4 @@ CreateScheduleChangeNotification: return + diff --git a/LSL2/STPROC/SIGNATURE_SERVICES.txt b/LSL2/STPROC/SIGNATURE_SERVICES.txt index 52ecb23..790fe7c 100644 --- a/LSL2/STPROC/SIGNATURE_SERVICES.txt +++ b/LSL2/STPROC/SIGNATURE_SERVICES.txt @@ -63,12 +63,20 @@ Equ COL$TOOL_ID to 10 Declare function obj_Prod_Spec, RDS_Services, Error_Services, Signature_Services, Memory_Services, obj_RDS_Test Declare function Database_Services, obj_WO_Mat, Dialog_Box, MemberOf, Msg, QA_Services, Datetime, Supplement_Services +Declare function Environment_Services, GetTickCount Declare subroutine Error_Services, Popup, Memory_Services, SRP_Stopwatch, Set_Status, Database_Services, obj_WO_Mat -Declare subroutine Obj_Notes, Signature_Services, Obj_WO_Mat_Log, ErrMsg +Declare subroutine Obj_Notes, Signature_Services, Obj_WO_Mat_Log, ErrMsg, Mona_Services PSNKey = ServiceKeyID ReactorKey = ServiceKeyID +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_SIGNATURESERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_SIGNATURESERVICES' +end + GoToService Return Response or "" @@ -135,6 +143,8 @@ end service Service GetSigProfile(WOMatKey, UseCaching, RDSNo) + StartTick = GetTickCount() + MetricName = 'GetSigProfile' If UseCaching EQ '' then UseCaching = True$ @@ -175,6 +185,8 @@ Service GetSigProfile(WOMatKey, UseCaching, RDSNo) SigDTMs = OCONV(SigDTMs,'DT4/^S') Response = SigProfile:@FM:Signatures:@FM:SigDTMs + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -211,6 +223,9 @@ end service Service CheckSigOrder(WOMatKey, CurrStage, UseCaching, RDSNo) + StartTick = GetTickCount() + MetricName = 'CheckSigOrder' + If UseCaching EQ '' then UseCachine = True$ Response = False$ If RDSNo NE '' then @@ -264,6 +279,8 @@ Service CheckSigOrder(WOMatKey, CurrStage, UseCaching, RDSNo) Response = True$ end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) End Service diff --git a/LSL2/STPROC/SUPPLEMENT_SERVICES.txt b/LSL2/STPROC/SUPPLEMENT_SERVICES.txt index 275e820..9618aa5 100644 --- a/LSL2/STPROC/SUPPLEMENT_SERVICES.txt +++ b/LSL2/STPROC/SUPPLEMENT_SERVICES.txt @@ -56,9 +56,16 @@ $Insert NOTIFICATION_EQUATES Equ COMMA$ to ',' Declare function Database_Services, Supplement_Services, Rti_Createguid, SRP_Array, Datetime, Signature_Services -Declare function Environment_Services, Logging_Services, Select_Into +Declare function Environment_Services, Logging_Services, Select_Into, GetTickCount Declare subroutine Database_Services, Rds_Services, Supplement_Services, Logging_Services, Set_Status, SRP_Stopwatch -Declare subroutine Btree.Extract, obj_Notes +Declare subroutine Btree.Extract, obj_Notes, Mona_Services + +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_SUPPLEMENTSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_SUPPLEMENTSERVICES' +end GoToService else Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' module.') @@ -408,6 +415,8 @@ end service // //---------------------------------------------------------------------------------------------------------------------- Service AcknowledgeSupplement(SupplID, EntryUser) + StartTick = GetTickCount() + MetricName = 'AcknowledgeSupplement' If ( (SupplID NE '') and (EntryUser NE '') ) then OldRec = Xlate('SUPPLEMENTS', SupplID, '', 'X', '') @@ -433,6 +442,8 @@ Service AcknowledgeSupplement(SupplID, EntryUser) Error_Services('Add', 'SupplID or EntryUser was missing in the ' : Service : ' service.') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -447,6 +458,8 @@ end service // //---------------------------------------------------------------------------------------------------------------------- Service UnacknowledgedSupplementCheck(LotType=LOTTYPES, LotID, Stage=STAGES) + StartTick = GetTickCount() + MetricName = 'UnacknowledgedSupplementCheck' UnackList = '' Response = False$ @@ -482,6 +495,8 @@ Service UnacknowledgedSupplementCheck(LotType=LOTTYPES, LotID, Stage=STAGES) If UnackList NE '' then Response = UnackList + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -496,6 +511,8 @@ end service // //---------------------------------------------------------------------------------------------------------------------- Service LogSupplementChange(SupplementRec, EditEvent, EntryUser) + StartTick = GetTickCount() + MetricName = 'LogSupplementChange' If ( (SupplementRec NE '') and (EditEvent NE '') and (EntryUser NE '') ) then SupplementText = SupplementRec @@ -513,6 +530,8 @@ Service LogSupplementChange(SupplementRec, EditEvent, EntryUser) Error_Services('Add', 'LotType, LotID, or Stage was missing in the ' : Service : ' service.') end + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service @@ -613,3 +632,4 @@ Service SendNotifications(RDSList, EditEvent, Instructions, EntryUser) end service + diff --git a/LSL2/STPROC/TEST_RUN_SERVICES.txt b/LSL2/STPROC/TEST_RUN_SERVICES.txt index 8881f70..a395513 100644 --- a/LSL2/STPROC/TEST_RUN_SERVICES.txt +++ b/LSL2/STPROC/TEST_RUN_SERVICES.txt @@ -10,9 +10,10 @@ $Insert TEST_RUN_OBJ_EQUATES $Insert LOT_EQUATES $Insert LOT_OPERATION_EQUATES -Declare function Nextkey, Error_Services, Environment_Services, OConv, Logging_Services, SRP_Hashtable, Lot_Services +Declare function Nextkey, Error_Services, Environment_Services, OConv, Logging_Services, SRP_Hashtable, Lot_Services, GetTickCount Declare function SRP_Datetime, Database_Services, Test_Run_Services, File_Services, Status, delete, Insert, Datetime, SRP_Json, MemberOf Declare subroutine Database_Services, Btree.Extract, Error_Services, Logging_Services, Rlist, Test_Run_Services, Lot_Services, SRP_Json +Declare subroutine Mona_Services LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\TEST_RUN_SERVICES\TestWaferProduct' LogDate = Oconv(Date(), 'D4/') @@ -30,6 +31,13 @@ objLogTR = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, He LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_TESTRUNSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_TESTRUNSERVICES' +end + GoToService Return Response or "" @@ -280,6 +288,9 @@ Service UpdateTWProdSortOrder(TWProdKey, NewOrder) end service Service GetAllTestRunTypes() + StartTick = GetTickCount() + MetricName = 'GetAllTestRunTypes' + keylist = '' rtList = '' RList('SELECT TEST_RUN_TYPE BY RUN_TYPE', 5, '', '', '') @@ -297,6 +308,9 @@ Service GetAllTestRunTypes() end Next ProdKey Response = rtList + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetTestWaferLots(ShowOnlyOpenLots) @@ -318,6 +332,9 @@ Service GetTestWaferLots(ShowOnlyOpenLots) end service Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID, TWLotIds, TWLotQtys) + StartTick = GetTickCount() + MetricName = 'CreateTestRunRecord' + TWRunKey = '' Response = '' ErrorMessage = '' @@ -490,9 +507,15 @@ Service CreateTestRunRecord(RunTypeID, EqpType, EqpID, PSNo, RDSNo, UserID, TWLo Error_Services('Add', ErrorMessage) Response = '' end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service CreateTestRunWaferRecord(TestRunID, TWPartID, TWUsageTypeID, SourceLotId, Username) + StartTick = GetTickCount() + MetricName = 'CreateTestRunWaferRecord' + ErrorMessage = '' If TestRunID NE '' AND TWPartID NE '' then If RowExists('TEST_RUN', TestRunID) then @@ -537,6 +560,9 @@ Service CreateTestRunWaferRecord(TestRunID, TWPartID, TWUsageTypeID, SourceLotId Logging_Services('AppendLog', objLogTR, LogData, @FM, @VM) Error_Services('Add', 'Error creating new test run record: ' : ErrorMessage) end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service UseTWFromLot(LotId, UsageQty, Username) @@ -706,6 +732,9 @@ Service GetTestRunKeysByPSN(PSNo) end service Service GetTestRunKeysByRDS(RDSNo) + StartTick = GetTickCount() + MetricName = 'GetTestRunKeysByRDS' + table = "TEST_RUN" Open "DICT ":table To @DICT Else Error_Services('Add', 'Error opening TEST_RUN dictionary') @@ -718,6 +747,9 @@ Service GetTestRunKeysByRDS(RDSNo) Btree.Extract(srch_strng, table, @DICT, keylist, option, flag) Response = keylist end + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service GetTestRunWaferByID(TRWaferID) @@ -799,3 +831,4 @@ end service + diff --git a/LSL2/STPROC/WO_MAT_SERVICES.txt b/LSL2/STPROC/WO_MAT_SERVICES.txt index 395755f..6617f08 100644 --- a/LSL2/STPROC/WO_MAT_SERVICES.txt +++ b/LSL2/STPROC/WO_MAT_SERVICES.txt @@ -2,9 +2,9 @@ Compile function WO_MAT_Services(@Service, @Params) #pragma precomp SRP_PreCompiler Declare function Database_Services, Error_Services, SRP_Json, SRP_Com, Environment_Services, Logging_Services -Declare function Datetime +Declare function Datetime, GetTickCount Declare subroutine Error_Services, SRP_Json, SRP_Com, Wo_Mat_Services, Database_Services, Logging_Services -Declare subroutine obj_wo_mat_log, Set_Status +Declare subroutine obj_wo_mat_log, Set_Status, Mona_Services $insert LOGICAL $Insert APP_INSERTS @@ -20,6 +20,13 @@ Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : 'Missing Signature' : @FM : objSyncLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ',', Headers, '', False$, False$) LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM +IsProd = Environment_Services('IsProd') +If IsProd EQ True$ then + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_WOMATSERVICES' +end else + MonaResource = 'GRP_OPENINSIGHT_MES_OP_FE_DEV_WOMATSERVICES' +end + GoToService else Error_Services('Set', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.') end @@ -379,6 +386,9 @@ Service SyncWOMatInvActionsAndSigProfile(WOMatKey) end service Service CassetteIsLastInWo(WoMatKey) + StartTick = GetTickCount() + MetricName = 'CassetteIsLastInWo' + IsLastInWo = False$ If Unassigned(WoMatKey) or WoMatKey EQ '' or RowExists('WO_MAT', WoMatKey) NE True$ then @@ -424,6 +434,9 @@ Service CassetteIsLastInWo(WoMatKey) end Response = IsLastInWo + + EndTick = GetTickCount() + Mona_Services('QueueLatencyAndCountMetrics', MonaResource, MetricName, StartTick, EndTick) end service Service SetWoMatVoidFlag(WoMatKey, Username) @@ -473,3 +486,4 @@ Service SetWoMatVoidFlag(WoMatKey, Username) end service +