/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { this.MessageTemplate = currentMessageTemplate; base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } ServiceReference serviceReference = currentTarget as ServiceReference; if (serviceReference == null) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { ServiceContractModel dcm = referencedElement.Store.ElementDirectory.FindElements <ServiceContractModel>()[0]; if (dcm.ImplementationTechnology == null || String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) || !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this)); } } } }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { // store default message (in case the error comes from a DC element) and set our new message dcModelMessageTemplate = this.MessageTemplate; this.MessageTemplate = currentMessageTemplate; // Validate cross model references base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { DataContractModel dcm = referencedElement.Store.ElementDirectory.FindElements<DataContractModel>()[0]; if (dcm.ImplementationTechnology == null || String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) || !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget),StringComparison.OrdinalIgnoreCase)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.dcModelMessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this)); } } } }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { // store default message (in case the error comes from a DC element) and set our new message dcModelMessageTemplate = this.MessageTemplate; this.MessageTemplate = currentMessageTemplate; // Validate cross model references base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { DataContractModel dcm = referencedElement.Store.ElementDirectory.FindElements <DataContractModel>()[0]; if (dcm.ImplementationTechnology == null || String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) || !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.dcModelMessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this)); } } } }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { this.MessageTemplate = currentMessageTemplate; base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } ServiceReference serviceReference = currentTarget as ServiceReference; if (serviceReference == null) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { ServiceContractModel dcm = referencedElement.Store.ElementDirectory.FindElements<ServiceContractModel>()[0]; if (dcm.ImplementationTechnology == null || String.IsNullOrWhiteSpace(dcm.ProjectMappingTable) || !dcm.ImplementationTechnology.Name.Equals(GetItName(currentTarget), StringComparison.OrdinalIgnoreCase)) { validationResults.AddResult( new ValidationResult(String.Format(CultureInfo.CurrentUICulture, this.MessageTemplate, ValidatorUtility.GetTargetName(currentTarget)), currentTarget, key, String.Empty, this)); } } } }
protected override ModelBusAdapter DoCreateAdapter(ModelBusReference reference, IServiceProvider serviceProvider) { this.CheckCanCreateAdapter(reference); ModelingAdapter item = null; ModelingDocumentHandler documentHandler = null; ModelingAdapterReference adapterReference = reference.AdapterReference as ModelingAdapterReference; try { documentHandler = this.CreateDocumentHandler(adapterReference, base.ModelBus); if (documentHandler == null) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } item = this.CreateModelingAdapterInstance(reference, documentHandler.Root); if (item == null) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } if (!item.TrySetDocumentHandler(documentHandler)) { throw new AdapterCreationException(Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusExceptionMessages.UnknownErrorOccurred); } } catch (Exception) { if (documentHandler != null) { documentHandler.Dispose(); } throw; } disposeList.Add(item); return(item); }
public static ModelElement ResolveAndDispose(ModelBusReference reference) { if(reference == null) return null; using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { return resolver.Resolve(reference); } }
public ModelElement Resolve(ModelBusReference reference) { if (reference != null) { this.modelAdapter = CreateModelBusAdapter(reference); return(modelAdapter.ResolveElementReference(reference) as ModelElement); } return(null); }
private string GetDcImplementationTechnology(ModelBusReference reference) { using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(reference); DataContractModel dcm = DomainModelHelper.GetElement <DataContractModel>(referencedElement.Store); return((dcm == null || dcm.ImplementationTechnology == null) ? string.Empty : dcm.ImplementationTechnology.Name); } }
public ModelElement Resolve(ModelBusReference reference) { if (reference != null) { this.modelAdapter = CreateModelBusAdapter(reference); return modelAdapter.ResolveElementReference(reference) as ModelElement; } return null; }
public static ModelElement ResolveAndCache(ModelBusReference reference) { if (reference == null) { return(null); } ModelBusAdapter modelAdapter = GlobalCache.AddOrGetExisting <ModelBusAdapter>(reference.ModelDisplayName, c => CreateModelBusAdapter(reference)); return(modelAdapter.ResolveElementReference(reference) as ModelElement); }
public static ModelElement ResolveAndDispose(ModelBusReference reference) { if (reference == null) { return(null); } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { return(resolver.Resolve(reference)); } }
public static ProcessOverviewDiagram GetProcessOverviewDiagram(ModelBusReference processReference) { ProcessOverviewDiagram diagram = null; using (var adapter = processReference.ModelBus.CreateAdapter(processReference)) { ModelBusView view = adapter.GetDefaultView(); diagram = ((StandardVsModelingDiagramView)view).Diagram as ProcessOverviewDiagram; } return diagram; }
public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { string file = GetFileLocation(modelLocatorInfo); if (file != null) { // Create the part of the reference which depends on the Adapter ModelingAdapterReference mar = new ModelingAdapterReference(null, null, file); // And aggregate it with the adapter manager's part ModelBusReference mbr = new ModelBusReference( this.ModelBus, ServiceContractDslAdapter.AdapterId, Path.GetFileNameWithoutExtension(file), mar); return(mbr); } return(null); }
public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { string file = GetFileLocation(modelLocatorInfo); if (file != null) { // Create the part of the reference which depends on the Adapter ModelingAdapterReference mar = new ModelingAdapterReference(null, null, file); // And aggregate it with the adapter manager's part ModelBusReference mbr = new ModelBusReference( this.ModelBus, ServiceContractDslAdapter.AdapterId, Path.GetFileNameWithoutExtension(file), mar); return mbr; } return null; }
/// <summary> /// Attempts to create and return a model bus reference from the supplied data. /// </summary> public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { EnvDTE.ProjectItem item = GetProjectItem(modelLocatorInfo); if (item == null) { return null; } ModelingAdapterReference mar = new ModelingAdapterReference(null, null, item.get_FileNames(1)); ModelBusReference mbr = new ModelBusReference( this.ModelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(item.Name), mar); return mbr; }
/// <summary> /// Attempts to create and return a model bus reference from the supplied data. /// </summary> public override ModelBusReference CreateReference(params object[] modelLocatorInfo) { EnvDTE.ProjectItem item = GetProjectItem(modelLocatorInfo); if (item == null) { return(null); } ModelingAdapterReference mar = new ModelingAdapterReference(null, null, item.get_FileNames(1)); ModelBusReference mbr = new ModelBusReference( this.ModelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(item.Name), mar); return(mbr); }
public static SubProcess CreateNewSubProcess(string subProcessName, ProjectItem subProcessItem, ModelBusReference processReference) { var store = new Store(typeof(CloudCoreArchitectSubProcessDomainModel)); var partition = new Partition(store); var result = new SerializationResult(); using (Transaction t = store.TransactionManager.BeginTransaction("create new model")) { try { var subProcessDSLSerializationHelper = CloudCoreArchitectSubProcessSerializationHelper.Instance; SubProcess subProcess = subProcessDSLSerializationHelper.CreateModelHelper(partition); SetSubProcessSettings(subProcessName, subProcess, processReference); CreateAndSaveSubProcessFile(partition, result, subProcessItem.FileNames[0], subProcessDSLSerializationHelper, subProcess); ModelBusReference subProcessReference = GetSubProcessOverviewFileModelBusReference(subProcessItem.FileNames[0]); ProcessOverview.ProcessOverviewDiagram diagram = ProcessOverview.CustomCode.Helpers.ProcessFileHelper.GetProcessOverviewDiagram(processReference); ProcessOverview.Process process = diagram.ModelElement as ProcessOverview.Process; Architect.ProcessOverview.SubProcessElement subProcessElement = null; using (Transaction tB = diagram.Store.TransactionManager.BeginTransaction("create subprocess element")) { subProcessElement = ProcessOverview.CustomCode.Helpers.ProcessFileHelper.CreateSubProcessElement(subProcessName, process.Partition, process, subProcess, subProcessReference); tB.Commit(); } t.Commit(); ProcessOverview.CustomCode.Helpers.ProcessFileHelper.SetAddedSubProcessReference(subProcessReference, subProcessItem.Name, processReference, subProcessElement); return subProcess; } catch (Exception ex) { MessageBox.Show(ex.Message); } return null; } }
/// <summary> /// Serializes the model element reference to marshal across the T4 app domain. /// </summary> protected virtual string SerializeReference() { var modelBus = this.ServiceProvider.GetService <SModelBus, IModelBus>(); if (modelBus == null) { throw new InvalidOperationException(string.Format( CultureInfo.CurrentCulture, Resources.ServiceUnavailable, typeof(IModelBus))); } var instanceType = this.ModelElement.GetType(); var adapter = (from manager in modelBus.FindAdapterManagers(new object[] { this.ModelFile }) from adapterId in manager.GetSupportedLogicalAdapterIds() where manager.GetExposedElementTypes(adapterId).Any(type => type.Type.IsAssignableFrom(instanceType)) select new { Manager = manager, AdapterId = adapterId }) .FirstOrDefault(); if (adapter == null) { throw new InvalidOperationException(string.Format( CultureInfo.CurrentCulture, Resources.GenerateModelingCodeCommand_ModelBusAdapterRequired, this.ModelFile, instanceType)); } var busReference = new ModelBusReference( modelBus, adapter.AdapterId, Path.GetFileNameWithoutExtension(this.ModelFile), instanceType.Name, new ModelingAdapterReference(this.ModelElement.Id.ToString(), null, this.ModelFile)); return(modelBus.SerializeReference(busReference)); }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } ServiceReference serviceReference = currentTarget as ServiceReference; if (serviceReference == null) { return; } using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(objectToValidate); if (referencedElement != null) { ServiceContractModel scm = DomainModelHelper.GetElement <ServiceContractModel>(referencedElement.Store); if (scm != null && scm.ImplementationTechnology != null) { if (serviceReference.HostApplication.ImplementationTechnology != null && !serviceReference.HostApplication.ImplementationTechnology.Name.Equals( scm.ImplementationTechnology.Name)) { this.LogValidationResult( validationResults, string.Format(CultureInfo.CurrentCulture, this.MessageTemplate, serviceReference.Name), currentTarget, key); } } } } }
public void WhenCreatingReference_ThenUsesAdapter() { var stateFile = this.solution.Find<IItem>(item => item.Name.EndsWith(StoreConstants.RuntimeStoreExtension)).First(); var manager = this.modelBus.FindAdapterManagers(new object[] { stateFile.PhysicalPath }).FirstOrDefault(); Assert.NotNull(manager); Assert.True(manager.CanCreateReference(new object[] { stateFile.PhysicalPath })); var mar = new ModelingAdapterReference(null, null, stateFile.PhysicalPath); var mbr = new ModelBusReference(this.modelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(stateFile.Name), mar); using (var adapter = this.modelBus.CreateAdapter(mbr, VsIdeTestHostContext.ServiceProvider)) { var withRoot = adapter as IModelingAdapterWithRootedModel; var state = ((IProductState)withRoot.ModelRoot).Products.First(); var elementRef = adapter.GetElementReference(state); Assert.NotNull(elementRef); } }
public void WhenCreatingReference_ThenUsesAdapter() { var stateFile = this.solution.Find <IItem>(item => item.Name.EndsWith(StoreConstants.RuntimeStoreExtension)).First(); var manager = this.modelBus.FindAdapterManagers(new object[] { stateFile.PhysicalPath }).FirstOrDefault(); Assert.NotNull(manager); Assert.True(manager.CanCreateReference(new object[] { stateFile.PhysicalPath })); var mar = new ModelingAdapterReference(null, null, stateFile.PhysicalPath); var mbr = new ModelBusReference(this.modelBus, Adapter.AdapterId, Path.GetFileNameWithoutExtension(stateFile.Name), mar); using (var adapter = this.modelBus.CreateAdapter(mbr, VsIdeTestHostContext.ServiceProvider)) { var withRoot = adapter as IModelingAdapterWithRootedModel; var state = ((IProductState)withRoot.ModelRoot).Products.First(); var elementRef = adapter.GetElementReference(state); Assert.NotNull(elementRef); } }
private static ModelBusAdapter CreateModelBusAdapter(ModelBusReference reference) { IModelBus bus = reference.ModelBus ?? RuntimeHelper.ServiceProvider.GetService(typeof(IModelBus)) as IModelBus; return bus.CreateAdapter(reference); }
public ModelBusAdapter CreateAdapter(ModelBusReference reference) { return(new MockModelBusAdapter()); }
public abstract ModelElement ResolveModelReference(ModelBusReference mbReference);
public ReferenceStatus ValidateReference(ModelBusReference reference, ValidateReferenceOption validationOption) { throw new System.NotImplementedException(); }
public override object ResolveElementReference(ModelBusReference elementReference) { MockModelBusReference reference = elementReference as MockModelBusReference; return(reference.ReferencedElement); }
protected override ModelBusAdapter DoCreateAdapter(ModelBusReference reference, IServiceProvider serviceProvider) { throw new NotImplementedException(); }
// MBR format: // modelbus://logicalAdapterId/model display name/element display name/adapter reference data. // V3 format: // mel://[DSLNAMESPACE]\[MODELELEMENTTYPE]\[MODELELEMENT]@[PROJECT]\[MODELFILE] private object ConvertToModelBusReference <T>(SerializationContext serializationContext, string input) { if (serializationContext == null) { throw new ArgumentNullException("serializationContext"); } if (string.IsNullOrWhiteSpace(input) || !typeof(ModelBusReference).IsAssignableFrom(typeof(T))) { return(default(T)); } // filter out the schema part input = input.Replace(MelSchema, string.Empty); string[] data = input.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries); if (data.Length != 2) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } string[] modelData = data[0].Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); if (modelData.Length != 3) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } string[] locationData = data[1].Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); if (locationData.Length != 2) { serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.InvalidMoniker, input)); return(default(T)); } // set full path to model file if (!Path.IsPathRooted(locationData[1])) { locationData[1] = Path.Combine(Path.GetDirectoryName(serializationContext.Location), locationData[1]); } ModelBusReference result = null; IModelBus bus = serializationContext[ModelBusReferencePropertySerializer.ModelBusLoadContextKey] as IModelBus; if (bus != null) { using (ModelBusAdapterManager manager = bus.GetAdapterManager(LogicalAdapterId)) { ModelBusReference reference = null; if (manager.TryCreateReference(out reference, Path.ChangeExtension(locationData[1], FileExtension))) { using (ModelBusAdapter adapter = manager.CreateAdapter(reference)) { IModelingAdapterWithStore storeAdapter = adapter as IModelingAdapterWithStore; if (storeAdapter.Store != null) { foreach (ModelElement mel in FilterElementsByType(storeAdapter.Store, modelData[1])) { if (ValidatorUtility.GetTargetName(mel).Equals(modelData[2], StringComparison.OrdinalIgnoreCase)) { return(adapter.GetElementReference(mel)); } } // If we are still here, we could not find any match so try will all mels foreach (ModelElement mel in FilterElementsByType(storeAdapter.Store, string.Empty)) { if (ValidatorUtility.GetTargetName(mel).Equals(modelData[2], StringComparison.OrdinalIgnoreCase)) { return(adapter.GetElementReference(mel)); } } } } } } } serializationContext.Result.AddMessage(BuildSerializationMessage(Properties.Resources.ReferenceElementNotFound, input)); return(result); }
/// <summary> /// Throws <see cref="NotSupportedException"/> as the runtime state does not have views. /// </summary> public override ModelBusView GetView(ModelBusReference reference) { throw new NotSupportedException(); }
/// <summary> /// Serializes the model element reference to marshal across the T4 app domain. /// </summary> protected virtual string SerializeReference() { var modelBus = this.ServiceProvider.GetService<SModelBus, IModelBus>(); if (modelBus == null) { throw new InvalidOperationException(string.Format( CultureInfo.CurrentCulture, Resources.ServiceUnavailable, typeof(IModelBus))); } var instanceType = this.ModelElement.GetType(); var adapter = (from manager in modelBus.FindAdapterManagers(new object[] { this.ModelFile }) from adapterId in manager.GetSupportedLogicalAdapterIds() where manager.GetExposedElementTypes(adapterId).Any(type => type.Type.IsAssignableFrom(instanceType)) select new { Manager = manager, AdapterId = adapterId }) .FirstOrDefault(); if (adapter == null) { throw new InvalidOperationException(string.Format( CultureInfo.CurrentCulture, Resources.GenerateModelingCodeCommand_ModelBusAdapterRequired, this.ModelFile, instanceType)); } var busReference = new ModelBusReference( modelBus, adapter.AdapterId, Path.GetFileNameWithoutExtension(this.ModelFile), instanceType.Name, new ModelingAdapterReference(this.ModelElement.Id.ToString(), null, this.ModelFile)); return modelBus.SerializeReference(busReference); }
public static Process GetProcessOverviewModelByReference(ModelBusReference processReference) { Process process = null; using (var adapter = processReference.ModelBus.CreateAdapter(processReference)) { process = adapter.ResolveElementReference(processReference) as Process; } return process; }
/// <summary> /// Resolves the model reference. /// </summary> /// <param name="mbReference">The ModelBusReference intance.</param> /// <returns></returns> // FXCOP: False positive public ModelElement ResolveModelReference(ModelBusReference mbRefenrece) { return(ModelBusReferenceResolver.ResolveAndDispose(mbRefenrece)); }
protected override ModelBusView GetView(ModelBusAdapter viewOwner, ModelBusReference viewReference) { throw new NotImplementedException(); }
public override ModelBusView GetView(ModelBusReference reference) { throw new NotImplementedException(); }
public ModelBusAdapter CreateAdapter(ModelBusReference reference, System.IServiceProvider serviceProvider) { return(new MockModelBusAdapter()); }
public static void AddReferencedSubProcesses(SubProcessBase element, ModelBusReference newValue) { string fileName = Utilities.GetFileNameForStore(element.Store); if (fileName == "") return; ProcessOverview.Process targetProc = null; ProcessOverview.SubProcessElement targetSubProc = null; ModelBusReference fromSubProcessActRef = null; SubProcess fromSubProcess = null; ModelBusReference mbr = null; IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); List<Activity> subProcActs = new List<Activity>(); //Get List of sub process activities in this diagram that reference another sub process subProcActs.AddRange(element.Activities.Where(a => a is ToProcessConnector || a is FromProcessConnector)); foreach (var item in subProcActs) { if (item is ToProcessConnector) mbr = ((ToProcessConnector)item).ToProcessConnectorRef; else mbr = ((FromProcessConnector)item).FromProcessConnectorRef; using (ModelBusAdapter adapter = modelBus.CreateAdapter(mbr)) { ModelBusView view = adapter.GetDefaultView(); Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; fromSubProcess = (SubProcess)targetDiagram.ModelElement; fromSubProcessActRef = adapter.GetElementReference(fromSubProcess); } using (Transaction tt = fromSubProcess.Store.TransactionManager.BeginTransaction("Update Linked Sub Process Reference")) { string fileNameItem = Utilities.GetFileNameForStore(item.Store); IModelBus modelBusItem = item.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager managerItem = modelBusItem.FindAdapterManagers(fileNameItem).First(); ModelBusReference referenceItem = managerItem.CreateReference(fileNameItem); using (ModelBusAdapter adapterItem = modelBus.CreateAdapter(referenceItem)) { ModelBusReference oldProcRef = fromSubProcess.ProcessRef; if (oldProcRef != null) { using (ModelBusAdapter oldItemAdapter = modelBus.CreateAdapter(oldProcRef)) { ModelBusView oldView = oldItemAdapter.GetDefaultView(); Diagram oldDiagram = ((StandardVsModelingDiagramView)oldView).Diagram; if (oldDiagram.ModelElement != null) { using (Transaction ttt = oldDiagram.Store.TransactionManager.BeginTransaction("Delete Old Item")) { ProcessOverview.Process oldProc = (ProcessOverview.Process)oldDiagram.ModelElement; //Delete old items in old diagram IEnumerable<ProcessOverview.SubProcessElement> listOldSubProc = oldProc.BTSubProcess.Where(s => s.VisioId == fromSubProcess.VisioId || s.VisioId == item.VisioId); for (int x = 0; x < listOldSubProc.Count(); x++) { listOldSubProc.ElementAt(x).Delete(); } ttt.Commit(); } } } } fromSubProcess.ProcessOverviewSubProcessRef = adapterItem.GetElementReference(item.SubProcess); fromSubProcess.ProcessRef = item.SubProcess.ProcessRef; } tt.Commit(); } if (newValue != null) { Diagram targetDiagram; using (ModelBusAdapter targetAdapter = modelBus.CreateAdapter(newValue)) { ModelBusView view = targetAdapter.GetDefaultView(); targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; } targetProc = (ProcessOverview.Process)targetDiagram.ModelElement; using (Transaction t = targetDiagram.Store.TransactionManager.BeginTransaction("Create New Item")) { using (ModelBusAdapter adapter2 = modelBus.CreateAdapter(reference)) { //Delete old items in new diagram if exist IEnumerable<ProcessOverview.SubProcessElement> listTargetSubProc = targetProc.BTSubProcess.Where(s => s.VisioId == fromSubProcess.VisioId); for (int x = 0; x < listTargetSubProc.Count(); x++) { listTargetSubProc.ElementAt(x).Delete(); } targetSubProc = new ProcessOverview.SubProcessElement(targetDiagram.Partition) { SubProcessRef = fromSubProcessActRef, Name = fromSubProcess.SubProcessName, VisioId = fromSubProcess.VisioId }; if (targetProc.BTSubProcess.Where(s => s.VisioId == targetProc.VisioId).Count() == 0) { targetProc.BTSubProcess.Add(targetSubProc); var shape = new ProcessOverview.SubProcessShape(targetDiagram.Partition); shape.ModelElement = targetSubProc; //Todo: Get location of linked activity and do placement shape.AbsoluteBounds = new Microsoft.VisualStudio.Modeling.Diagrams.RectangleD(new PointD(2, 2), new SizeD(2, 0.75)); targetDiagram.NestedChildShapes.Add(shape); } } t.Commit(); } } } }
public void TestDoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { this.DoValidate(objectToValidate, currentTarget, key, validationResults); }
public static void AddConnectors(SubProcessBase element, ModelBusReference newValue) { string fileName = Utilities.GetFileNameForStore(element.Store); if (fileName == "") return; if (newValue == null) return; ProcessOverview.Process targetProc = null; IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); List<ProcessOverview.SubProcessElement> subProcList = new List<ProcessOverview.SubProcessElement>(); Diagram targetDiagram; using (ModelBusAdapter targetAdapter = modelBus.CreateAdapter(newValue)) { ModelBusView view = targetAdapter.GetDefaultView(); targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; } targetProc = (ProcessOverview.Process)targetDiagram.ModelElement; subProcList.AddRange(targetProc.BTSubProcess); foreach (var item in subProcList) { using (ModelBusAdapter adapter = modelBus.CreateAdapter(item.SubProcessRef)) { SubProcessBase subProcessBase = (SubProcessBase)adapter.ResolveElementReference(item.SubProcessRef); List<Activity> toSubProcActs = new List<Activity>(); toSubProcActs.AddRange(subProcessBase.Activities.Where(a => a is ToProcessConnector)); foreach (var toProcAct in toSubProcActs) { try { using (Transaction t = item.Store.TransactionManager.BeginTransaction("Add Connector")) { List<ProcessOverview.SubProcessElement> toSub = new List<ProcessOverview.SubProcessElement>(); ModelBusReference mbr = ((ToProcessConnector)toProcAct).ExternalActivityRef; if (mbr == null) continue; using (ModelBusAdapter mba = modelBus.CreateAdapter(mbr)) { FromProcessConnector fpa = (FromProcessConnector)mba.ResolveElementReference(mbr); ModelBusReference subProcessRef = mba.GetElementReference(fpa.SubProcess); IEnumerable<ProcessOverview.SubProcessElement> toSubProcess = subProcList.Where(p => p.SubProcessRef == subProcessRef); foreach (var i in toSubProcess) { ProcessOverview.SubProcessElementReferencesTargets refTargets = new ProcessOverview.SubProcessElementReferencesTargets(item, i); ProcessOverview.SubProcessConnector connector = new ProcessOverview.SubProcessConnector(targetDiagram.Partition); connector.Associate(refTargets); if (targetDiagram.NestedChildShapes.Where(s => s == connector).Count() == 0) targetDiagram.NestedChildShapes.Add(connector); } } t.Commit(); } } catch (Exception) { return; } } } } }
public static SubProcessElement CreateSubProcessElement(string subProcessName, Partition partition, ProcessOverview.Process process, SubProcess subProcess, ModelBusReference subProcessReference) { var childReferenceProperty = new PropertyAssignment(SubProcessElement.SubProcessRefDomainPropertyId, null); var nameProperty = new PropertyAssignment(SubProcessElement.NameDomainPropertyId, subProcessName); var subProcessElement = new ProcessOverview.SubProcessElement(partition, nameProperty, childReferenceProperty); subProcessElement.VisioId = subProcess.VisioId.ToString().ToLower(); subProcessElement.SubProcessRef = subProcessReference; process.BTSubProcess.Add(subProcessElement); return subProcessElement; }
private TReferencedMEL GetMelReference <TReferencedMEL>(ModelBusReference moniker) where TReferencedMEL : ModelElement { TReferencedMEL mel = (TReferencedMEL)ModelBusReferenceResolver.ResolveAndDispose(moniker); return(mel); }
private static void SetSubProcessSettings(string subProcessName, SubProcess subProcess, ModelBusReference processReference) { subProcess.ProcessRef = processReference; subProcess.SubProcessName = subProcessName; subProcess.VisioId = subProcess.Id.ToString().ToLower(); }
public static void AddLinkedSubProcess(IModelBus modelBus, SubProcessBase subProcess, ModelBusReference toReference) { List<Activity> subProcessActList = new List<Activity>(); subProcessActList.AddRange(subProcess.Activities.Where(a => a is ToProcessConnector)); subProcessActList.AddRange(subProcess.Activities.Where(a => a is FromProcessConnector)); foreach (var item in subProcessActList) { ModelBusAdapter adapter; if (item is ToProcessConnector) { adapter = modelBus.CreateAdapter(((ToProcessConnector)item).ToProcessConnectorRef); var toSubProcessActivity = (FromProcessConnector)adapter.ResolveElementReference(((ToProcessConnector)item).ExternalActivityRef); ModelBusReference toSubProcessRef = adapter.GetElementReference(toSubProcessActivity.SubProcess); if (toSubProcessActivity.SubProcess.ProcessRef != null) DeleteRefSubProcess(toSubProcessActivity.SubProcess, modelBus); string fileName = Utilities.GetFileNameForStore(item.Store); if (fileName == "") return; IModelBus modelBusSubProcess = item.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusSubProcess.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); ModelBusAdapter adapterSubProcess = modelBus.CreateAdapter(reference); //AddRefSubProcess(modelBus, toReference, adapter.GetElementReference(toSubProcessActivity.SubProcess), toSubProcessActivity.SubProcess); AddLinkedSubProcess(modelBus, toSubProcessActivity.SubProcess, toReference); } else { adapter = modelBus.CreateAdapter(((FromProcessConnector)item).FromProcessConnectorRef); var fromSubProcessActivity = (ToProcessConnector)adapter.ResolveElementReference(((FromProcessConnector)item).FromProcessConnectorRef); ModelBusReference fromSubProcessRef = adapter.GetElementReference(fromSubProcessActivity.SubProcess); if (fromSubProcessActivity.SubProcess.ProcessRef != null) DeleteRefSubProcess(fromSubProcessActivity.SubProcess, modelBus); string fileName = Utilities.GetFileNameForStore(item.Store); if (fileName == "") return; IModelBus modelBusSubProcess = item.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusSubProcess.FindAdapterManagers(fileName).First(); ModelBusReference reference = manager.CreateReference(fileName); ModelBusAdapter adapterSubProcess = modelBus.CreateAdapter(reference); //AddRefSubProcess(modelBus, toReference, adapter.GetElementReference(fromSubProcessActivity.SubProcess), fromSubProcessActivity.SubProcess); AddLinkedSubProcess(modelBus, fromSubProcessActivity.SubProcess, toReference); } } }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { this.MessageTemplate = currentMessageTemplate; base.DoValidate(objectToValidate, currentTarget, key, validationResults); if (!validationResults.IsValid) { return; } DataContractMessagePart part = currentTarget as DataContractMessagePart; if (part == null || part.Message.ServiceContractModel.ImplementationTechnology == null) { return; } string dcImplementationTechnology = GetDcImplementationTechnology(objectToValidate); if (IsASMX(part.Message.ServiceContractModel.ImplementationTechnology.Name)) { if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.XmlSerializer)) { if (IsWCF(dcImplementationTechnology)) { this.LogValidationResult( validationResults, string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name), currentTarget, key); } } } else if (IsWCF(part.Message.ServiceContractModel.ImplementationTechnology.Name)) { if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.DataContractSerializer)) { if (IsASMX(dcImplementationTechnology)) { this.LogValidationResult( validationResults, string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name), currentTarget, key); } } else { if (IsWCF(dcImplementationTechnology)) { this.LogValidationResult( validationResults, Resources.InvalidExtensionAndSerializerCrossModelMessage, currentTarget, key); } } } }
public static void AddSubProcessConnector(IModelBus modelBus, ModelBusReference processOverview) { ModelBusAdapter adapter = modelBus.CreateAdapter(processOverview); if (adapter != null) { ModelBusView view = adapter.GetDefaultView(); Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; var process = (ProcessOverview.Process)targetDiagram.ModelElement; foreach (var item in process.BTSubProcess) { ModelBusReference fromSubProcRef = adapter.GetElementReference(item); ModelBusAdapter toSubProcAdapter = modelBus.CreateAdapter(item.SubProcessRef); var toSubProc = (SubProcess)toSubProcAdapter.ResolveElementReference(item.SubProcessRef); List<Activity> subProcActs = new List<Activity>(); subProcActs.AddRange(toSubProc.Activities.Where(a => a is ToProcessConnector)); foreach (var act in subProcActs) { string fileName = Utilities.GetFileNameForStore(act.Store); if (fileName == "") return; ModelBusReference mbr = ((ToProcessConnector)act).ToProcessConnectorRef; IModelBus modelBusAct = act.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusAct.FindAdapterManagers(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath).First(); ModelBusReference reference = manager.CreateReference(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath); ModelBusAdapter adapterAct = modelBus.CreateAdapter(reference); var subProcAct = (Activity)adapterAct.ResolveElementReference(mbr); ModelBusReference toSubProcRef = subProcAct.SubProcess.ProcessOverviewSubProcessRef; //AddConnector(processOverview, fromSubProcRef, toSubProcRef); } subProcActs = new List<Activity>(); subProcActs.AddRange(toSubProc.Activities.Where(a => a is FromProcessConnector)); foreach (var act in subProcActs) { string fileName = Utilities.GetFileNameForStore(act.Store); if (fileName == "") return; ModelBusReference mbr = ((FromProcessConnector)act).FromProcessConnectorRef; IModelBus modelBusAct = act.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBusAct.FindAdapterManagers(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath).First(); ModelBusReference reference = manager.CreateReference(((ModelingAdapterReference)mbr.AdapterReference).AbsoluteTargetPath); ModelBusAdapter adapterAct = modelBus.CreateAdapter(reference); var subProcAct = (Activity)adapterAct.ResolveElementReference(mbr); ModelBusReference toSubProcRef = subProcAct.SubProcess.ProcessOverviewSubProcessRef; //AddConnector(processOverview, toSubProcRef, fromSubProcRef); } } } }
public string SerializeReference(ModelBusReference reference) { throw new System.NotImplementedException(); }
private static void AddConnector(ModelBusReference processOverview, ProcessOverview.SubProcessElement fromSubProcess, ProcessOverview.SubProcessElement toSubProcess) { IModelBus modelbus = processOverview.ModelBus; ModelBusAdapter adapter = modelbus.CreateAdapter(processOverview); Diagram diagram = ((StandardVsModelingDiagramView)adapter.GetDefaultView()).Diagram; using (Transaction t = fromSubProcess.Store.TransactionManager.BeginTransaction("Add Connector")) { //Connector must be added when BTSubProcessActivity is added ProcessOverview.SubProcessElementReferencesTargets refTargets = new ProcessOverview.SubProcessElementReferencesTargets(fromSubProcess, toSubProcess); ProcessOverview.SubProcessConnector connector = new ProcessOverview.SubProcessConnector(diagram.Partition); connector.Associate(refTargets); diagram.NestedChildShapes.Add(connector); t.Commit(); } }
public static ModelElement ResolveAndCache(ModelBusReference reference) { if (reference == null) return null; ModelBusAdapter modelAdapter = GlobalCache.AddOrGetExisting<ModelBusAdapter>(reference.ModelDisplayName, c => CreateModelBusAdapter(reference)); return modelAdapter.ResolveElementReference(reference) as ModelElement; }
protected override void OnValueChanging(SubProcessBase element, ModelBusReference oldValue, ModelBusReference newValue) { base.OnValueChanging(element, oldValue, newValue); if (element.Store.InSerializationTransaction) return; if (element.Store.TransactionManager.CurrentTransaction.Name == "create new model") return; if (element.Store.TransactionManager.CurrentTransaction.Name == "Update Sub Process Reference") return; if (element.Store.TransactionManager.CurrentTransaction.Name == "Change SubProcessRef") return; if (element.Store.TransactionManager.CurrentTransaction.Name == "Init Items") return; AddSubProcessToOverView(element, oldValue, newValue); AddReferencedSubProcesses(element, newValue); if (element.Store.TransactionManager.CurrentTransaction.Name == "Update Linked Sub Process Reference") return; AddConnectors(element, newValue); }
/// <summary> /// Initializes a new instance of the <see cref="Adapter"/> class. /// </summary> public Adapter(ModelBusReference reference, VsModelingAdapterManager adapterManager, ModelElement rootModelElement) : base(reference, adapterManager, rootModelElement) { }
/// <summary> /// Creates an instance of the <see cref="Adapter"/> class. /// </summary> protected override ModelingAdapter CreateModelingAdapterInstance(ModelBusReference reference, ModelElement rootModelElement) { return new Adapter(reference, this, rootModelElement); }
private string GetDcImplementationTechnology(ModelBusReference reference) { using (ModelBusReferenceResolver resolver = new ModelBusReferenceResolver()) { ModelElement referencedElement = resolver.Resolve(reference); DataContractModel dcm = DomainModelHelper.GetElement<DataContractModel>(referencedElement.Store); return (dcm == null || dcm.ImplementationTechnology == null) ? string.Empty : dcm.ImplementationTechnology.Name; } }
/// <summary> /// Does the validate. /// </summary> /// <param name="objectToValidate">The object to validate.</param> /// <param name="currentTarget">The current target.</param> /// <param name="key">The key.</param> /// <param name="validationResults">The validation results.</param> protected override void DoValidate(ModelBusReference objectToValidate, object currentTarget, string key, ValidationResults validationResults) { this.MessageTemplate = currentMessageTemplate; base.DoValidate(objectToValidate, currentTarget, key, validationResults); if(!validationResults.IsValid) { return; } DataContractMessagePart part = currentTarget as DataContractMessagePart; if(part == null || part.Message.ServiceContractModel.ImplementationTechnology == null) { return; } string dcImplementationTechnology = GetDcImplementationTechnology(objectToValidate); if(IsASMX(part.Message.ServiceContractModel.ImplementationTechnology.Name)) { if(part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.XmlSerializer)) { if(IsWCF(dcImplementationTechnology)) { this.LogValidationResult( validationResults, string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name), currentTarget, key); } } } else if(IsWCF(part.Message.ServiceContractModel.ImplementationTechnology.Name)) { if (part.Message.ServiceContractModel.SerializerType.Equals(SerializerType.DataContractSerializer)) { if (IsASMX(dcImplementationTechnology)) { this.LogValidationResult( validationResults, string.Format(CultureInfo.CurrentCulture, Resources.ImplementationTechnologyAndSerializerValidatorMessage, part.Name), currentTarget, key); } } else { if (IsWCF(dcImplementationTechnology)) { this.LogValidationResult( validationResults, Resources.InvalidExtensionAndSerializerCrossModelMessage, currentTarget, key); } } } }
/// <summary> /// Creates an instance of the <see cref="Adapter"/> class. /// </summary> protected override ModelingAdapter CreateModelingAdapterInstance(ModelBusReference reference, ModelElement rootModelElement) { return(new Adapter(reference, this, rootModelElement)); }
public static void AddSubProcessToOverView(SubProcessBase element, ModelBusReference oldValue, ModelBusReference newValue) { string fileName = Utilities.GetFileNameForStore(element.Store); if (fileName == "") return; //get modelbus, adapters and create reference based on from activity in sub-process diagram IModelBus modelBus = element.Store.GetService(typeof(SModelBus)) as IModelBus; ModelBusAdapterManager manager = modelBus.FindAdapterManagers(fileName).First(); //reference to Sub-Process Diagram ModelBusReference referenceToSubProcessDiagram = manager.CreateReference(fileName); //reference to Activity initiating the ModelBusReference fromSubProcessActivityRef; using (ModelBusAdapter adapter = modelBus.CreateAdapter(referenceToSubProcessDiagram)) fromSubProcessActivityRef = adapter.GetElementReference(element); ProcessOverview.Process targetOverviewProc = null; ProcessOverview.SubProcessElement targetOverviewSubProc = null; ProcessOverview.Process oldOverviewProc = null; //ProcessOverview.SubProcess oldSubProc = null; if (oldValue != null) { using (ModelBusAdapter adapterRef = modelBus.CreateAdapter(oldValue)) { if (adapterRef != null) { ModelBusView viewOld = adapterRef.GetDefaultView(); Diagram targetOldDiagram = ((StandardVsModelingDiagramView)viewOld).Diagram; //Delete old Subprocess Shape & element if (targetOldDiagram.ModelElement != null) { oldOverviewProc = (ProcessOverview.Process)targetOldDiagram.ModelElement; if (element.ProcessOverviewSubProcessRef != null) { //oldSubProc = (ProcessOverview.SubProcess)adapterRef.ResolveElementReference(element.SubProcessRef); using (Transaction t = targetOldDiagram.Store.TransactionManager.BeginTransaction("Delete Old Item")) { //if (oldSubProc != null) //{ IEnumerable<ProcessOverview.SubProcessShape> subProcShapes = targetOldDiagram.NestedChildShapes.Where(s => s is ProcessOverview.SubProcessShape && ((ProcessOverview.SubProcessElement)s.ModelElement).VisioId == element.VisioId).Cast<ProcessOverview.SubProcessShape>(); for (int x = 0; x < subProcShapes.Count(); x++) { if (newValue == null || newValue != oldValue) { subProcShapes.ElementAt(x).Delete(); } else { //targetSubProc = oldSubProc; targetOverviewProc = oldOverviewProc; } } t.Commit(); //} } using (Transaction t = element.Store.TransactionManager.BeginTransaction("Init Items")) { element.ProcessOverviewSubProcessRef = null; element.ProcessRef = null; t.Commit(); } } } } } } if (newValue != null) { using (ModelBusAdapter adapterExternalRef = modelBus.CreateAdapter(newValue)) { if (adapterExternalRef != null) { ModelBusView view = adapterExternalRef.GetDefaultView(); Diagram targetDiagram = ((StandardVsModelingDiagramView)view).Diagram; //Get Process overview diagram based on target diagram targetOverviewProc = (ProcessOverview.Process)targetDiagram.ModelElement; using (Transaction t = targetDiagram.Store.TransactionManager.BeginTransaction("Create New Item")) { if (newValue != null && newValue != oldValue) { //Instantiate Process Overview Sub-Process Model based on sub-process diagram file details targetOverviewSubProc = new ProcessOverview.SubProcessElement(targetDiagram.Partition) { SubProcessRef = fromSubProcessActivityRef, Name = element.SubProcessName, VisioId = string.IsNullOrEmpty(element.VisioId) ? element.Id.ToString() : element.VisioId }; //set the visioid of the targetOverviewSubProc to it's id //targetOverviewSubProc.VisioId = targetOverviewSubProc.Id.ToString(); ModelBusAdapter adapterForSubProcessDiagram = modelBus.CreateAdapter(referenceToSubProcessDiagram); //TODO: check this //checking whether the sub-process activity already exists in the process overview //if (targetOverviewProc.BTSubProcess.Where(p => p.SubProcessRef == adapterForSubProcessDiagram.GetElementReference(element)).Count() > 0) //need to figure out what must happen //right now assuming that if a shape and model exists, do nothing if (targetOverviewProc.BTSubProcess.Where(p => p.SubProcessRef == adapterForSubProcessDiagram.GetElementReference(element)).Count() == 0) { //add sub process instantiation to sub process collection in process overview targetOverviewProc.BTSubProcess.Add(targetOverviewSubProc); //create shape to add to process overview diagram var shape = new ProcessOverview.SubProcessShape(targetDiagram.Partition); //link sub-process model instantiation to the shape shape.ModelElement = targetOverviewSubProc; //Todo: Get location of linked activity and do placement shape.AbsoluteBounds = new Microsoft.VisualStudio.Modeling.Diagrams.RectangleD(new PointD(2, 2), new SizeD(2, 0.75)); //Add shape to the process overview diagram if (targetDiagram.NestedChildShapes.Where(s => s == shape).Count() == 0) targetDiagram.NestedChildShapes.Add(shape); } } else { targetOverviewSubProc.Name = element.SubProcessName; targetOverviewSubProc.VisioId = string.IsNullOrEmpty(element.VisioId) ? element.Id.ToString() : element.VisioId; } t.Commit(); } using (Transaction t = element.Store.TransactionManager.BeginTransaction("Update Sub Process Reference")) { element.ProcessOverviewSubProcessRef = adapterExternalRef.GetElementReference(targetOverviewSubProc); element.ProcessRef = newValue; t.Commit(); } } } } }
private static ModelBusAdapter CreateModelBusAdapter(ModelBusReference reference) { IModelBus bus = reference.ModelBus ?? RuntimeHelper.ServiceProvider.GetService(typeof(IModelBus)) as IModelBus; return(bus.CreateAdapter(reference)); }