コード例 #1
0
        public virtual void OnParseMigratingInstance(MigratingInstanceParseContext parseContext,
                                                     MigratingActivityInstance migratingInstance)
        {
            var execution = migratingInstance.ResolveRepresentativeExecution();

            foreach (ExternalTaskEntity task in execution.ExternalTasks)
            {
                var migratingTask = new MigratingExternalTaskInstance(task, migratingInstance);
                migratingInstance.AddMigratingDependentInstance(migratingTask);
                parseContext.Consume(task);
                parseContext.Submit(migratingTask);
            }
        }
コード例 #2
0
        public virtual void OnParseMigratingInstance(MigratingInstanceParseContext parseContext,
                                                     MigratingActivityInstance migratingInstance)
        {
            ExecutionEntity execution = migratingInstance.ResolveRepresentativeExecution();

            foreach (TaskEntity task in execution.Tasks)
            {
                migratingInstance.AddMigratingDependentInstance(new MigratingUserTaskInstance(task, migratingInstance));
                parseContext.Consume(task);

                ICollection <ICoreVariableInstance> variables = task.VariablesInternal;

                if (variables != null)
                {
                    foreach (VariableInstanceEntity variable in variables)
                    {
                        // we don't need to represent ITask variables in the migrating instance structure because
                        // they are migrated by the MigratingTaskInstance as well
                        parseContext.Consume(variable);
                    }
                }
            }
        }
コード例 #3
0
        public virtual void OnParseMigratingInstance(MigratingInstanceParseContext parseContext,
                                                     MigratingActivityInstance migratingInstance)
        {
            ExecutionEntity scopeExecution = migratingInstance.ResolveRepresentativeExecution();

            IList <IActivityExecution> concurrentInActiveExecutions = scopeExecution.FindInactiveChildExecutions(GetInnerActivity((ActivityImpl)migratingInstance.SourceScope));

            //variables on ended inner instance executions need not be migrated anywhere
            //since they are also not represented in the tree of migrating instances, we remove
            // them from the parse context here to avoid a validation exception
            foreach (IActivityExecution execution in concurrentInActiveExecutions)
            {
                foreach (VariableInstanceEntity variable in ((ExecutionEntity)execution).VariablesInternal)
                {
                    parseContext.Consume(variable);
                }
            }
        }