public async Task <NodeInstance> AddNode([FromBody] NodeInstance node) { var transaction = DbContext.Database.BeginTransaction(); try { var entityState = await AddOrUpdateNodeInstance(node); await DbContext.SaveChangesAsync(); await transaction.CommitAsync(); _nodeInstanceCache.Clear(); await ReloadDriver(node, entityState); return(_nodeInstanceCache.Get(node.ObjId)); } catch (Exception e) { transaction.Rollback(); SystemLogger.Instance.LogError(e, $"Could not {nameof(AddNode)} {nameof(NodeInstance)}", e); throw; } }
public async Task AddTrend(Guid nodeInstance) { var node = _nodeCache.Get(nodeInstance); if (node == null) { Logger.LogWarning($"Could not create recorderWriter for {nodeInstance} - not found"); return; } if (!_recorders.ContainsKey(nodeInstance)) { _recorders.Add(nodeInstance, new List <IDataRecorder>()); } _recorders[nodeInstance].Add(new TrendingValueRecorder(node, this)); await Dispatcher.RegisterDispatch(DispatchableType.NodeInstance, nodeInstance, DataCallback); }
public bool Load() { var data = _linkCache.All(); foreach (var entry in data) { if (entry.This2NodeInstance2RulePageInput.HasValue && entry.This2NodeInstance2RulePageOutput.HasValue) // node 2 node { var sourceNode = _nodeInstanceCache.Get(entry.This2NodeInstance2RulePageOutputNavigation.This2NodeInstance); var targetNode = _nodeInstanceCache.Get(entry.This2NodeInstance2RulePageInputNavigation.This2NodeInstance); if (sourceNode == null || targetNode == null) { _logger.LogError($"{nameof(sourceNode)} - ({entry.This2NodeInstance2RulePageOutput}) || {nameof(targetNode)} - ({entry.This2NodeInstance2RulePageInput}) is empty - invalid configuration "); continue; } var inputId = sourceNode; SystemLogger.Instance.LogInformation($"Node2Node - \"{GetFullName(sourceNode)}\" is mapped to \"{GetFullName(targetNode)}\""); _dispatcher.RegisterDispatch(DispatchableType.NodeInstance, sourceNode.ObjId, (dispatchable, o) => { ValueDispatched(dispatchable, o, targetNode.ObjId); }); } else if (entry.This2RuleInterfaceInstanceInput.HasValue && entry.This2RuleInterfaceInstanceOutput.HasValue) // rule 2 rule { var targetNode = _logicInterfaceInstanceCache.Get(entry.This2RuleInterfaceInstanceInput.Value); var sourceNode = _logicInterfaceInstanceCache.Get(entry.This2RuleInterfaceInstanceOutput.Value); if (sourceNode == null || targetNode == null) { _logger.LogError($"{nameof(sourceNode)} - ({entry.This2RuleInterfaceInstanceOutput}) || {nameof(targetNode)} - ({entry.This2RuleInterfaceInstanceInput}) is empty - invalid configuration "); continue; } var inputId = sourceNode.ObjId; SystemLogger.Instance.LogInformation($"Rule2Rule - {sourceNode.This2RuleInstanceNavigation.Name} is mapped to {targetNode.This2RuleInstanceNavigation.Name}"); _dispatcher.RegisterDispatch(DispatchableType.RuleInstance, inputId, (dispatchable, o) => { ValueDispatchToRule(dispatchable, o, targetNode.This2RuleInstance, targetNode); }); } else if (entry.This2RuleInterfaceInstanceInput.HasValue && entry.This2NodeInstance2RulePageOutput.HasValue) // node 2 rule { var sourceNode = _nodeInstanceCache.Get(entry.This2NodeInstance2RulePageOutputNavigation.This2NodeInstance); var targetNode = _logicInterfaceInstanceCache.Get(entry.This2RuleInterfaceInstanceInput.Value); if (sourceNode == null || targetNode == null) { _logger.LogError($"{nameof(sourceNode)} - ({entry.This2NodeInstance2RulePageOutput}) || {nameof(targetNode)} - ({entry.This2RuleInterfaceInstanceInput}) is empty - invalid configuration "); continue; } SystemLogger.Instance.LogInformation($"Node2Rule - \"{GetFullName(sourceNode)}\" is mapped to {targetNode.This2RuleInstanceNavigation.Name}"); _dispatcher.RegisterDispatch(DispatchableType.NodeInstance, sourceNode.ObjId, (dispatchable, o) => { ValueDispatchToRule(dispatchable, o, targetNode.This2RuleInstance, targetNode); }); } else if (entry.This2NodeInstance2RulePageInput.HasValue && entry.This2RuleInterfaceInstanceOutput.HasValue) // rule 2 node { var targetNode = _nodeInstanceCache.Get(entry.This2NodeInstance2RulePageInputNavigation.This2NodeInstance); var sourceNode = _logicInterfaceInstanceCache.Get(entry.This2RuleInterfaceInstanceOutput.Value); if (sourceNode == null || targetNode == null) { _logger.LogError($"{nameof(sourceNode)} - ({entry.This2RuleInterfaceInstanceOutput}) || {nameof(targetNode)} - ({entry.This2NodeInstance2RulePageInput}) is empty - invalid configuration "); continue; } var inputId = sourceNode.ObjId; SystemLogger.Instance.LogInformation($"Rule2Node - {sourceNode.This2RuleInstanceNavigation.Name} is mapped to \"{GetFullName(targetNode)}\""); _dispatcher.RegisterDispatch(DispatchableType.RuleInstance, inputId, (dispatchable, o) => { ValueDispatched(dispatchable, o, targetNode.ObjId); }); } } return(true); }
public NodeInstance GetSingle(Guid guid) { return(_nodeInstanceCache.Get(guid)); }