コード例 #1
0
        protected internal virtual MigratingProcessElementInstance createMigratingEventScopeInstance(MigratingInstanceParseContext parseContext, EventSubscriptionEntity element)
        {
            ActivityImpl compensatingActivity = parseContext.SourceProcessDefinition.findActivity(element.ActivityId);

            MigrationInstruction migrationInstruction = getMigrationInstruction(parseContext, compensatingActivity);

            ActivityImpl eventSubscriptionTargetScope = null;

            if (migrationInstruction != null)
            {
                if (compensatingActivity.CompensationHandler)
                {
                    ActivityImpl targetEventScope = (ActivityImpl)parseContext.getTargetActivity(migrationInstruction).EventScope;
                    eventSubscriptionTargetScope = targetEventScope.findCompensationHandler();
                }
                else
                {
                    eventSubscriptionTargetScope = parseContext.getTargetActivity(migrationInstruction);
                }
            }

            ExecutionEntity      eventScopeExecution   = CompensationUtil.getCompensatingExecution(element);
            MigrationInstruction eventScopeInstruction = parseContext.findSingleMigrationInstruction(eventScopeExecution.ActivityId);
            ActivityImpl         targetScope           = parseContext.getTargetActivity(eventScopeInstruction);

            MigratingEventScopeInstance migratingCompensationInstance = parseContext.MigratingProcessInstance.addEventScopeInstance(eventScopeInstruction, eventScopeExecution, eventScopeExecution.getActivity(), targetScope, migrationInstruction, element, compensatingActivity, eventSubscriptionTargetScope);

            parseContext.consume(element);
            parseContext.submit(migratingCompensationInstance);

            parseDependentEntities(parseContext, migratingCompensationInstance);

            return(migratingCompensationInstance);
        }
コード例 #2
0
 protected internal virtual void validateEventScopeInstance(MigratingEventScopeInstance eventScopeInstance, MigratingProcessInstance migratingProcessInstance, IList <MigratingCompensationInstanceValidator> migratingTransitionInstanceValidators, MigratingActivityInstanceValidationReportImpl instanceReport)
 {
     foreach (MigratingCompensationInstanceValidator validator in migratingTransitionInstanceValidators)
     {
         validator.validate(eventScopeInstance, migratingProcessInstance, instanceReport);
     }
 }
コード例 #3
0
        public virtual void submit(MigratingEventScopeInstance compensationInstance)
        {
            ExecutionEntity scopeExecution = compensationInstance.resolveRepresentativeExecution();

            if (scopeExecution != null)
            {
                compensationInstances[scopeExecution.Id] = compensationInstance;
            }
        }
コード例 #4
0
        protected internal virtual void ParseDependentEntities(MigratingInstanceParseContext parseContext,
                                                               MigratingEventScopeInstance migratingInstance)
        {
            var representativeExecution = migratingInstance.ResolveRepresentativeExecution();

            //IList<VariableInstanceEntity> variables =
            //    new List<VariableInstanceEntity>(representativeExecution.VariablesInternal);
            //parseContext.handleDependentVariables(migratingInstance, variables);
        }
コード例 #5
0
        public virtual void Submit(MigratingEventScopeInstance compensationInstance)
        {
            var scopeExecution = compensationInstance.ResolveRepresentativeExecution();

            if (scopeExecution != null)
            {
                CompensationInstances[scopeExecution.Id] = compensationInstance;
            }
        }
コード例 #6
0
 public virtual void Validate(MigratingEventScopeInstance migratingInstance,
                              MigratingProcessInstance migratingProcessInstance,
                              MigratingActivityInstanceValidationReportImpl ancestorInstanceReport)
 {
     if (IsInvalid(migratingInstance))
     {
         ancestorInstanceReport.AddFailure("Cannot migrate subscription for compensation handler '" +
                                           migratingInstance.EventSubscription.SourceScope.Id + "'. " +
                                           "There is no migration instruction for the compensation start event");
     }
 }
コード例 #7
0
        public virtual void Validate(MigratingEventScopeInstance migratingInstance,
                                     MigratingProcessInstance migratingProcessInstance,
                                     MigratingActivityInstanceValidationReportImpl ancestorInstanceReport)
        {
            var eventSubscription = migratingInstance.EventSubscription;

            var eventHandlerActivity = (ActivityImpl)eventSubscription.SourceScope;

            // note: compensation event scopes without children are already handled by NoUnmappedLeafInstanceValidator
            if (eventHandlerActivity.TriggeredByEvent && (eventSubscription.TargetScope == null) &&
                (migratingInstance.Children.Count > 0))
            {
                ancestorInstanceReport.AddFailure("Cannot migrate subscription for compensation handler '" +
                                                  eventSubscription.SourceScope.Id + "'. " +
                                                  "There is no migration instruction for the compensation start event");
            }
        }
コード例 #8
0
 protected internal virtual bool IsInvalid(MigratingEventScopeInstance migratingInstance)
 {
     return(HasNoInstruction(migratingInstance.EventSubscription) && (migratingInstance.Children.Count == 0));
 }