Neues Formular für App-Service-Monitor hinzugefügt
Ein neues Formular `frmAdmin_AppserviceTest` wurde hinzugefügt, das als Monitor für den EDMI-App-Service dient. Es ermöglicht die Überprüfung des Service-Status, das Starten/Stoppen von Lasttests und die Protokollierung von Verbindungs- und Datenbankoperationen. Weitere Änderungen: - Sichtbarkeitslogik für `bbtnitm_Appservice` in `frmMain` implementiert. - Logging-Schwellenwerte in `frmMain` angepasst (5000ms/5500ms). - Datenbankabfragen in `frmValidator` optimiert und Debug-Logs hinzugefügt. - Ressourcen-Referenzen in mehreren UI-Komponenten entfernt oder optimiert. - Projektdatei `taskFLOW.vbproj` aktualisiert, um neue Ressourcen und Abhängigkeiten einzubinden.
This commit is contained in:
@@ -7,6 +7,8 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "SetupVS19", "SetupVS19\Setu
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "taskFLOW", "TaskFlow\taskFLOW.vbproj", "{6ACA1432-09A2-47EF-A704-C0AA73905756}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMI.API", "..\..\..\2_DLL Projekte\DDModules\EDMIAPI\EDMI.API.vbproj", "{25017513-0D97-49D3-98D7-BA76D9B251B0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
CD_ROM|Any CPU = CD_ROM|Any CPU
|
||||
@@ -61,6 +63,26 @@ Global
|
||||
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|Any CPU.Build.0 = Release|x86
|
||||
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|x86.ActiveCfg = Debug|x86
|
||||
{6ACA1432-09A2-47EF-A704-C0AA73905756}.SingleImage|x86.Build.0 = Debug|x86
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.CD_ROM|Any CPU.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.CD_ROM|x86.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.CD_ROM|x86.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.DVD-5|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.DVD-5|Any CPU.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.DVD-5|x86.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.DVD-5|x86.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.Release|x86.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.SingleImage|Any CPU.Build.0 = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.SingleImage|x86.ActiveCfg = Release|Any CPU
|
||||
{25017513-0D97-49D3-98D7-BA76D9B251B0}.SingleImage|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -80,16 +80,16 @@ Public Class ClassInit
|
||||
If CONFIG.Config.EDMIAppServer <> String.Empty Then
|
||||
Try
|
||||
LOGGER.Info($"Configuration EDMIAppServer [{CONFIG.Config.EDMIAppServer}] will be used...")
|
||||
_EDMIClient = New Client(LOGCONFIG, CONFIG.Config.EDMIAppServer)
|
||||
_EDMIClient = New Client(LOGCONFIG, CONFIG.Config.EDMIAppServer, Environment.UserName)
|
||||
If Not IsNothing(_EDMIClient) Then
|
||||
If _EDMIClient.Connect() Then
|
||||
EDMIAppServerActive = True
|
||||
EDMIService.Client = _EDMIClient
|
||||
EDMIService.Address = CONFIG.Config.EDMIAppServer
|
||||
|
||||
LOGGER.Info($"EDMIAppServer [{CONFIG.Config.EDMIAppServer}] is active!")
|
||||
LOGGER.Info($"✔✔ EDMIAppServer [{CONFIG.Config.EDMIAppServer}] is active!")
|
||||
Else
|
||||
LOGGER.Warn($"#### ⚠️ !!! Could not Connect to APPServer [{CONFIG.Config.EDMIAppServer}]!!! ###")
|
||||
LOGGER.Warn($"⚠️ Could not Connect to APPServer [{CONFIG.Config.EDMIAppServer}]!!! ###")
|
||||
End If
|
||||
End If
|
||||
Catch ex As Exception
|
||||
|
||||
@@ -551,6 +551,12 @@
|
||||
<Compile Include="frmAdminPasswort.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmAdmin_AppserviceTest.Designer.vb">
|
||||
<DependentUpon>frmAdmin_AppserviceTest.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="frmAdmin_AppserviceTest.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmAdmin_notResponsibleConfig.Designer.vb">
|
||||
<DependentUpon>frmAdmin_notResponsibleConfig.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -837,6 +843,9 @@
|
||||
<DependentUpon>frmAdminPasswort.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmAdmin_AppserviceTest.resx">
|
||||
<DependentUpon>frmAdmin_AppserviceTest.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmAdmin_notResponsibleConfig.resx">
|
||||
<DependentUpon>frmAdmin_notResponsibleConfig.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
164
app/TaskFlow/frmAdmin_AppserviceTest.Designer.vb
generated
Normal file
164
app/TaskFlow/frmAdmin_AppserviceTest.Designer.vb
generated
Normal file
@@ -0,0 +1,164 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmAdmin_AppserviceTest
|
||||
Inherits DevExpress.XtraEditors.XtraForm
|
||||
|
||||
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmAdmin_AppserviceTest))
|
||||
Me.SimpleButton1 = New DevExpress.XtraEditors.SimpleButton()
|
||||
Me.lblServiceOnline = New DevExpress.XtraEditors.LabelControl()
|
||||
Me.lblAppServiceOffline = New DevExpress.XtraEditors.LabelControl()
|
||||
Me.btnLoadStart = New DevExpress.XtraEditors.SimpleButton()
|
||||
Me.btnLoadStop = New DevExpress.XtraEditors.SimpleButton()
|
||||
Me.ListBoxControl1 = New DevExpress.XtraEditors.ListBoxControl()
|
||||
Me.ListBoxControl2 = New DevExpress.XtraEditors.ListBoxControl()
|
||||
Me.LabelControl1 = New DevExpress.XtraEditors.LabelControl()
|
||||
Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
|
||||
CType(Me.ListBoxControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.ListBoxControl2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'SimpleButton1
|
||||
'
|
||||
Me.SimpleButton1.Location = New System.Drawing.Point(12, 1)
|
||||
Me.SimpleButton1.Name = "SimpleButton1"
|
||||
Me.SimpleButton1.Size = New System.Drawing.Size(196, 32)
|
||||
Me.SimpleButton1.TabIndex = 1
|
||||
Me.SimpleButton1.Text = "Prüfe Status EDMI Service"
|
||||
'
|
||||
'lblServiceOnline
|
||||
'
|
||||
Me.lblServiceOnline.ImageAlignToText = DevExpress.XtraEditors.ImageAlignToText.LeftCenter
|
||||
Me.lblServiceOnline.ImageOptions.Alignment = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.lblServiceOnline.ImageOptions.SvgImage = CType(resources.GetObject("lblServiceOnline.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.lblServiceOnline.Location = New System.Drawing.Point(12, 39)
|
||||
Me.lblServiceOnline.Name = "lblServiceOnline"
|
||||
Me.lblServiceOnline.Size = New System.Drawing.Size(240, 36)
|
||||
Me.lblServiceOnline.TabIndex = 3
|
||||
Me.lblServiceOnline.Text = "AppService online and Functions all normal"
|
||||
Me.lblServiceOnline.Visible = False
|
||||
'
|
||||
'lblAppServiceOffline
|
||||
'
|
||||
Me.lblAppServiceOffline.ImageAlignToText = DevExpress.XtraEditors.ImageAlignToText.LeftCenter
|
||||
Me.lblAppServiceOffline.ImageOptions.Alignment = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.lblAppServiceOffline.ImageOptions.SvgImage = CType(resources.GetObject("lblAppServiceOffline.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.lblAppServiceOffline.Location = New System.Drawing.Point(12, 39)
|
||||
Me.lblAppServiceOffline.Name = "lblAppServiceOffline"
|
||||
Me.lblAppServiceOffline.Size = New System.Drawing.Size(183, 36)
|
||||
Me.lblAppServiceOffline.TabIndex = 4
|
||||
Me.lblAppServiceOffline.Text = "AppService not in proper mode"
|
||||
Me.lblAppServiceOffline.Visible = False
|
||||
'
|
||||
'btnLoadStart
|
||||
'
|
||||
Me.btnLoadStart.Location = New System.Drawing.Point(12, 150)
|
||||
Me.btnLoadStart.Name = "btnLoadStart"
|
||||
Me.btnLoadStart.Size = New System.Drawing.Size(250, 38)
|
||||
Me.btnLoadStart.TabIndex = 5
|
||||
Me.btnLoadStart.Text = "Starte Performance-Test " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "(parallele Verbindungen und Databasefallbacks)"
|
||||
'
|
||||
'btnLoadStop
|
||||
'
|
||||
Me.btnLoadStop.Location = New System.Drawing.Point(12, 223)
|
||||
Me.btnLoadStop.Name = "btnLoadStop"
|
||||
Me.btnLoadStop.Size = New System.Drawing.Size(250, 32)
|
||||
Me.btnLoadStop.TabIndex = 6
|
||||
Me.btnLoadStop.Text = "Stoppe Perf-Test"
|
||||
Me.btnLoadStop.Visible = False
|
||||
'
|
||||
'ListBoxControl1
|
||||
'
|
||||
Me.ListBoxControl1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.ListBoxControl1.Location = New System.Drawing.Point(286, 1)
|
||||
Me.ListBoxControl1.Name = "ListBoxControl1"
|
||||
Me.ListBoxControl1.Size = New System.Drawing.Size(420, 132)
|
||||
Me.ListBoxControl1.TabIndex = 7
|
||||
'
|
||||
'ListBoxControl2
|
||||
'
|
||||
Me.ListBoxControl2.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.ListBoxControl2.Location = New System.Drawing.Point(286, 150)
|
||||
Me.ListBoxControl2.Name = "ListBoxControl2"
|
||||
Me.ListBoxControl2.Size = New System.Drawing.Size(419, 105)
|
||||
Me.ListBoxControl2.TabIndex = 8
|
||||
'
|
||||
'LabelControl1
|
||||
'
|
||||
Me.LabelControl1.Location = New System.Drawing.Point(12, 197)
|
||||
Me.LabelControl1.Name = "LabelControl1"
|
||||
Me.LabelControl1.Size = New System.Drawing.Size(143, 13)
|
||||
Me.LabelControl1.TabIndex = 10
|
||||
Me.LabelControl1.Text = "Anzahl parallele Verbindungen"
|
||||
'
|
||||
'NumericUpDown1
|
||||
'
|
||||
Me.NumericUpDown1.Font = New System.Drawing.Font("Segoe UI", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.NumericUpDown1.Increment = New Decimal(New Integer() {50, 0, 0, 0})
|
||||
Me.NumericUpDown1.Location = New System.Drawing.Point(208, 192)
|
||||
Me.NumericUpDown1.Maximum = New Decimal(New Integer() {1000, 0, 0, 0})
|
||||
Me.NumericUpDown1.Minimum = New Decimal(New Integer() {100, 0, 0, 0})
|
||||
Me.NumericUpDown1.Name = "NumericUpDown1"
|
||||
Me.NumericUpDown1.Size = New System.Drawing.Size(54, 22)
|
||||
Me.NumericUpDown1.TabIndex = 11
|
||||
Me.NumericUpDown1.Value = New Decimal(New Integer() {100, 0, 0, 0})
|
||||
'
|
||||
'frmAdmin_AppserviceTest
|
||||
'
|
||||
Me.Appearance.Options.UseFont = True
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 17.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(717, 267)
|
||||
Me.Controls.Add(Me.NumericUpDown1)
|
||||
Me.Controls.Add(Me.LabelControl1)
|
||||
Me.Controls.Add(Me.ListBoxControl2)
|
||||
Me.Controls.Add(Me.ListBoxControl1)
|
||||
Me.Controls.Add(Me.btnLoadStop)
|
||||
Me.Controls.Add(Me.btnLoadStart)
|
||||
Me.Controls.Add(Me.lblAppServiceOffline)
|
||||
Me.Controls.Add(Me.lblServiceOnline)
|
||||
Me.Controls.Add(Me.SimpleButton1)
|
||||
Me.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.IconOptions.SvgImage = CType(resources.GetObject("frmAdmin_AppserviceTest.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.Name = "frmAdmin_AppserviceTest"
|
||||
Me.Text = "AppService Monitor"
|
||||
CType(Me.ListBoxControl1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.ListBoxControl2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents SimpleButton1 As DevExpress.XtraEditors.SimpleButton
|
||||
Friend WithEvents lblServiceOnline As DevExpress.XtraEditors.LabelControl
|
||||
Friend WithEvents lblAppServiceOffline As DevExpress.XtraEditors.LabelControl
|
||||
Friend WithEvents btnLoadStart As DevExpress.XtraEditors.SimpleButton
|
||||
Friend WithEvents btnLoadStop As DevExpress.XtraEditors.SimpleButton
|
||||
Friend WithEvents ListBoxControl1 As DevExpress.XtraEditors.ListBoxControl
|
||||
Friend WithEvents ListBoxControl2 As DevExpress.XtraEditors.ListBoxControl
|
||||
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
|
||||
Friend WithEvents NumericUpDown1 As NumericUpDown
|
||||
End Class
|
||||
181
app/TaskFlow/frmAdmin_AppserviceTest.resx
Normal file
181
app/TaskFlow/frmAdmin_AppserviceTest.resx
Normal file
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="DevExpress.Data.v21.2" name="DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="lblServiceOnline.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKMCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
|
||||
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
|
||||
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
|
||||
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
|
||||
WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
|
||||
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
|
||||
Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
|
||||
Pg0KICA8ZyBpZD0iQ2hlY2tCb3giPg0KICAgIDxwYXRoIGQ9Ik0yNyw0SDVDNC41LDQsNCw0LjUsNCw1
|
||||
djIyYzAsMC41LDAuNSwxLDEsMWgyMmMwLjUsMCwxLTAuNSwxLTFWNUMyOCw0LjUsMjcuNSw0LDI3LDR6
|
||||
IE0xNCwyMmwtNi02bDItMmw0LDQgICBsOC04bDIsMkwxNCwyMnoiIGNsYXNzPSJHcmVlbiIgLz4NCiAg
|
||||
PC9nPg0KPC9zdmc+Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="lblAppServiceOffline.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
|
||||
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
|
||||
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
|
||||
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
|
||||
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
|
||||
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
|
||||
dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZvcmJpZCI+DQogICAgPHBhdGggZD0iTTE2LDRDOS40
|
||||
LDQsNCw5LjQsNCwxNnM1LjQsMTIsMTIsMTJzMTItNS40LDEyLTEyUzIyLjYsNCwxNiw0eiBNMTYsOGMx
|
||||
LjUsMCwyLjksMC40LDQuMSwxLjFsLTExLDExICAgQzguNCwxOC45LDgsMTcuNSw4LDE2QzgsMTEuNiwx
|
||||
MS42LDgsMTYsOHogTTE2LDI0Yy0xLjUsMC0yLjgtMC40LTQtMS4xTDIyLjksMTJjMC43LDEuMiwxLjEs
|
||||
Mi41LDEuMSw0QzI0LDIwLjQsMjAuNCwyNCwxNiwyNHoiIGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwv
|
||||
c3ZnPgs=
|
||||
</value>
|
||||
</data>
|
||||
<data name="frmAdmin_AppserviceTest.IconOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABEDAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
|
||||
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
|
||||
Y2U9InByZXNlcnZlIiBpZD0iU3RhdGlzdGljYWwiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcg
|
||||
MCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5HcmVlbntmaWxsOiMwMzlDMjM7
|
||||
fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQo8L3N0eWxlPg0KICA8
|
||||
cGF0aCBkPSJNNiwxM2MwLTEuNywxLjMtMywzLTNoMTNWNEgzQzIuNCw0LDIsMy42LDIsM2MwLTAuNiww
|
||||
LjQtMSwxLTFoMTlWMWMwLTAuNi0wLjQtMS0xLTFIM0MxLjMsMCwwLDEuMywwLDN2MjAgIGMwLDEuNywx
|
||||
LjMsMywzLDNoM1YxM3oiIGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNMzEsMTJIOWMtMC41LDAt
|
||||
MSwwLjUtMSwxdjE4YzAsMC41LDAuNSwxLDEsMWgyMmMwLjUsMCwxLTAuNSwxLTFWMTNDMzIsMTIuNSwz
|
||||
MS41LDEyLDMxLDEyeiBNMzAsMzBIMTBWMTRoMjAgIFYzMHoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPHBv
|
||||
bHlnb24gcG9pbnRzPSIxMi43LDI3LjEgMTEuMywyNS43IDE3LDIwIDIwLDIzIDI1LDE4IDI4LjcsMjEu
|
||||
NyAyNy4zLDIzLjEgMjUsMjAuOCAyMCwyNS44IDE3LDIyLjggIiBjbGFzcz0iR3JlZW4iIC8+DQo8L3N2
|
||||
Zz4L
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
211
app/TaskFlow/frmAdmin_AppserviceTest.vb
Normal file
211
app/TaskFlow/frmAdmin_AppserviceTest.vb
Normal file
@@ -0,0 +1,211 @@
|
||||
Imports System.Collections.Concurrent
|
||||
Imports System.Threading
|
||||
Imports System.Threading.Tasks
|
||||
Imports DigitalData.Modules.EDMI.API
|
||||
Imports DigitalData.Modules.EDMI.API.Constants
|
||||
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
|
||||
Imports DigitalData.Modules.Logging
|
||||
Public Class frmAdmin_AppserviceTest
|
||||
|
||||
' ── Lasttest-Felder ────────────────────────────────────────────────────
|
||||
Private _loadClients As List(Of Client) ' Typisiert auf Client statt Object
|
||||
Private _loadTimer As System.Windows.Forms.Timer
|
||||
Private _loadLog As New ConcurrentQueue(Of String)
|
||||
Private _loadCts As CancellationTokenSource
|
||||
Private _timerTick As Integer = 0
|
||||
Private LOAD_CLIENT_COUNT As Integer = 100
|
||||
Private Shared ReadOnly _rnd As New Random() ' ◄ ergänzen
|
||||
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
|
||||
' Status abrufen
|
||||
Dim oStatus = _EDMIClient.GetStatus()
|
||||
LOGGER.Info(oStatus.ToString())
|
||||
|
||||
' Einzelne Felder
|
||||
ListBoxControl1.Items.Clear()
|
||||
|
||||
ListBoxControl1.Items.Add($"Online-Status: {oStatus.IsOnline}")
|
||||
ListBoxControl1.Items.Add($"Channel-State: {oStatus.ChannelState}")
|
||||
ListBoxControl1.Items.Add($"Anzahl Verbindungen: {oStatus.ActiveConnections}")
|
||||
ListBoxControl1.Items.Add($"Cached Tables ({oStatus.CachedTableCount})")
|
||||
If oStatus.IsOnline And oStatus.ChannelState = "Opened" And oStatus.ActiveConnections > 0 And oStatus.CachedTableCount > 1 Then
|
||||
lblServiceOnline.Visible = True
|
||||
lblAppServiceOffline.Visible = False
|
||||
Else
|
||||
lblServiceOnline.Visible = False
|
||||
lblAppServiceOffline.Visible = True
|
||||
End If
|
||||
Dim oClients = _EDMIClient.GetAllClientStatus()
|
||||
ListBoxControl1.Items.Add("=============== Geöffnete Clients ===============")
|
||||
For Each oStatus In oClients
|
||||
ListBoxControl1.Items.Add(oStatus.ToString())
|
||||
LOGGER.Info(oStatus.ToString())
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles btnLoadStart.Click
|
||||
If _loadTimer IsNot Nothing AndAlso _loadTimer.Enabled Then
|
||||
MessageBox.Show("Lasttest läuft bereits.", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
|
||||
Return
|
||||
End If
|
||||
LOAD_CLIENT_COUNT = NumericUpDown1.Value
|
||||
_loadLog = New ConcurrentQueue(Of String)
|
||||
_loadCts = New CancellationTokenSource()
|
||||
_timerTick = 0
|
||||
|
||||
' 150 Client-Verbindungen parallel aufbauen
|
||||
btnLoadStart.Enabled = False
|
||||
btnLoadStop.Enabled = True
|
||||
btnLoadStop.Visible = True
|
||||
ListBoxControl2.Items.Clear()
|
||||
ListBoxControl2.Items.Add($"[{Now:HH:mm:ss}] Baue {LOAD_CLIENT_COUNT} Verbindungen auf…")
|
||||
|
||||
Task.Run(Sub()
|
||||
_loadClients = New List(Of Client)
|
||||
Dim errors As Integer = 0
|
||||
Parallel.For(0, LOAD_CLIENT_COUNT,
|
||||
New ParallelOptions With {.CancellationToken = _loadCts.Token},
|
||||
Sub(i)
|
||||
Try
|
||||
' ► Hier ggf. eigene Client-Factory verwenden
|
||||
Dim oClientName = "PerformanceClient_" & (i + 1)
|
||||
Dim oClient = New Client(LOGCONFIG, CONFIG.Config.EDMIAppServer, oClientName)
|
||||
Dim oConnected = oClient.Connect() ' ◄ Connect() muss aufgerufen werden
|
||||
|
||||
SyncLock _loadClients
|
||||
If oConnected Then ' ◄ nur verbundene hinzufügen
|
||||
_loadClients.Add(oClient)
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Client #{i + 1} verbunden")
|
||||
Else
|
||||
oClient.Dispose()
|
||||
Interlocked.Increment(errors)
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Client #{i + 1} Connect() fehlgeschlagen")
|
||||
End If
|
||||
End SyncLock
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Client #{i + 1} verbunden")
|
||||
Catch ex As Exception
|
||||
Interlocked.Increment(errors)
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Client #{i + 1} Fehler: {ex.Message}")
|
||||
End Try
|
||||
End Sub)
|
||||
|
||||
Me.Invoke(Sub()
|
||||
FlushLoadLog()
|
||||
ListBoxControl2.Items.Add($"[{Now:HH:mm:ss}] {_loadClients.Count} Clients aktiv, {errors} Fehler")
|
||||
StartLoadTimer()
|
||||
End Sub)
|
||||
End Sub)
|
||||
End Sub
|
||||
Private Sub StopLoadTest()
|
||||
_loadCts?.Cancel()
|
||||
If _loadTimer IsNot Nothing Then
|
||||
_loadTimer.Stop()
|
||||
_loadTimer.Dispose()
|
||||
_loadTimer = Nothing
|
||||
End If
|
||||
|
||||
' Alle Client-Verbindungen sauber schließen
|
||||
If _loadClients IsNot Nothing Then
|
||||
For Each oClient In _loadClients
|
||||
Try
|
||||
oClient.Dispose()
|
||||
Catch
|
||||
End Try
|
||||
Next
|
||||
_loadClients.Clear()
|
||||
End If
|
||||
|
||||
ListBoxControl2.Items.Add($"[{Now:HH:mm:ss}] Lasttest beendet.")
|
||||
btnLoadStart.Enabled = True
|
||||
btnLoadStop.Enabled = False
|
||||
End Sub
|
||||
|
||||
' ── Timer für zyklische Lastoperationen ───────────────────────────────
|
||||
Private Sub StartLoadTimer()
|
||||
_loadTimer = New System.Windows.Forms.Timer With {.Interval = 1000} ' jede Sekunde
|
||||
AddHandler _loadTimer.Tick, AddressOf LoadTimer_Tick
|
||||
_loadTimer.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub LoadTimer_Tick(sender As Object, e As EventArgs)
|
||||
_timerTick += 1
|
||||
FlushLoadLog()
|
||||
|
||||
Task.Run(Sub()
|
||||
If _loadClients Is Nothing OrElse _loadClients.Count = 0 Then Return
|
||||
|
||||
Parallel.ForEach(_loadClients,
|
||||
New ParallelOptions With {.CancellationToken = _loadCts.Token},
|
||||
Sub(oClient As Client) ' ◄ Typisiert, wird jetzt tatsächlich genutzt
|
||||
Try
|
||||
Select Case _timerTick Mod 4
|
||||
Case 0
|
||||
' ► GetStatus je Client
|
||||
Dim st = oClient.GetStatus()
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Status: Online={st.IsOnline}, Conn={st.ActiveConnections}")
|
||||
|
||||
Case 1
|
||||
' ► Zufällige DB-Abfrage über den jeweiligen Client
|
||||
Dim iChoice As Integer
|
||||
SyncLock _rnd
|
||||
iChoice = _rnd.Next(0, 3) ' 0, 1 oder 2
|
||||
End SyncLock
|
||||
|
||||
Select Case iChoice
|
||||
Case 0
|
||||
oClient.GetDatatableFromECM("SELECT * FROM TBDD_CONNECTION WITH (NOLOCK) WHERE AKTIV = 1")
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] GetDatatableFromECM → TBDD_CONNECTION")
|
||||
Case 1
|
||||
oClient.GetDatatableFromECM("SELECT * FROM TBDD_USER")
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] GetDatatableFromECM → TBDD_USER")
|
||||
Case 2
|
||||
oClient.GetDatatableFromECM("SELECT * FROM TBDD_GUI_LANGUAGE_PHRASE WITH (NOLOCK) WHERE MODULE IN ('PM','All Modules')")
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] GetDatatableFromECM → TBDD_GUI_LANGUAGE_PHRASE")
|
||||
End Select
|
||||
|
||||
Case 2
|
||||
' ► Cache-Zugriff
|
||||
Dim st = oClient.GetStatus()
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Cached Tables: {st.CachedTableCount}")
|
||||
|
||||
Case 3
|
||||
' ► Channel-State prüfen
|
||||
Dim st = oClient.GetStatus()
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Channel: {st.ChannelState}")
|
||||
End Select
|
||||
Catch ex As OperationCanceledException
|
||||
' Lasttest gestoppt
|
||||
Catch ex As Exception
|
||||
_loadLog.Enqueue($"[{Now:HH:mm:ss}] Fehler: {ex.Message}")
|
||||
End Try
|
||||
End Sub)
|
||||
|
||||
Me.Invoke(Sub() FlushLoadLog())
|
||||
End Sub)
|
||||
End Sub
|
||||
|
||||
' ── Log-Einträge in ListBox schreiben ─────────────────────────────────
|
||||
Private Sub FlushLoadLog()
|
||||
Dim msg As String = Nothing
|
||||
Dim added As Boolean = False
|
||||
While _loadLog.TryDequeue(msg)
|
||||
ListBoxControl2.Items.Add(msg)
|
||||
added = True
|
||||
End While
|
||||
If added Then
|
||||
ListBoxControl2.SelectedIndex = ListBoxControl2.Items.Count - 1
|
||||
End If
|
||||
End Sub
|
||||
|
||||
' ── Aufräumen beim Schließen ──────────────────────────────────────────
|
||||
Private Sub frmAdmin_AppserviceTest_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||||
StopLoadTest()
|
||||
End Sub
|
||||
|
||||
Private Sub btnLoadStop_Click(sender As Object, e As EventArgs) Handles btnLoadStop.Click
|
||||
StopLoadTest()
|
||||
End Sub
|
||||
|
||||
Private Sub frmAdmin_AppserviceTest_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
450
app/TaskFlow/frmMain.Designer.vb
generated
450
app/TaskFlow/frmMain.Designer.vb
generated
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -282,8 +282,13 @@ Public Class frmMain
|
||||
bsiLicenses.Caption = oCaption
|
||||
|
||||
bsiLicenses.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
||||
If EDMIAppServerActive = True Then
|
||||
bbtnitm_Appservice.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
||||
End If
|
||||
|
||||
Else
|
||||
bsiLicenses.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
bbtnitm_Appservice.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
||||
End If
|
||||
|
||||
LOGGER.Debug("Initializing MainForm....")
|
||||
@@ -1784,8 +1789,8 @@ Public Class frmMain
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim elapsed = (DateTime.Now - perfStep).TotalMilliseconds
|
||||
Dim rowCount = If(DT_CURR_WF_ITEMS IsNot Nothing, DT_CURR_WF_ITEMS.Rows.Count, 0)
|
||||
If elapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Datenbank-Abfrage für Workflows LANGSAM: {elapsed}ms ({rowCount} Zeilen) (Schwellwert: 4000ms) - SQL prüfen!")
|
||||
If elapsed > 5000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ Datenbank-Abfrage für Workflows LANGSAM: {elapsed}ms ({rowCount} Zeilen) (Schwellwert: 5000ms) - SQL prüfen!")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] Datenbank-Abfrage für Workflows: {elapsed}ms ({rowCount} Zeilen)")
|
||||
End If
|
||||
@@ -1878,8 +1883,8 @@ Public Class frmMain
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim totalElapsed = (DateTime.Now - perfStart).TotalMilliseconds
|
||||
If totalElapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ GESAMT LANGSAM: {totalElapsed}ms (Schwellwert: 4000ms)")
|
||||
If totalElapsed > 5000 Then
|
||||
LOGGER.Warn($"[PERF LoadOverviewData] ⚠️ GESAMT LANGSAM: {totalElapsed}ms (Schwellwert: 5000ms)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF LoadOverviewData] GESAMT: {totalElapsed}ms")
|
||||
End If
|
||||
@@ -3221,8 +3226,8 @@ Public Class frmMain
|
||||
|
||||
If LOG_HOTSPOTS Then
|
||||
Dim totalElapsed = (DateTime.Now - perfStart).TotalMilliseconds
|
||||
If totalElapsed > 4000 Then
|
||||
LOGGER.Warn($"[PERF Load_Grid_Overview] ⚠️ GESAMT LANGSAM: {totalElapsed}ms (Schwellwert: 4000ms)")
|
||||
If totalElapsed > 5500 Then
|
||||
LOGGER.Warn($"[PERF Load_Grid_Overview] ⚠️ GESAMT LANGSAM: {totalElapsed}ms (Schwellwert: 5500)")
|
||||
Else
|
||||
LOGGER.Info($"[PERF Load_Grid_Overview] GESAMT: {totalElapsed}ms")
|
||||
End If
|
||||
@@ -5176,4 +5181,8 @@ FROM VWPM_PROFILE_ACTIVE T WHERE T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_G
|
||||
Private Sub BarButtonItem3_ItemClick_3(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
|
||||
frmCockpitConfig.Show()
|
||||
End Sub
|
||||
|
||||
Private Sub bbtnitm_Appservice_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitm_Appservice.ItemClick
|
||||
frmAdmin_AppserviceTest.Show()
|
||||
End Sub
|
||||
End Class
|
||||
@@ -958,6 +958,7 @@ Public Class frmValidator
|
||||
|
||||
Public Function Test_Additional_Data_Searches_Exist() As Boolean
|
||||
If DT_FILTERED_PROFILE_SEARCHES_DATA.Rows.Count > 0 Then
|
||||
MyValidationLogger.Debug("Test_Additional_Data_Searches_Exist: Prüfe zusätzliche Datensuchen...")
|
||||
Dim oDataResultCommand As String
|
||||
Dim oDatatableDataResult As DataTable = Nothing
|
||||
|
||||
@@ -965,13 +966,14 @@ Public Class frmValidator
|
||||
'Check whether DocData is there
|
||||
oDataResultCommand = DT_FILTERED_PROFILE_SEARCHES_DATA.Rows(0).Item("SQL_COMMAND")
|
||||
oDataResultCommand = clsPatterns.ReplaceAllValues(oDataResultCommand, PanelValidatorControl, True)
|
||||
oDatatableDataResult = DatabaseFallback.GetDatatable(New GetDatatableOptions(oDataResultCommand, DatabaseType.ECM))
|
||||
oDatatableDataResult = DatabaseFallback.GetDatatableECM(oDataResultCommand)
|
||||
End If
|
||||
|
||||
Dim oDataResultsExist As Boolean = False
|
||||
|
||||
If DT_FILTERED_PROFILE_SEARCHES_DATA.Rows.Count > 0 Then
|
||||
If Not IsNothing(oDatatableDataResult) Then
|
||||
MyValidationLogger.Debug($"Test_Additional_Data_Searches_Exist: Ergebnis-Datatable erhalten mit {oDatatableDataResult.Rows.Count} Zeilen.")
|
||||
If oDatatableDataResult.Rows.Count > 0 Then
|
||||
oDataResultsExist = True
|
||||
End If
|
||||
@@ -986,25 +988,29 @@ Public Class frmValidator
|
||||
End Function
|
||||
Public Function Test_Additional_Doc_Searches_Exist() As Boolean
|
||||
If DT_FILTERED_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
|
||||
MyValidationLogger.Debug("Test_Additional_Doc_Searches_Exist: Prüfe zusätzliche Dokumentensuchen...")
|
||||
Dim oDocResultCommand As String
|
||||
Dim oDatatableDocResult As DataTable = Nothing
|
||||
|
||||
'Check whether DocData is there
|
||||
Dim oConID = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
|
||||
oDocResultCommand = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
|
||||
oDocResultCommand = clsPatterns.ReplaceAllValues(oDocResultCommand, PanelValidatorControl, True)
|
||||
oDatatableDocResult = DatabaseFallback.GetDatatableWithConnection(oDocResultCommand, oConID)
|
||||
oDatatableDocResult = DatabaseFallback.GetDatatableECM(oDocResultCommand)
|
||||
|
||||
Dim oDocResultsExist As Boolean = False
|
||||
If Not IsNothing(oDatatableDocResult) Then
|
||||
MyValidationLogger.Debug($"Test_Additional_Doc_Searches_Exist: Ergebnis-Datatable erhalten mit {oDatatableDocResult.Rows.Count} Zeilen.")
|
||||
If oDatatableDocResult.Rows.Count > 0 Then
|
||||
oDocResultsExist = True
|
||||
DT_AdditionalSearches_Resultset_Docs = oDatatableDocResult
|
||||
End If
|
||||
Else
|
||||
MyValidationLogger.Warn("⚠Test_Additional_Doc_Searches_Exist: Ergebnis-Datatable ist Nothing.")
|
||||
End If
|
||||
|
||||
Return oDocResultsExist
|
||||
Else
|
||||
MyValidationLogger.Debug("Test_Additional_Doc_Searches_Exist: Keine zusätzlichen Dokumentensuchen konfiguriert.")
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
@@ -1117,6 +1123,12 @@ Public Class frmValidator
|
||||
rbnPgGroupAttmt.Visible = AdditionalDataResultsExist OrElse AdditionalDocResultsExist
|
||||
MyValidationLogger.Debug($"rbnPgGroupAttmt.Visible gesetzt auf: {rbnPgGroupAttmt.Visible} | Stack: {New System.Diagnostics.StackTrace(True).ToString().Split(vbCrLf)(1)}")
|
||||
|
||||
If AdditionalDocResultsExist Then
|
||||
Test_Additional_Doc_Searches_Exist()
|
||||
Else
|
||||
DT_AdditionalSearches_Resultset_Docs = Nothing
|
||||
End If
|
||||
|
||||
If Not AdditionalDataResultsExist AndAlso Not AdditionalDocResultsExist Then
|
||||
If _frmValidatorSearch IsNot Nothing AndAlso Not _frmValidatorSearch.IsDisposed Then
|
||||
Dim emptySql As DataTable = allSQLSearches.Clone()
|
||||
|
||||
Reference in New Issue
Block a user