protected internal virtual void ValidateMigrationPlan(CommandContext commandContext,
                                                              MigrationPlanImpl migrationPlan, ProcessDefinitionImpl sourceProcessDefinition,
                                                              ProcessDefinitionImpl targetProcessDefinition)
        {
            var migrationInstructionValidators =
                commandContext.ProcessEngineConfiguration.MigrationInstructionValidators;

            var planReport = new MigrationPlanValidationReportImpl(migrationPlan);
            var validatingMigrationInstructions = WrapMigrationInstructions(migrationPlan, sourceProcessDefinition,
                                                                            targetProcessDefinition, planReport);

            foreach (var validatingMigrationInstruction in validatingMigrationInstructions.Instructions)
            {
                var instructionReport = ValidateInstruction(validatingMigrationInstruction,
                                                            validatingMigrationInstructions, migrationInstructionValidators);
                if (instructionReport.HasFailures())
                {
                    planReport.AddInstructionReport(instructionReport);
                }
            }

            if (planReport.HasInstructionReports())
            {
                throw Log.FailingMigrationPlanValidation(planReport);
            }
        }
Example #2
0
        public virtual MigrationPlanValidationException FailingMigrationPlanValidation(
            MigrationPlanValidationReportImpl validationReport)
        {
            var sb = new StringBuilder();

            validationReport.WriteTo(sb);
            return(new MigrationPlanValidationException(ExceptionMessage("001", "{}", sb.ToString()), validationReport));
        }
        protected internal virtual ValidatingMigrationInstructions WrapMigrationInstructions(
            IMigrationPlan migrationPlan, ProcessDefinitionImpl sourceProcessDefinition,
            ProcessDefinitionImpl targetProcessDefinition, MigrationPlanValidationReportImpl planReport)
        {
            var validatingMigrationInstructions = new ValidatingMigrationInstructions();

            foreach (var migrationInstruction in migrationPlan.Instructions)
            {
                var instructionReport = new MigrationInstructionValidationReportImpl(migrationInstruction);

                var sourceActivityId = migrationInstruction.SourceActivityId;
                var targetActivityId = migrationInstruction.TargetActivityId;
                if (!ReferenceEquals(sourceActivityId, null) && !ReferenceEquals(targetActivityId, null))
                {
                    IPvmActivity sourceActivity = sourceProcessDefinition.FindActivity(sourceActivityId);
                    IPvmActivity targetActivity = targetProcessDefinition.FindActivity(migrationInstruction.TargetActivityId);

                    if (sourceActivity != null && targetActivity != null)
                    {
                        validatingMigrationInstructions.AddInstruction(new ValidatingMigrationInstructionImpl(sourceActivity, targetActivity, migrationInstruction.UpdateEventTrigger));
                    }
                    else
                    {
                        if (sourceActivity == null)
                        {
                            instructionReport.AddFailure("Source activity '" + sourceActivityId + "' does not exist");
                        }
                        if (targetActivity == null)
                        {
                            instructionReport.AddFailure("Target activity '" + targetActivityId + "' does not exist");
                        }
                    }
                }
                else
                {
                    if (ReferenceEquals(sourceActivityId, null))
                    {
                        instructionReport.AddFailure("Source activity id is null");
                    }
                    if (ReferenceEquals(targetActivityId, null))
                    {
                        instructionReport.AddFailure("Target activity id is null");
                    }
                }

                if (instructionReport.HasFailures())
                {
                    planReport.AddInstructionReport(instructionReport);
                }
            }
            return(validatingMigrationInstructions);
        }
Example #4
0
        protected internal virtual void validateMigrationPlan(CommandContext commandContext, MigrationPlanImpl migrationPlan, ProcessDefinitionImpl sourceProcessDefinition, ProcessDefinitionImpl targetProcessDefinition)
        {
            IList <MigrationInstructionValidator> migrationInstructionValidators = commandContext.ProcessEngineConfiguration.MigrationInstructionValidators;

            MigrationPlanValidationReportImpl planReport = new MigrationPlanValidationReportImpl(migrationPlan);
            ValidatingMigrationInstructions   validatingMigrationInstructions = wrapMigrationInstructions(migrationPlan, sourceProcessDefinition, targetProcessDefinition, planReport);

            foreach (ValidatingMigrationInstruction validatingMigrationInstruction in validatingMigrationInstructions.Instructions)
            {
                MigrationInstructionValidationReportImpl instructionReport = validateInstruction(validatingMigrationInstruction, validatingMigrationInstructions, migrationInstructionValidators);
                if (instructionReport.hasFailures())
                {
                    planReport.addInstructionReport(instructionReport);
                }
            }

            if (planReport.hasInstructionReports())
            {
                throw LOG.failingMigrationPlanValidation(planReport);
            }
        }
Example #5
0
        protected internal virtual ValidatingMigrationInstructions wrapMigrationInstructions(MigrationPlan migrationPlan, ProcessDefinitionImpl sourceProcessDefinition, ProcessDefinitionImpl targetProcessDefinition, MigrationPlanValidationReportImpl planReport)
        {
            ValidatingMigrationInstructions validatingMigrationInstructions = new ValidatingMigrationInstructions();

            foreach (MigrationInstruction migrationInstruction in migrationPlan.Instructions)
            {
                MigrationInstructionValidationReportImpl instructionReport = new MigrationInstructionValidationReportImpl(migrationInstruction);

                string sourceActivityId = migrationInstruction.SourceActivityId;
                string targetActivityId = migrationInstruction.TargetActivityId;
                if (!string.ReferenceEquals(sourceActivityId, null) && !string.ReferenceEquals(targetActivityId, null))
                {
                    ActivityImpl sourceActivity = sourceProcessDefinition.findActivity(sourceActivityId);
                    ActivityImpl targetActivity = targetProcessDefinition.findActivity(migrationInstruction.TargetActivityId);

                    if (sourceActivity != null && targetActivity != null)
                    {
                        validatingMigrationInstructions.addInstruction(new ValidatingMigrationInstructionImpl(sourceActivity, targetActivity, migrationInstruction.UpdateEventTrigger));
                    }
                    else
                    {
                        if (sourceActivity == null)
                        {
                            instructionReport.addFailure("Source activity '" + sourceActivityId + "' does not exist");
                        }
                        if (targetActivity == null)
                        {
                            instructionReport.addFailure("Target activity '" + targetActivityId + "' does not exist");
                        }
                    }
                }
                else
                {
                    if (string.ReferenceEquals(sourceActivityId, null))
                    {
                        instructionReport.addFailure("Source activity id is null");
                    }
                    if (string.ReferenceEquals(targetActivityId, null))
                    {
                        instructionReport.addFailure("Target activity id is null");
                    }
                }

                if (instructionReport.hasFailures())
                {
                    planReport.addInstructionReport(instructionReport);
                }
            }
            return(validatingMigrationInstructions);
        }