コード例 #1
0
ファイル: GuidanceManager.cs プロジェクト: dbremner/nupattern
        internal void CompleteInitializationOfUnfoldedExtension(string extensionId,
                                                                IGuidanceExtension extensionInstance)
        {
            //
            // First, find the instance and fixup the workflow
            //
            foreach (var x in instantiatedGuidanceExtensions.ToList())
            {
                if (x.Item1.InstanceName == extensionInstance.InstanceName)
                {
                    GuidanceExtension fx = x.Item1 as GuidanceExtension;
                    fx.GuidanceWorkflow = extensionInstance.GuidanceWorkflow;
                    break;
                }
            }

            //
            // Then add this FX to the solution (if desired)
            //
            if (extensionInstance.PersistInstanceInSolution)
            {
                var registration = this.InstalledGuidanceExtensions.First(f => f.ExtensionId == extensionId);
                solutionState.AddExtension(extensionId, extensionInstance.InstanceName, registration.ExtensionManifest.Header.Version);
            }

            //
            // Update the InstantiatedExtensions list which will get the workflow into the
            // Workflow Explorer
            InstantiatedExtensionsChanged(this, EventArgs.Empty);
            RaisePropertyChanged(x => x.InstantiatedGuidanceExtensions);
        }
コード例 #2
0
            public void InitializeContext()
            {
                this.store.TransactionManager.DoWithinTransaction(() =>
                {
                    var patternModel  = store.ElementFactory.CreateElement <PatternModelSchema>();
                    this.product      = patternModel.Create <PatternSchema>();
                    this.product.Name = "WebService";
                });

                this.guidanceExtension = ExtensionElement.GetExtension <GuidanceExtension>(this.product);
            }
コード例 #3
0
ファイル: GuidanceManager.cs プロジェクト: dbremner/nupattern
        /// <summary>
        /// Instantiates the given extension in the current solution.
        /// </summary>
        /// <param name="extensionId">Identifier for the extension type.</param>
        /// <param name="instanceName">Name to assign to the newly created extension instance.</param>
        /// <returns>The instantiated extension.</returns>
        public IGuidanceExtension Instantiate(string extensionId, string instanceName)
        {
            Guard.NotNullOrEmpty(() => extensionId, extensionId);

            using (tracer.StartActivity(Resources.GuidanceManager_TraceInstantiateExtension, instanceName, extensionId))
            {
                try
                {
                    // Gets the installed version of the extension
                    var registration = this.InstalledGuidanceExtensions.First(f => f.ExtensionId == extensionId);

                    if (string.IsNullOrEmpty(instanceName))
                    {
                        instanceName = registration.DefaultName;
                    }

                    //this.ThrowIfNoSolutionState();
                    this.ThrowIfExtensionNotInstalled(extensionId);
                    this.ThrowIfAlreadyInstantiated(extensionId, instanceName);

                    var extension = this.InitializeExtension(extensionId,
                                                             instanceName,
                                                             registration,
                                                             registration.ExtensionManifest.Header.Version,
                                                             true);

                    if (registration != null && extension != null)
                    {
                        extension = InitializeExtension(registration.ExtensionId,
                                                        instanceName,
                                                        registration,
                                                        registration.ExtensionManifest.Header.Version,
                                                        false);
                        extension.PostInitialize();

                        //
                        // Finally, find the instance and fixup the workflow
                        //
                        foreach (var x in instantiatedGuidanceExtensions.ToList())
                        {
                            if (x.Item1.InstanceName == extension.InstanceName)
                            {
                                GuidanceExtension fx = x.Item1 as GuidanceExtension;
                                fx.GuidanceWorkflow = extension.GuidanceWorkflow;
                                break;
                            }
                        }
                        //
                        // Update the InstantiatedExtensions list which will get the workflow into the
                        // Workflow Explorer
                        InstantiatedExtensionsChanged(this, EventArgs.Empty);
                        RaisePropertyChanged(x => x.InstantiatedGuidanceExtensions);
                    }
                    return(extension);
                }
                catch (Exception ex)
                {
                    tracer.Error(ex, Resources.GuidanceManager_TraceFailedInstantiate);
                    throw;
                }
            }
        }