open-insight/LSL2/STPROC/SERVICE_SERVICES.txt
Infineon\StieberD ab8f9d3c24 Alarm trigger with NICA_ORDERS table
solution tested and ready for deployment

updated SRP_Git_Services to handle creating local copies of inherited entities

updated HgCV OCAP order trigger to also look for active prove-in orders

moved error services common into sysprog to avoid compilation issues
2025-01-20 12:25:09 -07:00

227 lines
10 KiB
Plaintext

Function Service_Services(@Service, @Params)
/***********************************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written
permission from SRP Computer Solutions, Inc.
Name : Service_Services
Description : Handler program for all module related services.
Notes : Service module to support environmental state issues. Environmental refers to the state of the
operating system, which includes version, client vs. server, and path to critical systems.
Parameters :
Service [in] -- Name of the service being requested
Param1-10 [in/out] -- Additional request parameter holders
Response [out] -- Response to be sent back to the Controller (MCP) or requesting procedure
Metadata :
History : (Date, Initials, Notes)
02/06/18 dmb Original programmer.
07/25/18 dmb Update the GetServices service to pick services without any assigned servers. This is to
allow a service to be ran against any server.
***********************************************************************************************************************/
#pragma precomp SRP_PreCompiler
$insert LOGICAL
$insert SERVICE_SETUP
$insert SERVICES_EQUATES
$insert RLIST_EQUATES
$insert SQL_REQUESTS_EQUATES
$Insert PROC_QUEUE_EQUATES
Common /ServiceServices/ Unused1@, Unused2@, Unused3@, Unused4@, Unused5@, Unused6@, Unused7@, Unused8@, Unused9@, Unused10@
Declare function Service_Services, Memory_Services, SRP_List, SRP_FastArray, SRP_Array, Database_Services, Datetime
Declare Function GetTickCount, SRP_Decode, RTI_CREATEGUID
Declare subroutine Service_Services, Memory_Services, SRP_List, SRP_FastArray, RList, Set_Status, Database_Services
Declare Subroutine Yield, WinYield, Sleepery
GoToService else
Error_Services('Add', Service : ' is not a valid service request within the ' : ServiceModule : ' services module.')
end
Return Response OR ''
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Service Parameter Options
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Options BOOLEAN = True$, False$
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Services
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------------------------
// GetServices
//
// Returns an array of active services for the indicated server.
//----------------------------------------------------------------------------------------------------------------------
Service GetServices(Server)
Services = ''
If Server NE '' then
Sentence = 'SELECT SERVICES WITH SERVER EQ ' : Quote(Server) : ' AND WITH ACTIVE EQ "Yes"'
rv = Set_Status(0)
RList(Sentence, TARGET_ACTIVELIST$, '', '', '')
If (@List_Active EQ 3) AND (@RecCount GT 0) then
EOF = False$
Loop
Readnext ServiceKeyID else EOF = True$
Until EOF EQ True$
ServiceRow = Database_Services('ReadDataRow', 'SERVICES', ServiceKeyID)
If Error_Services('NoError') then
Services := ServiceKeyID : @VM : ServiceRow<SERVICES.FREQUENCY$> : @VM : ServiceRow<SERVICES.SCHEDULE$> : @FM
end
Repeat
end
Sentence = 'SELECT SERVICES WITH SERVER EQ "" AND WITH ACTIVE EQ "Yes"'
rv = Set_Status(0)
RList(Sentence, TARGET_ACTIVELIST$, '', '', '')
If (@List_Active EQ 3) AND (@RecCount GT 0) then
EOF = False$
Loop
Readnext ServiceKeyID else EOF = True$
Until EOF EQ True$
ServiceRow = Database_Services('ReadDataRow', 'SERVICES', ServiceKeyID)
If Error_Services('NoError') then
Services := ServiceKeyID : @VM : ServiceRow<SERVICES.FREQUENCY$> : @VM : ServiceRow<SERVICES.SCHEDULE$> : @FM
end
Repeat
end
Services[-1, 1] = ''
end else
Error_Services('Add', 'Server argument was missing from the ' : Service : ' service.')
end
Response = Services
end service
//----------------------------------------------------------------------------------------------------------------------
// GetServices
//
// Returns an array of active services for the indicated server.
//----------------------------------------------------------------------------------------------------------------------
Service GetServiceKeys()
Services = ''
Sentence = 'SELECT SERVICES BY NAME'
rv = Set_Status(0)
RList(Sentence, TARGET_ACTIVELIST$, '', '', '')
If (@List_Active EQ 3) AND (@RecCount GT 0) then
EOF = False$
Loop
Readnext ServiceKeyID else EOF = True$
Until EOF EQ True$
Services := ServiceKeyID : @FM
Repeat
end
Services[-1, 1] = ''
Response = Services
end service
//----------------------------------------------------------------------------------------------------------------------
// GetService
//
// Returns the details of the indicated service.
//----------------------------------------------------------------------------------------------------------------------
Service GetService(Service)
ServiceDetails = ''
If Service NE '' then
ServiceDetails = Database_Services('ReadDataRow', 'SERVICES', Service)
end else
Error_Services('Add', 'Service argument was missing from the ' : Service : ' service.')
end
Response = ServiceDetails
end service
Service ProcessProcedureQueue()
Open 'PROC_QUEUE' to hProcQueue then
Select hProcQueue
EOF = False$
Loop
ReadNext RequestKeyID else EOF = True$
Until EOF
Lock hProcQueue, RequestKeyID then
RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID)
If RequestRow NE '' then
Procedure = RequestRow<PROC_QUEUE.PROC_NAME$>
Params = RequestRow<PROC_QUEUE.PARAMS$>
If Procedure NE '' then
Dim ProcParams(10)
For each Param in Params using @VM setting pPos
ProcParams(pPos) = Param
Next Param
NumArguments = DCount(Params, @VM)
Begin Case
Case NumArguments EQ 0 ; Call @Procedure()
Case NumArguments EQ 1 ; Call @Procedure(ProcParams(1))
Case NumArguments EQ 2 ; Call @Procedure(ProcParams(1), ProcParams(2))
Case NumArguments EQ 3 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3))
Case NumArguments EQ 4 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4))
Case NumArguments EQ 5 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5))
Case NumArguments EQ 6 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6))
Case NumArguments EQ 7 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7))
Case NumArguments EQ 8 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8))
Case NumArguments EQ 9 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9))
Case Otherwise$ ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10))
End Case
end
end
If Error_Services('NoError') then
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$)
end else
RequestRow<PROC_QUEUE.LAST_ATTEMPT_DTM$> = DateTime()
RequestRow<PROC_QUEUE.ERROR$> = Error_Services('GetMessage')
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, True$)
end
Unlock hProcQueue, RequestKeyID else Null
end
Repeat
end
end service
Service PostProcecure(ProcedureName, Params)
Response = ''
If (ProcedureName NE '') then
RequestKeyID = RTI_CreateGUID()
RequestRow = ''
RequestRow<PROC_QUEUE.PROC_NAME$> = ProcedureName
RequestRow<PROC_QUEUE.PARAMS$> = Params
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$)
end else
Error_Services('Add', 'Error in ':Service:' service. Null ProcedureName passed in.')
end
return
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////