Example #1
0
        protected internal virtual MigratingTransitionInstanceValidationReportImpl validateTransitionInstance(MigratingTransitionInstance migratingTransitionInstance, MigratingProcessInstance migratingProcessInstance, IList <MigratingTransitionInstanceValidator> migratingTransitionInstanceValidators)
        {
            MigratingTransitionInstanceValidationReportImpl instanceReport = new MigratingTransitionInstanceValidationReportImpl(migratingTransitionInstance);

            foreach (MigratingTransitionInstanceValidator migratingTransitionInstanceValidator in migratingTransitionInstanceValidators)
            {
                migratingTransitionInstanceValidator.validate(migratingTransitionInstance, migratingProcessInstance, instanceReport);
            }
            return(instanceReport);
        }
Example #2
0
        protected internal virtual void validateInstructions(CommandContext commandContext, MigratingProcessInstance migratingProcessInstance, MigratingProcessInstanceValidationReportImpl processInstanceReport)
        {
            IList <MigratingActivityInstanceValidator>     migratingActivityInstanceValidators     = commandContext.ProcessEngineConfiguration.MigratingActivityInstanceValidators;
            IList <MigratingTransitionInstanceValidator>   migratingTransitionInstanceValidators   = commandContext.ProcessEngineConfiguration.MigratingTransitionInstanceValidators;
            IList <MigratingCompensationInstanceValidator> migratingCompensationInstanceValidators = commandContext.ProcessEngineConfiguration.MigratingCompensationInstanceValidators;

            IDictionary <MigratingActivityInstance, MigratingActivityInstanceValidationReportImpl> instanceReports = new Dictionary <MigratingActivityInstance, MigratingActivityInstanceValidationReportImpl>();

            foreach (MigratingActivityInstance migratingActivityInstance in migratingProcessInstance.MigratingActivityInstances)
            {
                MigratingActivityInstanceValidationReportImpl instanceReport = validateActivityInstance(migratingActivityInstance, migratingProcessInstance, migratingActivityInstanceValidators);
                instanceReports[migratingActivityInstance] = instanceReport;
            }

            foreach (MigratingEventScopeInstance migratingEventScopeInstance in migratingProcessInstance.MigratingEventScopeInstances)
            {
                MigratingActivityInstance ancestorInstance = migratingEventScopeInstance.ClosestAncestorActivityInstance;

                validateEventScopeInstance(migratingEventScopeInstance, migratingProcessInstance, migratingCompensationInstanceValidators, instanceReports[ancestorInstance]);
            }

            foreach (MigratingCompensationEventSubscriptionInstance migratingEventSubscriptionInstance in migratingProcessInstance.MigratingCompensationSubscriptionInstances)
            {
                MigratingActivityInstance ancestorInstance = migratingEventSubscriptionInstance.ClosestAncestorActivityInstance;

                validateCompensateSubscriptionInstance(migratingEventSubscriptionInstance, migratingProcessInstance, migratingCompensationInstanceValidators, instanceReports[ancestorInstance]);
            }

            foreach (MigratingActivityInstanceValidationReportImpl instanceReport in instanceReports.Values)
            {
                if (instanceReport.hasFailures())
                {
                    processInstanceReport.addActivityInstanceReport(instanceReport);
                }
            }

            foreach (MigratingTransitionInstance migratingTransitionInstance in migratingProcessInstance.MigratingTransitionInstances)
            {
                MigratingTransitionInstanceValidationReportImpl instanceReport = validateTransitionInstance(migratingTransitionInstance, migratingProcessInstance, migratingTransitionInstanceValidators);
                if (instanceReport.hasFailures())
                {
                    processInstanceReport.addTransitionInstanceReport(instanceReport);
                }
            }
        }