Jobs: Update to use Job Runner Table

This commit is contained in:
Jonathan Jenne 2022-11-24 14:24:59 +01:00
parent 36fe39ee66
commit a8862709d8
4 changed files with 56 additions and 47 deletions

View File

@ -2,9 +2,9 @@
Imports System.IO Imports System.IO
Imports DigitalData.Modules.Interfaces Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Jobs
Imports DigitalData.Modules.Config Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Imports Newtonsoft.Json.Linq Imports Newtonsoft.Json.Linq
Imports System.Collections.Generic Imports System.Collections.Generic
Imports System.Linq Imports System.Linq
@ -43,7 +43,7 @@ Public Class GraphQLJob
_Logger.Debug("Loading Queries") _Logger.Debug("Loading Queries")
' Load query data from TBCUST_JOBRUNNER_QUERY ' 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) Dim oQueryList As New List(Of GraphQL.Query)
' Save query data to business objects ' Save query data to business objects
@ -51,14 +51,35 @@ Public Class GraphQLJob
Dim oQuery As New GraphQL.Query With { Dim oQuery As New GraphQL.Query With {
.Id = oRow.Item("GUID"), .Id = oRow.Item("GUID"),
.Name = oRow.Item("TITLE"), .Name = oRow.Item("TITLE"),
.ClearBeforeFill = oRow.Item("CLEAR_BEFORE_FILL"), .ClearBeforeFill = oRow.ItemEx("CLEAR_BEFORE_FILL", False),
.ConnectionId = oRow.Item("CON_ID"), ' TODO: Connection String? .ConnectionId = oRow.ItemEx("CON_ID", 1), ' TODO: Connection String?
.DestinationTable = oRow.Item("DESTINATION_TABLE"), .DestinationTable = oRow.ItemEx("DESTINATION_TABLE", String.Empty),
.OperationName = oRow.Item("OPERATION_NAME"), .OperationName = oRow.ItemEx("OPERATION_NAME", String.Empty),
.MappingBasePath = oRow.Item("MAPPING_BASE_PATH"), .MappingBasePath = oRow.ItemEx("MAPPING_BASE_PATH", String.Empty),
.QueryString = oRow.Item("QUERY_STRING"), .QueryString = oRow.ItemEx("QUERY_STRING", String.Empty),
.QueryConstraint = oRow.Item("QUERY_CONSTRAINT") .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) oQueryList.Add(oQuery)
Next Next
@ -71,6 +92,10 @@ Public Class GraphQLJob
Dim oConnectionId As Integer = oQuery.ConnectionId Dim oConnectionId As Integer = oQuery.ConnectionId
Dim oConnectionString = _MSSQL.Get_ConnectionStringforID(oConnectionId) 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) Dim oDatabase As New MSSQLServer(_LogConfig, oConnectionString)
' Reset all records to status = 0 ' Reset all records to status = 0

View File

@ -1,8 +1,17 @@
Imports System.Collections.Generic Imports System.Collections.Generic
Public Class JobConfig Public Class JobConfig
Public Enabled As Boolean Public Property Name As JobType
Public StartImmediately As Boolean Public Property Enabled As Boolean = False
Public CronExpression As String Public Property StartWithoutDelay As Boolean = False
Public Arguments As Dictionary(Of String, String) 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 End Class

View File

@ -13,46 +13,17 @@ Public Class JobConfigParser
''' </summary> ''' </summary>
''' <param name="ConfigString"></param> ''' <param name="ConfigString"></param>
''' <returns>A populated JobConfig object</returns> ''' <returns>A populated JobConfig object</returns>
Public Shared Function ParseConfig(ConfigString As String) As JobConfig Public Shared Function ParseConfig(pJobConfig As JobConfig) As JobConfig
If JobOptionsRegex.IsMatch(ConfigString) Then
Dim oMatches = JobOptionsRegex.Matches(ConfigString)
Dim oOptions As New 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 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) Private Shared Function ParseOptionalArguments(ArgsString As String) As Dictionary(Of String, String)
Dim oArgsDictionary As New Dictionary(Of String, String) Dim oArgsDictionary As New Dictionary(Of String, String)

View File

@ -116,6 +116,10 @@
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="DigitalData.Modules.Language, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Interfaces\bin\Debug\DigitalData.Modules.Language.dll</HintPath>
</Reference>
<Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL"> <Reference Include="FirebirdSql.Data.FirebirdClient, Version=7.5.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c, processorArchitecture=MSIL">
<HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath> <HintPath>..\packages\FirebirdSql.Data.FirebirdClient.7.5.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll</HintPath>
</Reference> </Reference>