/// <summary> /// Opens the data trigger field mapping designer window. /// </summary> /// <param name="parentWindow">The parent window.</param> /// <param name="process">The process.</param> /// <param name="trigger">The trigger.</param> /// <param name="saveAction">The save action.</param> /// <param name="cancelAction">The cancel action.</param> /// <param name="removeAction">The remove action.</param> public void EditExpression(ITopLevelWindow parentWindow, ProcessExternalDataEdit model, ProcessEdit process, ExternalDataConfigurationEdit externalData, Action saveAction, Action cancelAction, Action removeAction) { SaveAction = saveAction; CancelAction = cancelAction; RemoveAction = removeAction; ProcessEdit = process; ExpressionDesigner.LoadFromExpressionObjects(new List<IExpressionObjectBase>()); if (externalData == null) { PopupFactory.NotifyFailure("Please select a Connection and try again."); CancelCommand.Execute(null); return; } LoadExpressionItems(process, externalData, model); _itemHashes = ExpressionDesigner.Diagram.Items.Select(x => x.GetHashCode()).ToList(); WindowManager.Value.ShowChildWindow(parentWindow, this); }
/// <summary> /// Initializes the current <see cref="ProcessDataTriggerViewModel"/>. /// </summary> /// <param name="model">The model.</param> /// <param name="parent">The parent view model.</param> /// <exception cref="System.ArgumentNullException"> /// model /// or /// parent /// </exception> public void Initialize(ProcessExternalDataEdit model, IProcessExternalDataListViewModel parent) { if (model == null) throw new ArgumentNullException("model"); if (parent == null) throw new ArgumentNullException("parent"); ParentViewModel = parent; Model = model; _externalDataConnectionList = parent.ExternalDataConnectionList; selectedExternalDataConnection = ExternalDataConnectionList.FirstOrDefault(p => p.SystemName == Model.ExternalDataConnectionName); this.RaisePropertyChanged(() => SelectedExternalDataConnection); }
private async void LoadExpressionItems(ProcessEdit sourceProcess, ExternalDataConfigurationEdit externalDataConfiguration, ProcessExternalDataEdit model) { WindowManager.Value.ShowStatus(new Status { IsBusy = true }); var expressions = new List<IExpressionObjectBase>(); var newExpressions = new List<IExpressionObjectBase>(); var syncContext = new NotifyClientAction( () => { ExpressionDesigner.LoadFromExpressionObjects(expressions); WindowManager.Value.ShowStatus(new Status()); }); syncContext.OperationStarted(); var source = new SourceFieldList { ExpressionName = string.Format("{0} (source)", sourceProcess.Name), UniqueName = SourceItemName, Top = 10, Left = 10 }; foreach (var field in sourceProcess.GetAllFields().Where(CanBeSourceField)) { var sourceField = CreateSourceField(field, source); sourceField.ObjectName = SourceItemObjectName; source.Fields.Add(sourceField); } newExpressions.Add(source); var modifiedSource = new SourceFieldList { ExpressionName = string.Format("External Data: {0}", externalDataConfiguration.Name), UniqueName = SourceToModifyItemName, Top = 310, Left = 10 }; // add data variable foreach (var field in externalDataConfiguration.DataVariableList) { var sourceField = CreateSourceFieldFromDataVariable(field, modifiedSource); sourceField.ObjectName = ModifiedItemObjectName; modifiedSource.Fields.Add(sourceField); } newExpressions.Add(modifiedSource); SourceFieldList systemParameters; try { systemParameters = await CreateSystemParametersItemAsync(SystemParametersName); } catch (Exception) { systemParameters = null; } if (systemParameters != null) { systemParameters.Left = 350; systemParameters.Top = 10; newExpressions.Add(systemParameters); } var destination = new DestinationFieldList { ExpressionName = sourceProcess.Name, UniqueName = DestinationItemName, Top = 10, Left = 500 }; foreach (var field in sourceProcess.GetAllFields().Where(CanBeDestinationField)) { var destinationField = CreateDestinationField(field, destination); destination.Fields.Add(destinationField); } newExpressions.Add(destination); if (!string.IsNullOrWhiteSpace(model.Expression)) { try { var expressionsContainer = Serializer.Deserialize(model.Expression); expressions.AddRange(expressionsContainer.Expressions); } catch { // Do nothing, new expressions will be used. } } UpdateStoredExpressions(expressions, newExpressions, syncContext); syncContext.OperationCompleted(); }
public IExternalDataViewModel CreateViewModel(ProcessExternalDataEdit externalData, IProcessExternalDataListViewModel parentViewModel) { if (externalData == null) throw new ArgumentNullException("external Data"); if (parentViewModel == null) throw new ArgumentNullException("parentViewModel"); var viewModel = ProcessExternalDataViewModelFactory.CreateExport().Value; viewModel.Initialize(externalData, parentViewModel); return viewModel; }