From a8862709d84b51aef6fe6e3d4ca6a75749b6648e Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 24 Nov 2022 14:24:59 +0100 Subject: [PATCH] Jobs: Update to use Job Runner Table --- Jobs/GraphQL/GraphQLJob.vb | 43 ++++++++++++++++++++++++++++++-------- Jobs/JobConfig.vb | 17 +++++++++++---- Jobs/JobConfigParser.vb | 39 +++++----------------------------- Jobs/Jobs.vbproj | 4 ++++ 4 files changed, 56 insertions(+), 47 deletions(-) diff --git a/Jobs/GraphQL/GraphQLJob.vb b/Jobs/GraphQL/GraphQLJob.vb index 1151b1c3..16577f61 100644 --- a/Jobs/GraphQL/GraphQLJob.vb +++ b/Jobs/GraphQL/GraphQLJob.vb @@ -2,9 +2,9 @@ Imports System.IO Imports DigitalData.Modules.Interfaces -Imports DigitalData.Modules.Jobs Imports DigitalData.Modules.Config Imports DigitalData.Modules.Logging +Imports DigitalData.Modules.Language Imports Newtonsoft.Json.Linq Imports System.Collections.Generic Imports System.Linq @@ -43,7 +43,7 @@ Public Class GraphQLJob _Logger.Debug("Loading Queries") ' Load query data from TBCUST_JOBRUNNER_QUERY - Dim oQueryTable As DataTable = _MSSQL.GetDatatable("SELECT * FROM TBCUST_JOBRUNNER_QUERY ORDER BY OPERATION_NAME, CLEAR_BEFORE_FILL ASC") + Dim oQueryTable As DataTable = _MSSQL.GetDatatable("SELECT * FROM TBCUST_JOBRUNNER_QUERY ORDER BY SEQUENCE") Dim oQueryList As New List(Of GraphQL.Query) ' Save query data to business objects @@ -51,14 +51,35 @@ Public Class GraphQLJob Dim oQuery As New GraphQL.Query With { .Id = oRow.Item("GUID"), .Name = oRow.Item("TITLE"), - .ClearBeforeFill = oRow.Item("CLEAR_BEFORE_FILL"), - .ConnectionId = oRow.Item("CON_ID"), ' TODO: Connection String? - .DestinationTable = oRow.Item("DESTINATION_TABLE"), - .OperationName = oRow.Item("OPERATION_NAME"), - .MappingBasePath = oRow.Item("MAPPING_BASE_PATH"), - .QueryString = oRow.Item("QUERY_STRING"), - .QueryConstraint = oRow.Item("QUERY_CONSTRAINT") + .ClearBeforeFill = oRow.ItemEx("CLEAR_BEFORE_FILL", False), + .ConnectionId = oRow.ItemEx("CON_ID", 1), ' TODO: Connection String? + .DestinationTable = oRow.ItemEx("DESTINATION_TABLE", String.Empty), + .OperationName = oRow.ItemEx("OPERATION_NAME", String.Empty), + .MappingBasePath = oRow.ItemEx("MAPPING_BASE_PATH", String.Empty), + .QueryString = oRow.ItemEx("QUERY_STRING", String.Empty), + .QueryConstraint = oRow.ItemEx("QUERY_CONSTRAINT", String.Empty) } + + If oQuery.DestinationTable = String.Empty Then + _Logger.Warn("Value [DestinationTable] could not be read. Configuration incomplete.") + End If + + If oQuery.OperationName = String.Empty Then + _Logger.Warn("Value [OperationName] could not be read. Configuration incomplete.") + End If + + If oQuery.MappingBasePath = String.Empty Then + _Logger.Warn("Value [MappingBasePath] could not be read. Configuration incomplete.") + End If + + If oQuery.QueryString = String.Empty Then + _Logger.Warn("Value [QueryString] could not be read. Configuration incomplete.") + End If + + If oQuery.QueryConstraint = String.Empty Then + _Logger.Warn("Value [QueryConstraint] could not be read. Configuration incomplete.") + End If + oQueryList.Add(oQuery) Next @@ -71,6 +92,10 @@ Public Class GraphQLJob Dim oConnectionId As Integer = oQuery.ConnectionId Dim oConnectionString = _MSSQL.Get_ConnectionStringforID(oConnectionId) + If oConnectionString = String.Empty Then + _Logger.Warn("Could not get Connection String for ConnectionId [{0}]", oConnectionId) + End If + Dim oDatabase As New MSSQLServer(_LogConfig, oConnectionString) ' Reset all records to status = 0 diff --git a/Jobs/JobConfig.vb b/Jobs/JobConfig.vb index 4c09a2cd..e5dd1326 100644 --- a/Jobs/JobConfig.vb +++ b/Jobs/JobConfig.vb @@ -1,8 +1,17 @@ Imports System.Collections.Generic Public Class JobConfig - Public Enabled As Boolean - Public StartImmediately As Boolean - Public CronExpression As String - Public Arguments As Dictionary(Of String, String) + Public Property Name As JobType + Public Property Enabled As Boolean = False + Public Property StartWithoutDelay As Boolean = False + Public Property CronSchedule As String = "" + + Public Property ArgsString As String = "" + Public Property Args As New Dictionary(Of String, String) + + Public Enum JobType + ADSync + GraphQL + Test + End Enum End Class \ No newline at end of file diff --git a/Jobs/JobConfigParser.vb b/Jobs/JobConfigParser.vb index fff93541..b516e02f 100644 --- a/Jobs/JobConfigParser.vb +++ b/Jobs/JobConfigParser.vb @@ -13,46 +13,17 @@ Public Class JobConfigParser ''' ''' ''' A populated JobConfig object - Public Shared Function ParseConfig(ConfigString As String) As JobConfig - If JobOptionsRegex.IsMatch(ConfigString) Then - Dim oMatches = JobOptionsRegex.Matches(ConfigString) - Dim oOptions As New JobConfig + Public Shared Function ParseConfig(pJobConfig As JobConfig) As JobConfig - Dim oSplitOptions As String() = ConfigString.Split(ARGS_LIST_DELIMITER) + ' 24.11.2022: This only parses the optional Job arguments, + ' everything is comparmentalized in the Service config + pJobConfig.Args = ParseOptionalArguments(pJobConfig.ArgsString) + Return pJobConfig - If oSplitOptions.Length = 3 Then - oOptions = ParseEnabled(oSplitOptions(0), oOptions) - oOptions.CronExpression = oSplitOptions(1) - oOptions.Arguments = ParseOptionalArguments(oSplitOptions(2)) - ElseIf oSplitOptions.Length = 2 Then - oOptions = ParseEnabled(oSplitOptions(0), oOptions) - oOptions.CronExpression = oSplitOptions(1) - oOptions.Arguments = New Dictionary(Of String, String) - Else - Throw New ArgumentException("Config Malformed") - End If - Return oOptions - Else - Throw New ArgumentException("Config Malformed") - End If End Function - Public Shared Function ParseEnabled(EnabledValue As String, Options As JobConfig) As JobConfig - Select Case EnabledValue - Case "True" - Options.Enabled = True - Options.StartImmediately = False - Case "Debug" - Options.Enabled = True - Options.StartImmediately = True - Case Else - Options.Enabled = False - Options.StartImmediately = False - End Select - Return Options - End Function Private Shared Function ParseOptionalArguments(ArgsString As String) As Dictionary(Of String, String) Dim oArgsDictionary As New Dictionary(Of String, String) diff --git a/Jobs/Jobs.vbproj b/Jobs/Jobs.vbproj index 496f0acf..b29aa40d 100644 --- a/Jobs/Jobs.vbproj +++ b/Jobs/Jobs.vbproj @@ -116,6 +116,10 @@ + + False + ..\Interfaces\bin\Debug\DigitalData.Modules.Language.dll + ..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll