public static void ReplaceSafely(this EditorContract contract, ContractBusinessRuleActivity activity, DMNProcessDiagram newDiagram) { if (contract == null) { throw new ArgumentNullException(nameof(contract)); } if (activity == null) { throw new ArgumentNullException(nameof(activity)); } if (newDiagram == null) { throw new ArgumentNullException(nameof(newDiagram)); } if (DMNProcessDiagram.IsNullOrEmpty(newDiagram)) { activity.Diagram = newDiagram; return; } var oldDiagram = activity.Diagram; activity.Diagram = newDiagram; contract.GetMigrator().Notify( () => activity.Diagram, () => activity.Diagram = newDiagram, () => activity.Diagram = oldDiagram, MigratorMode.EveryChange ); }
public void SetNewDiagram() { var contract = new EditorContract() { Id = "contract", Name = "Contract", Processes = new ContractProcesses() { } }; contract.ReplaceSafely(BPMNProcessDiagram.FromXml(GetExampleBPMN())); contract.Processes.Main.UserActivities.First().Form = new ContractForm() { Id = "XXX" }; contract.Processes.Main.BusinessActivities.First().Diagram = DMNProcessDiagram.FromXml("YYY"); contract.Processes.Main.ScriptActivities.First().Script = "ZZZ"; contract.Processes.Main.StartEvents.First().StartForm = new ContractForm() { Id = "XXXX" }; contract.Processes.Diagram = BPMNProcessDiagram.FromXml(GetExampleBPMN()); //Check Assert.AreEqual("XXXX", contract.Processes.Main.StartEvents.First().StartForm.Id); Assert.AreEqual("XXX", contract.Processes.Main.UserActivities.First().Form.Id); Assert.AreEqual("YYY", contract.Processes.Main.BusinessActivities.First().Diagram.DiagramXML); Assert.AreEqual("ZZZ", contract.Processes.Main.ScriptActivities.First().Script); AssertExampleProcess(contract.Processes.Main); }
public void CopyDataFrom(ContractBusinessRuleActivity source) { if (source == null) { throw new ArgumentNullException(nameof(source)); } Diagram = source.Diagram; }
public async Task SaveAsync() { try { var xml = await Mediator.GetDiagramXML(Id); var newDiagram = DMNProcessDiagram.FromXml(xml); diagramToSave = newDiagram; //Validate Contract.ValidatePotentialDiagram(BusinessActivity, newDiagram); saveIntegrityResult = Contract.AnalyzeIntegrityWhenReplacedWith(BusinessActivity, newDiagram); //Show dialog await saveDialogWindow.OpenAsync(); } catch (Exception e) { alertController.AddAlert("Confirm unsuccessful: " + e.Message, AlertScheme.Danger); } }
public static ContractIntegrityAnalysisResult AnalyzeIntegrityWhenReplacedWith(this EditorContract contract, ContractBusinessRuleActivity activity, DMNProcessDiagram newDiagram) { if (contract == null) { throw new ArgumentNullException(nameof(contract)); } if (activity == null) { throw new ArgumentNullException(nameof(activity)); } if (newDiagram == null) { throw new ArgumentNullException(nameof(newDiagram)); } var deleteRisks = new List <ContractIntegrityAnalysisDeleteCase>(); var childrenAnalyses = new List <ContractIntegrityAnalysisResult>(); return(new ContractIntegrityAnalysisResult(deleteRisks, childrenAnalyses)); }
public static void ValidatePotentialDiagram(this EditorContract contract, ContractBusinessRuleActivity activity, DMNProcessDiagram newDiagram) { if (contract == null) { throw new ArgumentNullException(nameof(contract)); } if (activity == null) { throw new ArgumentNullException(nameof(activity)); } if (newDiagram == null) { throw new ArgumentNullException(nameof(newDiagram)); } }
public void SerializationWithDiagram() { var contract = new EditorContract() { Id = "contract", Name = "Contract", DataModel = GetExampleDataModel(), Processes = new ContractProcesses() { } }; contract.ReplaceSafely(BPMNProcessDiagram.FromXml(GetExampleBPMN())); contract.Processes.Main.UserActivities.First().Form = new ContractForm() { Id = "XXX" }; contract.Processes.Main.BusinessActivities.First().Diagram = DMNProcessDiagram.FromXml("YYY"); contract.Processes.Main.ScriptActivities.First().Script = "ZZZ"; contract.Processes.Main.StartEvents.First().StartForm = new ContractForm() { Id = "XXXX" }; contract.Processes.Main.StartEvents.First().StartForm.Fields.Add(new ContractFormField() { PropertyBinding = new ContractPropertyBinding() { Property = contract.DataModel.Entities[0].PrimitiveProperties[0] } }); contract.Processes.Main.UserActivities.First().Form.Fields.Add(new ContractFormField() { PropertyBinding = new ContractPropertyBinding() { Property = contract.DataModel.Entities[0].PrimitiveProperties[0] } }); //Serialize var serializedContract = EditorContractXML.To(contract); //Deserialize var deserializedContract = EditorContractXML.From(serializedContract); //Check Assert.AreEqual("XXXX", contract.Processes.Main.StartEvents.First().StartForm.Id); Assert.AreEqual("XXX", contract.Processes.Main.UserActivities.First().Form.Id); Assert.AreEqual("YYY", contract.Processes.Main.BusinessActivities.First().Diagram.DiagramXML); Assert.AreEqual("ZZZ", contract.Processes.Main.ScriptActivities.First().Script); Assert.AreEqual(contract.DataModel.Entities[0].PrimitiveProperties[0], contract.Processes.Main.StartEvents.First().StartForm.Fields[0].PropertyBinding.Property); Assert.AreEqual(contract.DataModel.Entities[0].PrimitiveProperties[0], contract.Processes.Main.UserActivities.First().Form.Fields[0].PropertyBinding.Property); Assert.AreEqual("contract", deserializedContract.Id); Assert.AreEqual("Contract", deserializedContract.Name); AssertExampleDataModel(deserializedContract.DataModel); Assert.AreEqual(GetExampleBPMN(), deserializedContract.Processes.Diagram.DiagramXML); AssertExampleProcess(contract.Processes.Main); }