public virtual void Validate(MigratingTransitionInstance migratingInstance, MigratingProcessInstance migratingProcessInstance, MigratingTransitionInstanceValidationReportImpl instanceReport) { var targetActivity = (ActivityImpl)migratingInstance.TargetScope; if ((targetActivity != null) && migratingInstance.AsyncAfter) { var jobInstance = migratingInstance.JobInstance; //var config = // (AsyncContinuationJobHandler.AsyncContinuationConfiguration) // jobInstance.JobEntity.JobHandlerConfiguration; //var sourceTransitionId = config.TransitionId; if (targetActivity.OutgoingTransitions.Count > 1) { //if (ReferenceEquals(sourceTransitionId, null)) //{ // instanceReport.addFailure("Transition instance is assigned to no sequence flow" + // " and target activity has more than one outgoing sequence flow"); //} //else //{ // var matchingOutgoingTransition = targetActivity.findOutgoingTransition(sourceTransitionId); // if (matchingOutgoingTransition == null) // { // instanceReport.addFailure("Transition instance is assigned to a sequence flow" + // " that cannot be matched in the target activity"); // } //} } } }
public virtual void handle(MigratingInstanceParseContext parseContext, TransitionInstance transitionInstance) { if (!isAsyncTransitionInstance(transitionInstance)) { return; } MigrationInstruction applyingInstruction = parseContext.getInstructionFor(transitionInstance.ActivityId); ScopeImpl sourceScope = parseContext.SourceProcessDefinition.findActivity(transitionInstance.ActivityId); ScopeImpl targetScope = null; if (applyingInstruction != null) { string activityId = applyingInstruction.TargetActivityId; targetScope = parseContext.TargetProcessDefinition.findActivity(activityId); } ExecutionEntity asyncExecution = Context.CommandContext.ExecutionManager.findExecutionById(transitionInstance.ExecutionId); MigratingTransitionInstance migratingTransitionInstance = parseContext.MigratingProcessInstance.addTransitionInstance(applyingInstruction, transitionInstance, sourceScope, targetScope, asyncExecution); MigratingActivityInstance parentInstance = parseContext.getMigratingActivityInstanceById(transitionInstance.ParentActivityInstanceId); migratingTransitionInstance.setParent(parentInstance); IList <JobEntity> jobs = asyncExecution.Jobs; parseContext.handleDependentTransitionInstanceJobs(migratingTransitionInstance, jobs); parseContext.handleDependentVariables(migratingTransitionInstance, collectTransitionInstanceVariables(migratingTransitionInstance)); }
public virtual void Handle(MigratingInstanceParseContext parseContext, MigratingTransitionInstance transitionInstance, IList <JobEntity> elements) { foreach (var job in elements) { if (!IsAsyncContinuation(job)) { continue; } var targetScope = transitionInstance.TargetScope; if (targetScope != null) { var targetJobDefinitionEntity = parseContext.GetTargetJobDefinition(transitionInstance.TargetScope.Id, job.JobHandlerType); var migratingJobInstance = new MigratingAsyncJobInstance(job, targetJobDefinitionEntity, transitionInstance.TargetScope); transitionInstance.DependentJobInstance = migratingJobInstance; parseContext.Submit(migratingJobInstance); } parseContext.Consume(job); } }
public virtual void Validate(MigratingTransitionInstance migratingInstance, MigratingProcessInstance migratingProcessInstance, MigratingTransitionInstanceValidationReportImpl instanceReport) { if (IsInvalid(migratingInstance)) { instanceReport.AddFailure("There is no migration instruction for this instance's activity"); } }
protected internal virtual MigratingTransitionInstanceValidationReportImpl ValidateTransitionInstance( MigratingTransitionInstance migratingTransitionInstance, MigratingProcessInstance migratingProcessInstance, IList <IMigratingTransitionInstanceValidator> migratingTransitionInstanceValidators) { var instanceReport = new MigratingTransitionInstanceValidationReportImpl(migratingTransitionInstance); foreach (var migratingTransitionInstanceValidator in migratingTransitionInstanceValidators) { migratingTransitionInstanceValidator.Validate(migratingTransitionInstance, migratingProcessInstance, instanceReport); } return(instanceReport); }
public virtual void Validate(MigratingTransitionInstance migratingInstance, MigratingProcessInstance migratingProcessInstance, MigratingTransitionInstanceValidationReportImpl instanceReport) { var targetActivity = (ActivityImpl)migratingInstance.TargetScope; if (targetActivity != null) { if (IsProcessStartJob(migratingInstance.JobInstance.JobEntity) && !IsTopLevelActivity(targetActivity)) { instanceReport.AddFailure( "A transition instance that instantiates the process can only be migrated to a process-level flow node"); } } }
protected internal virtual IList <VariableInstanceEntity> CollectTransitionInstanceVariables( MigratingTransitionInstance instance) { IList <VariableInstanceEntity> variables = new List <VariableInstanceEntity>(); var representativeExecution = instance.ResolveRepresentativeExecution(); if (representativeExecution.IsConcurrent) { throw new NotImplementedException(); //((List<VariableInstanceEntity>)variables).AddRange(representativeExecution.VariablesInternal); } else { throw new NotImplementedException(); //((List<VariableInstanceEntity>)variables).AddRange(ActivityInstanceHandler.GetConcurrentLocalVariables(representativeExecution)); } return(variables); }
public virtual void Validate(MigratingTransitionInstance migratingInstance, MigratingProcessInstance migratingProcessInstance, MigratingTransitionInstanceValidationReportImpl instanceReport) { var targetActivity = (ActivityImpl)migratingInstance.TargetScope; if (targetActivity != null) { if (migratingInstance.AsyncAfter) { if (!targetActivity.AsyncAfter) { instanceReport.AddFailure("Target activity is not asyncAfter"); } } else { if (!targetActivity.AsyncBefore) { instanceReport.AddFailure("Target activity is not asyncBefore"); } } } }
protected internal virtual IList <VariableInstanceEntity> collectTransitionInstanceVariables(MigratingTransitionInstance instance) { IList <VariableInstanceEntity> variables = new List <VariableInstanceEntity>(); ExecutionEntity representativeExecution = instance.resolveRepresentativeExecution(); if (representativeExecution.Concurrent) { ((IList <VariableInstanceEntity>)variables).AddRange(representativeExecution.VariablesInternal); } else { ((IList <VariableInstanceEntity>)variables).AddRange(ActivityInstanceHandler.getConcurrentLocalVariables(representativeExecution)); } return(variables); }
public virtual void handleDependentTransitionInstanceJobs(MigratingTransitionInstance migratingInstance, IList <JobEntity> jobs) { parser.DependentTransitionInstanceJobHandler.handle(this, migratingInstance, jobs); }
public MigratingTransitionInstanceValidationReportImpl(MigratingTransitionInstance migratingTransitionInstance) { this.transitionInstanceId = migratingTransitionInstance.TransitionInstance.Id; this.sourceScopeId = migratingTransitionInstance.SourceScope.Id; this.migrationInstruction = migratingTransitionInstance.MigrationInstruction; }
protected internal virtual bool IsInvalid(MigratingTransitionInstance migratingInstance) { return(HasNoInstruction(migratingInstance)); }