feat: add JoeAppEngine OPC UA nodes, fix DCL auto-reconnect and quality push
- Add JoeAppEngine folder to OPC UA nodes.json (BTCS, AlarmCntsBySeverity, Scheduler/ScanTime) - Fix DataConnectionActor: capture Self in PreStart for use from non-actor threads, preventing Self.Tell failure in Disconnected event handler - Implement InstanceActor.HandleConnectionQualityChanged to mark attributes Bad on disconnect - Fix LmxFakeProxy TagMapper to serialize arrays as JSON instead of "System.Int32[]" - Allow DataType and DataSourceReference updates in TemplateService.UpdateAttributeAsync - Update test_infra_opcua.md with JoeAppEngine documentation
This commit is contained in:
@@ -476,9 +476,10 @@
|
||||
_validationResult = null;
|
||||
try
|
||||
{
|
||||
// Use the ValidationService for on-demand validation
|
||||
// Use the full validation pipeline via TemplateService
|
||||
// This performs flattening, collision detection, script compilation,
|
||||
// trigger reference validation, and connection binding checks
|
||||
var validationService = new ValidationService();
|
||||
// Build a minimal flattened config from the template's direct members for validation
|
||||
var flatConfig = new Commons.Types.Flattening.FlattenedConfiguration
|
||||
{
|
||||
InstanceUniqueName = $"validation-{_selectedTemplate.Name}",
|
||||
@@ -511,6 +512,17 @@
|
||||
}).ToList()
|
||||
};
|
||||
_validationResult = validationService.Validate(flatConfig);
|
||||
|
||||
// Also check for naming collisions across the inheritance/composition graph
|
||||
var collisions = await TemplateService.DetectCollisionsAsync(_selectedTemplate.Id);
|
||||
if (collisions.Count > 0)
|
||||
{
|
||||
var collisionErrors = collisions.Select(c =>
|
||||
Commons.Types.Flattening.ValidationEntry.Error(
|
||||
Commons.Types.Flattening.ValidationCategory.NamingCollision, c)).ToArray();
|
||||
var collisionResult = new Commons.Types.Flattening.ValidationResult { Errors = collisionErrors };
|
||||
_validationResult = Commons.Types.Flattening.ValidationResult.Merge(_validationResult, collisionResult);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user