Ejemplo n.º 1
0
        //allows adding or modifying a destination for a specific application server
        public void AddOrEditDestination(ConnectionInformations ci)
        {
            //in productive code the given parameters should be checked for validity, e.g. that name is not null
            //as this is not relevant for the example, we omit it here
            RfcConfigParameters par = new RfcConfigParameters();

            par.Add(RfcConfigParameters.Name, ci.Name);
            par.Add(RfcConfigParameters.AppServerHost, ci.AppServerHost);
            par.Add(RfcConfigParameters.SystemNumber, ci.SystemNumber);
            par.Add(RfcConfigParameters.SystemID, ci.SystemID);
            par.Add(RfcConfigParameters.User, ci.User);
            par.Add(RfcConfigParameters.Password, ci.Password);
            par.Add(RfcConfigParameters.Client, ci.Client);
            par.Add(RfcConfigParameters.Language, ci.Language);
            par.Add(RfcConfigParameters.PoolSize, ci.PoolSize);
            par.Add(RfcConfigParameters.MaxPoolSize, ci.MaxPoolSize);
            par.Add(RfcConfigParameters.IdleTimeout, ci.IdleTimeout);
            par.Add(RfcConfigParameters.SAPRouter, ci.SAPRouter);
            RfcConfigParameters existingConfiguration;

            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(ci.Name, out existingConfiguration))
            {
                availableDestinations[ci.Name] = par;
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, par);
                if (changeHandler != null)
                {
                    changeHandler(ci.Name, eventArgs);
                }
            }
            else
            {
                availableDestinations[ci.Name] = par;
            }
        }
Ejemplo n.º 2
0
        //allows adding or modifying a destination for a specific application server
        public void AddOrEditDestination(string name, int poolSize, string user, string password, string language, string client, string applicationServer, string systemNumber)
        {
            //in productive code the given parameters should be checked for validity, e.g. that name is not null
            //as this is not relevant for the example, we omit it here
            RfcConfigParameters parameters = new RfcConfigParameters();

            parameters[RfcConfigParameters.Name]          = name;
            parameters[RfcConfigParameters.MaxPoolSize]   = Convert.ToString(poolSize);
            parameters[RfcConfigParameters.IdleTimeout]   = Convert.ToString(6); // we keep connections for 10 minutes
            parameters[RfcConfigParameters.User]          = user;
            parameters[RfcConfigParameters.Password]      = password;
            parameters[RfcConfigParameters.Client]        = client;
            parameters[RfcConfigParameters.Language]      = language;
            parameters[RfcConfigParameters.AppServerHost] = applicationServer;
            parameters[RfcConfigParameters.SystemNumber]  = systemNumber;
            RfcConfigParameters existingConfiguration;

            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(name, out existingConfiguration))
            {
                availableDestinations[name] = parameters;
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);
                MessageBox.Show("Fire change event " + eventArgs.ToString() + " for destination " + name);
                changeHandler(name, eventArgs);
            }
            else
            {
                availableDestinations[name] = parameters;
            }

            //MessageBox.Show("Added application server destination " + name);
        }
Ejemplo n.º 3
0
        public void AddOrEditDestination(RfcConfigParameters parameters)
        {
            string name = parameters[RfcConfigParameters.Name];

            if (availableDestinations.ContainsKey(name))
            {
                // Fire a change event
                if (ConfigurationChanged != null)

                /* Always check for null on event handlers... If AddOrEditDestination() gets called before this
                 * instance of InMemoryDestinationConfiguration is registered with the RfcDestinationManager, we
                 * would get a NullReferenceException when trying to raise the event... Stupid concept.
                 * Why doesn't the .NET framework do this for me?
                 */
                {
                    RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);
                    Console.WriteLine("Firing change event {0} for destination {1}", eventArgs.ToString(), name);
                    ConfigurationChanged(name, eventArgs);
                }
            }

            // Replace the current parameters of an existing destination or add a new one
            availableDestinations[name] = parameters;

            string tmp;

            Console.WriteLine("{1} destination {0} added/changed",
                              name,
                              parameters.TryGetValue(RfcConfigParameters.LogonGroup, out tmp) ? "Load balancing" : "Application server");
        }
Ejemplo n.º 4
0
        public Boolean AddOrEditDestination(RfcConfigParameters rfcConfigParameters)
        {
            Boolean isRegistered = false;

            try
            {
                String name = rfcConfigParameters[RfcConfigParameters.Name];
                if (_configurationList.ContainsKey(name))
                {
                    if (ConfigurationChanged != null)
                    {
                        RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, rfcConfigParameters);
                        ConfigurationChanged(name, eventArgs);
                    }
                }

                _configurationList[name] = rfcConfigParameters;
                isRegistered             = true;
            }
            catch (Exception e)
            {
                throw e;
            }
            return(isRegistered);
        }
Ejemplo n.º 5
0
 public void RemoveDestination(string name)
 {
     if (!string.IsNullOrEmpty(name) && availableDestinations.Remove(name))
     {
         RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.DELETED);
         changeHandler(name, eventArgs);
     }
 }
Ejemplo n.º 6
0
        public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; // muss vorhanden sein

        public void AddDestination(RfcConfigParameters parameters)
        {
            // name aus der Config holen
            string name = parameters[RfcConfigParameters.Name];

            if (availableDestinations.ContainsKey(name))
            {
                //checked for null on event handler, um NullReferenceException zu vermeiden (Aufruf bevor eine destination registriert)
                if (ConfigurationChanged != null)
                {
                    RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);
                    Console.WriteLine("Firing change event {0} for destination {1}", eventArgs.ToString(), name);
                    ConfigurationChanged(name, eventArgs);
                }
            }
            // erstelle eine destination
            availableDestinations[name] = parameters;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Called by constructor, adds Rfc params contained in
        /// Xml document.
        /// </summary>
        /// <param name="destinationName">The destination name used in repositiry</param>
        /// <returns>The collection of RFC parameters</returns>
        public void UpdateParameters(XmlDocument configDOM)
        {
            RfcConfigParameters parameters = new RfcConfigParameters();

            parameters.Add(RfcConfigParameters.AppServerHost, SAPIDocUtils.Extract(configDOM, "/Config/appServerHost").ToString());
            parameters.Add(RfcConfigParameters.Client, SAPIDocUtils.Extract(configDOM, "/Config/client").ToString());
            parameters.Add(RfcConfigParameters.Language, SAPIDocUtils.Extract(configDOM, "/Config/language").ToString());
            parameters.Add(RfcConfigParameters.MaxPoolSize, SAPIDocUtils.Extract(configDOM, "/Config/maxPoolSize").ToString());
            parameters.Add(RfcConfigParameters.MaxPoolWaitTime, SAPIDocUtils.Extract(configDOM, "/Config/maxPoolSizeWaitTime").ToString());
            parameters.Add(RfcConfigParameters.MessageServerHost, SAPIDocUtils.Extract(configDOM, "/Config/messageServerHost").ToString());
            //parameters.Add(RfcConfigParameters.PoolSize, SAPIDocUtils.Extract(configDOM, "/Config/poolSize"));
            parameters.Add(RfcConfigParameters.SystemID, SAPIDocUtils.Extract(configDOM, "/Config/systemID").ToString());
            parameters.Add(RfcConfigParameters.SystemNumber, SAPIDocUtils.Extract(configDOM, "/Config/systemNumber").ToString());

            parameters.Add(RfcConfigParameters.User, SAPIDocUtils.Extract(configDOM, "/Config/username"));
            parameters.Add(RfcConfigParameters.Password, SAPIDocUtils.Extract(configDOM, "/Config/password"));

            parameters.Add(RfcConfigParameters.RepositoryDestination, _destinationName);

            RfcConfigParameters existingConfiguration;

            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(_destinationName, out existingConfiguration))
            {
                availableDestinations[_destinationName] = parameters;
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);

                System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + _destinationName);

                // fire changed event
                if (ConfigurationChanged != null)
                {
                    ConfigurationChanged(_destinationName, eventArgs);
                }
            }
            else
            {
                availableDestinations[_destinationName] = parameters;
            }
        }
        public void AddOrEditDestination(RfcConfigParameters parameters)
        {
            string name = parameters[RfcConfigParameters.Name];

            if (_availableDestinations.ContainsKey(name))
            {
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);

                if (ConfigurationChanged != null)
                {
                    ConfigurationChanged(name, eventArgs);
                }
            }

            _availableDestinations[name] = parameters;
            string tmp = "Application server";
            bool isLoadValancing = parameters.TryGetValue(RfcConfigParameters.LogonGroup, out tmp);
            if (isLoadValancing)
            {
                tmp = "Load balancing";
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Overloaded method called by constructor to add
        /// hard0-coded values to RfcConfigparams
        /// </summary>
        /// <param name="destinationName">The destination name used in repositiry</param>
        /// <returns>The collection of RFC parameters</returns>
        private void AddParameters(String destinationName)
        {
            if ("SAP_IDOC_DESTINATION_CONFIG".Equals(destinationName))
            {
                RfcConfigParameters parameters = new RfcConfigParameters();
                parameters.Add(RfcConfigParameters.AppServerHost, "10.2.17.78");
                parameters.Add(RfcConfigParameters.Client, "120");
                parameters.Add(RfcConfigParameters.Language, "EN");
                parameters.Add(RfcConfigParameters.MaxPoolSize, "10");
                parameters.Add(RfcConfigParameters.MaxPoolWaitTime, "300");
                parameters.Add(RfcConfigParameters.MessageServerHost, "10.2.17.78");
                parameters.Add(RfcConfigParameters.SystemID, "DR3");
                parameters.Add(RfcConfigParameters.SystemNumber, "00");

                parameters.Add(RfcConfigParameters.User, "biztalk");
                parameters.Add(RfcConfigParameters.Password, "klatzib1");

                RfcConfigParameters existingConfiguration;

                //if a destination of that name existed before, we need to fire a change event
                if (availableDestinations.TryGetValue(destinationName, out existingConfiguration))
                {
                    availableDestinations[destinationName] = parameters;
                    RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);

                    System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + destinationName);

                    // fire changed event
                    if (ConfigurationChanged != null)
                    {
                        ConfigurationChanged(destinationName, eventArgs);
                    }
                }
                else
                {
                    availableDestinations[destinationName] = parameters;
                }
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Called by constructor
        /// </summary>
        /// <param name="serverName"></param>
        public void AddParameters(string serverName, string progId)//, string destinationName)
        {
            // temp hard-coded for prototyping
            string destinationName = "SAP_IDOC_DESTINATION_CONFIG";


            RfcConfigParameters parameters = new RfcConfigParameters();

            parameters.Add(RfcConfigParameters.Name, serverName);
            parameters.Add(RfcConfigParameters.RepositoryDestination, destinationName);
            parameters.Add(RfcConfigParameters.GatewayHost, "10.2.17.78");
            parameters.Add(RfcConfigParameters.GatewayService, "3300");
            parameters.Add(RfcConfigParameters.ProgramID, progId);
            parameters.Add(RfcConfigParameters.RegistrationCount, "1");

            RfcConfigParameters existingConfiguration;


            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(serverName, out existingConfiguration))
            {
                availableDestinations[serverName] = parameters;

                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, _parameters);

                System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + serverName);


                // fire changed event
                if (ConfigurationChanged != null)
                {
                    ConfigurationChanged(serverName, eventArgs);
                }
            }
            else
            {
                availableDestinations[serverName] = parameters;
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Called from constructor
        /// </summary>
        /// <param name="locationConfigDom">Xml containing parameters, passed by BizTalk</param>
        public void UpdateParameters(string serverName, string destinationName, XmlDocument configDOM)
        {
            RfcConfigParameters parameters = new RfcConfigParameters();

            parameters.Add(RfcConfigParameters.RepositoryDestination, destinationName);

            parameters.Add(RfcConfigParameters.Name, serverName);

            parameters.Add(RfcConfigParameters.GatewayHost, SAPIDocUtils.Extract(configDOM, "/Config/gatewayHost").ToString());
            parameters.Add(RfcConfigParameters.GatewayService, SAPIDocUtils.Extract(configDOM, "/Config/gatewayService").ToString());
            parameters.Add(RfcConfigParameters.ProgramID, SAPIDocUtils.Extract(configDOM, "/Config/programID").ToString());
            parameters.Add(RfcConfigParameters.RegistrationCount, SAPIDocUtils.Extract(configDOM, "/Config/registrationCount").ToString());
            parameters.Add(RfcConfigParameters.Trace, SAPIDocUtils.ExtractUInt(configDOM, "/Config/rfcTrace").ToString());


            RfcConfigParameters existingConfiguration;

            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(serverName, out existingConfiguration))
            {
                availableDestinations[serverName] = parameters;

                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);

                System.Diagnostics.Trace.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + serverName);

                // fire changed event
                if (ConfigurationChanged != null)
                {
                    ConfigurationChanged(serverName, eventArgs);
                }
            }
            else
            {
                availableDestinations[serverName] = parameters;
            }
        }
Ejemplo n.º 12
0
        //allows adding or modifying a destination for a group/server selection
        public void AddOrEditDestination(string name,
            int poolSize,
            string user,
            string password,
            string language,
            string client,
            string messageServerService,
            string messageServerHost,
            string logonGroup)
        {
            //in productive code the given parameters should be checked for validity, e.g. that name is not null
            //as this is not relevant for the example, we omit it here
            RfcConfigParameters parameters = new RfcConfigParameters();
            parameters[RfcConfigParameters.Name] = name;
            parameters[RfcConfigParameters.MaxPoolSize] = Convert.ToString(poolSize);
            parameters[RfcConfigParameters.IdleTimeout] = Convert.ToString(6); // we keep connections for 10 minutes
            parameters[RfcConfigParameters.User] = user;
            parameters[RfcConfigParameters.Password] = password;
            parameters[RfcConfigParameters.Client] = client;
            parameters[RfcConfigParameters.Language] = language;
            parameters[RfcConfigParameters.MessageServerService] = messageServerService;
            parameters[RfcConfigParameters.MessageServerHost] = messageServerHost;
            parameters[RfcConfigParameters.LogonGroup] = logonGroup;
            RfcConfigParameters existingConfiguration;

            //if a destination of that name existed before, we need to fire a change event
            if (availableDestinations.TryGetValue(name, out existingConfiguration))
            {
                availableDestinations[name] = parameters;
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, parameters);
                MessageBox.Show("Fire change event " + eventArgs.ToString() + " for destination " + name);
                changeHandler(name, eventArgs);
            }
            else
            {
                availableDestinations[name] = parameters;
            }

            //MessageBox.Show("Added application server destination " + name);
        }
        //allows adding or modifying a destination for a specific application server
        public void AddEditDestination(string name, int poolSize, string user, string password, string language,
            string client, string applicationServer, string systemNumber)
        {
            // We need to check the given parameters for validity, e.g. that name is not null as this is not
            // relevant
            RfcConfigParameters newConfigParameters = new RfcConfigParameters();
            newConfigParameters[RfcConfigParameters.Name] = name;
            newConfigParameters[RfcConfigParameters.PeakConnectionsLimit] = Convert.ToString(poolSize);
            newConfigParameters[RfcConfigParameters.IdleTimeout] = Convert.ToString(10); // we keep connections for 10 minutes
            newConfigParameters[RfcConfigParameters.User] = user;
            newConfigParameters[RfcConfigParameters.Password] = password;
            newConfigParameters[RfcConfigParameters.Client] = client;
            newConfigParameters[RfcConfigParameters.Language] = language;
            newConfigParameters[RfcConfigParameters.AppServerHost] = applicationServer;
            newConfigParameters[RfcConfigParameters.SystemNumber] = systemNumber;
            RfcConfigParameters existingConfiguration;
            //if a destination of that name existed before, we need to fire a change event
            if (sapDestinations.TryGetValue(name, out existingConfiguration))
            {
                sapDestinations[name] = newConfigParameters;
                RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, newConfigParameters);
                Console.WriteLine("Fire change event " + eventArgs.ToString() + " for destination " + name);
                changeHandler(name, eventArgs);
            }
            else
            {
                sapDestinations[name] = newConfigParameters;
            }
            Console.WriteLine("Added application server destination " + name);

            // print the destination attributwes
            printDestination(name);
        }
 //allows adjusting the pool size of existing destinations at runtime
 //if such a destination existed
 public bool AdjustPoolSize(string destinationName, int newPoolSize)
 {
     if (destinationName != null)
     {
         RfcConfigParameters existingConfiguration;
         //if a destination of that name exists, we can actually adjust it
         if (sapDestinations.TryGetValue(destinationName, out existingConfiguration))
         {
             existingConfiguration[RfcConfigParameters.PeakConnectionsLimit] = Convert.ToString(newPoolSize);
             RfcConfigurationEventArgs eventArgs = new RfcConfigurationEventArgs(RfcConfigParameters.EventType.CHANGED, existingConfiguration);
             Console.WriteLine("Fire change event " + eventArgs.ToString() + " (poolsize adjusted) for destination " + destinationName);
             changeHandler(destinationName, eventArgs);
             return true;
         }
     }
     return false;
 }