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); }
protected internal virtual void validateEventScopeInstance(MigratingEventScopeInstance eventScopeInstance, MigratingProcessInstance migratingProcessInstance, IList <MigratingCompensationInstanceValidator> migratingTransitionInstanceValidators, MigratingActivityInstanceValidationReportImpl instanceReport) { foreach (MigratingCompensationInstanceValidator validator in migratingTransitionInstanceValidators) { validator.validate(eventScopeInstance, migratingProcessInstance, instanceReport); } }
public virtual void submit(MigratingEventScopeInstance compensationInstance) { ExecutionEntity scopeExecution = compensationInstance.resolveRepresentativeExecution(); if (scopeExecution != null) { compensationInstances[scopeExecution.Id] = compensationInstance; } }
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); }
public virtual void Submit(MigratingEventScopeInstance compensationInstance) { var scopeExecution = compensationInstance.ResolveRepresentativeExecution(); if (scopeExecution != null) { CompensationInstances[scopeExecution.Id] = compensationInstance; } }
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"); } }
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"); } }
protected internal virtual bool IsInvalid(MigratingEventScopeInstance migratingInstance) { return(HasNoInstruction(migratingInstance.EventSubscription) && (migratingInstance.Children.Count == 0)); }