public async Task <Dictionary <string, string> > GetDataByOpertaionTableNameAndId(string tableName, int id, ICollection <string> fields, string databaseName)
        {
            var _schema         = new InformationSchemaDA(connectionString);
            var _operationDA    = new OperationDA(connectionString);
            var _avalibleTables = await _schema.GetAllTablesNameAsync(null, databaseName);

            var _isOperationCantains = _avalibleTables.Any(x => 0 == string.Compare(x, tableName, true));
            var _fields = await _schema.GetAllFieldFromTableAsync(tableName, new CancellationToken(), false);

            Dictionary <string, string> _operationDictionary = null;

            if (_isOperationCantains)
            {
                _operationDictionary = new Dictionary <string, string>();
                var _operationData = await _operationDA.GetDataByOperationByIdAsync(new CancellationToken(), tableName, id, _fields, false);

                if (_operationData == null)
                {
                    return(null);
                }
                foreach (var x in _operationData)
                {
                    _operationDictionary.Add(x.Key, x.Value.ToString());
                }
            }

            return(_operationDictionary);
        }
        private static async void OnNotification(MonitoredItem item, MonitoredItemNotificationEventArgs e)
        {
            try
            {
                foreach (var value in item.DequeueValues())
                {
                    _logger.Info("{0}: {1}, {2}, {3}, {4}", item.DisplayName, item.ResolvedNodeId, value.Value, value.SourceTimestamp, value.StatusCode);
                    Console.WriteLine("{0}: {1}, {2}, {3}, {4}", item.DisplayName, item.ResolvedNodeId, value.Value, value.SourceTimestamp, value.StatusCode);
                    if (value.WrappedValue.TypeInfo.BuiltInType == BuiltInType.Boolean)
                    {
                        if ((bool)value.Value == true)
                        {
                            var _currentoperationData = _operationTriggers.FirstOrDefault(x => x.Value.nodeId == item.ResolvedNodeId);
                            if (_currentoperationData.Key is null)
                            {
                                break;
                            }
                            var _id = _session.ReadValue(_currentoperationData.Value.nodeIdNumSet);

                            var _operation   = _currentoperationData.Key;
                            var _operationId = Int32.Parse(_id.ToString());
                            if (_operationId < 1)
                            {
                                _logger.Info("Operation: {0}; Id: {1}", _operation, _id);
                                _logger.Info("Id was less than 1");
                                return;
                            }

                            var _operationService = new OperationService(_connectionString);
                            var _schema           = new InformationSchemaDA(_connectionString);
                            var _fields           = await _schema.GetAllFieldFromTableAsync(_operation, new CancellationToken(), false);

                            var _result = await _operationService.GetDataByOpertaionTableNameAndId(_operation, _operationId, _fields.ToList(), _databaseName);

                            if (_result == null)
                            {
                                return;
                            }

                            _logger.Info("======================================//--//======================================");
                            Console.WriteLine("{0}: {1}, {2}, {3}, {4}", item.DisplayName, item.ResolvedNodeId, value.Value, value.SourceTimestamp, value.StatusCode);
                            _logger.Info("Operation: {0}; Id: {1}", _operation, _id);
                            _logger.Info("{0}: {1}, {2}, {3}, {4}", item.DisplayName, item.ResolvedNodeId, value.Value, value.SourceTimestamp, value.StatusCode);

                            var _selectedOperation = _operationTriggers.FirstOrDefault(x => 0 == string.Compare(x.Key, _operation, true));

                            foreach (var s in _selectedOperation.Value.items)
                            {
                                if (s.nodeId == null || s.nodeId == 0)
                                {
                                    continue;
                                }

                                var _node = _result.FirstOrDefault(x => 0 == string.Compare("recipe_" + _operation + "_" + x.Key, s.item, true));
                                if (_node.Key != null)
                                {
                                    var _value = OpcConverter.Convert(s.typeInfo.ToString(), _node.Value);
                                    Console.WriteLine("{0}: was updated, value:{1}", _node.Key, _value);

                                    OpcWriter.SetExpectedType(_session, s.nodeId);
                                    OpcWriter.WriteValue(_session, s.nodeId, TypeConverter.Convert(s.typeInfo.ToString(), _node.Value), TypeConverter.Convert(s.typeInfo.ToString()));
                                    _logger.Info("{0}: was updated, value:{1}", _node.Key, _value);
                                }
                            }

                            OpcWriter.SetExpectedType(_session, (_currentoperationData.Value.nodeIdNumGet));
                            OpcWriter.WriteValue(_session, _currentoperationData.Value.nodeIdNumGet, OpcConverter.Convert("long", _id.ToString()), OpcConverter.Convert("long"));
                            Console.WriteLine("Id InumGet: was updated on {0}.", _id);
                            _logger.Info("Id InumGet: was updated on {0}.", _id);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Error OnNotification method: {0}", ex.Message);
            }
        }