示例#1
0
        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
                );
        }
示例#2
0
        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);
            }
        }
示例#5
0
        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));
        }
示例#6
0
        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));
            }
        }
示例#7
0
        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);
        }