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); }
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); }
/// <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; } } }