コード例 #1
0
        internal static ApplicationStartOption ParseStartEnum(string enumComponents)
        {
            ApplicationStartOption result = 0;

            string[] enumComponentsSplit = enumComponents.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string enumComponent in enumComponentsSplit)
            {
                result |= (ApplicationStartOption)Enum.Parse(typeof(ApplicationStartOption), enumComponent);
            }

            return(result);
        }
コード例 #2
0
        private void StartApplication(string name, Dictionary <string, object> metadata, BtsCatalogExplorer catalog, Application inst)
        {
            ApplicationStartOption startOption =
                ApplicationStartOption.StartAllSendPorts | ApplicationStartOption.StartAllSendPortGroups | ApplicationStartOption.StartAllOrchestrations | ApplicationStartOption.EnableAllReceiveLocations | ApplicationStartOption.DeployAllPolicies;
            object startOptionStr = null;

            if (metadata.TryGetValue("ApplicationStartOptions", out startOptionStr))
            {
                startOption = ControlBizTalkApp.ParseStartEnum((string)startOptionStr);
            }

            this.Log.LogMessage("Starting referenced application '" + name + "'...");
            inst.Start(startOption);
            catalog.SaveChanges();
            this.Log.LogMessage("Started referenced application '" + name + "'.");
        }
コード例 #3
0
        public override bool Execute()
        {
            int retryCount = 5;

            if ((string.IsNullOrEmpty(_startOption) && string.IsNullOrEmpty(_stopOption)) ||
                (!string.IsNullOrEmpty(_startOption) && !string.IsNullOrEmpty(_stopOption)))
            {
                this.Log.LogError("Please specify either StartOption or StopOption.");
                return(false);
            }

            using (BtsCatalogExplorer catalog = BizTalkCatalogExplorerFactory.GetCatalogExplorer())
            {
                Application application = catalog.Applications[_applicationName];
                if (application == null)
                {
                    this.Log.LogError("Unable to find application '{0}' in catalog.", _applicationName);
                    return(false);
                }

                ApplicationStartOption startOption = 0;
                ApplicationStopOption  stopOption  = 0;

                if (!string.IsNullOrEmpty(_startOption))
                {
                    startOption = ParseStartEnum(_startOption);
                }
                else
                {
                    stopOption = ParseStopEnum(_stopOption);
                }

                for (int i = 0; i < retryCount; i++)
                {
                    this.Log.LogMessage("(Retry count {0})", i);
                    try
                    {
                        if (startOption != 0)
                        {
                            this.Log.LogMessage("Starting {0} application...", _applicationName);
                            application.Start(startOption);
                        }
                        else
                        {
                            this.Log.LogMessage("Stopping {0} application...", _applicationName);
                            application.Stop(stopOption);
                        }

                        catalog.SaveChanges();
                        break;
                    }
                    catch (Exception ex)
                    {
                        catalog.DiscardChanges();

                        if (!ex.Message.Contains("deadlocked"))
                        {
                            this.Log.LogErrorFromException(ex, false);
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }