public virtual void testMigrateWithQuery()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess).ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey));

            IProcessInstance instance1 = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);
            IProcessInstance instance2 = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            grantAuthorization("user", Resources.ProcessInstance, instance2.Id, Permissions.Read);
            grantAuthorization("user", Resources.ProcessDefinition, "*", Permissions.MigrateInstance);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IQueryable <IProcessInstance> query = engineRule.RuntimeService.CreateProcessInstanceQuery();

            // when
            authRule.EnableAuthorization("user");
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceQuery(query).Execute();

            authRule.DisableAuthorization();


            // then
            IProcessInstance instance1AfterMigration = engineRule.RuntimeService.CreateProcessInstanceQuery(c => c.ProcessInstanceId == instance1.Id).First();

            Assert.AreEqual(sourceDefinition.Id, instance1AfterMigration.ProcessDefinitionId);
        }
        public virtual void deployProcessesAndCreateMigrationPlan()
        {
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).Build();
        }
Ejemplo n.º 3
0
 public MigrationBatchConfiguration(IList <string> ids, IMigrationPlan migrationPlan, bool isSkipCustomListeners,
                                    bool isSkipIoMappings) : base(ids)
 {
     MigrationPlan       = migrationPlan;
     SkipCustomListeners = isSkipCustomListeners;
     SkipIoMappings      = isSkipIoMappings;
 }
Ejemplo n.º 4
0
        public virtual void testMigrateWithQuery()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess).ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey));

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IQueryable <IProcessInstance> query = engineRule.RuntimeService.CreateProcessInstanceQuery();

            // when
            authRule.Init(scenario).WithUser("userId").BindResource("sourceDefinitionKey", sourceDefinition.Key).BindResource("targetDefinitionKey", targetDefinition.Key).BindResource("processInstance", processInstance.Id).Start();

            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceQuery(query).Execute();

            // then
            if (authRule.AssertScenario(scenario))
            {
                IProcessInstance processInstanceAfterMigration = engineRule.RuntimeService.CreateProcessInstanceQuery().First();

                Assert.AreEqual(targetDefinition.Id, processInstanceAfterMigration.ProcessDefinitionId);
            }
        }
Ejemplo n.º 5
0
        public virtual void testDontWriteDuplicateLogOnBatchMigrationJobExecution()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = runtimeService.StartProcessInstanceById(sourceDefinition.Id);

            IMigrationPlan migrationPlan = runtimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            batch = runtimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).ExecuteAsync();
            IJob seedJob = managementService.CreateJobQuery().First();

            managementService.ExecuteJob(seedJob.Id);

            IJob migrationJob = managementService.CreateJobQuery(c => c.JobDefinitionId == batch.BatchJobDefinitionId).First();

            // when
            managementService.ExecuteJob(migrationJob.Id);

            // then
            Assert.AreEqual(5, userOperationLogQuery().Count());
            //Assert.AreEqual(2, userOperationLogQuery().OperationType(UserOperationLogEntryFields.OperationTypeCreate).EntityType(EntityTypes.Deployment).Count());
            //Assert.AreEqual(3, userOperationLogQuery().OperationType(UserOperationLogEntryFields.OperationTypeMigrate).EntityType(EntityTypes.ProcessInstance).Count());
        }
Ejemplo n.º 6
0
        public virtual IProcessInstance CreateProcessInstanceAndMigrate(IMigrationPlan migrationPlan)
        {
            var processInstance =
                ProcessEngine.RuntimeService.StartProcessInstanceById(migrationPlan.SourceProcessDefinitionId);

            MigrateProcessInstance(migrationPlan, processInstance);
            return(processInstance);
        }
Ejemplo n.º 7
0
        public virtual IProcessInstance CreateProcessInstanceAndMigrate(IMigrationPlan migrationPlan,
                                                                        IDictionary <string, object> variables)
        {
            var processInstance =
                ProcessEngine.RuntimeService.StartProcessInstanceById(migrationPlan.SourceProcessDefinitionId
                                                                      /*, variables*/);

            MigrateProcessInstance(migrationPlan, processInstance);
            return(processInstance);
        }
Ejemplo n.º 8
0
 public CallableAnonymousInnerClass(MigrateProcessInstanceCmd outerInstance, CommandContext commandContext,
                                    IMigrationPlan migrationPlan, ICollection <string> processInstanceIds,
                                    ProcessDefinitionEntity targetDefinition)
 {
     this._outerInstance      = outerInstance;
     this._commandContext     = commandContext;
     this._migrationPlan      = migrationPlan;
     this._processInstanceIds = processInstanceIds;
     this._targetDefinition   = targetDefinition;
 }
Ejemplo n.º 9
0
 public MigratingInstanceParseContext(MigratingInstanceParser parser, IMigrationPlan migrationPlan,
                                      ExecutionEntity processInstance, ProcessDefinitionEntity targetProcessDefinition)
 {
     this.Parser                  = parser;
     sourceProcessDefinition      = processInstance.GetProcessDefinition();//.ProcessDefinition;
     this.targetProcessDefinition = targetProcessDefinition;
     migratingProcessInstance     = new MigratingProcessInstance(processInstance.Id, sourceProcessDefinition,
                                                                 targetProcessDefinition);
     mapping = new ActivityExecutionTreeMapping(context.Impl.Context.CommandContext, processInstance.Id);
     InstructionsBySourceScope = OrganizeInstructionsBySourceScope(migrationPlan);
 }
Ejemplo n.º 10
0
        public virtual void canCreateMigrationPlanForNoTenants()
        {
            // given
            IProcessDefinition sharedDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);


            // when
            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sharedDefinition.Id, sharedDefinition.Id).MapEqualActivities().Build();

            // then
            Assert.NotNull(migrationPlan);
        }
Ejemplo n.º 11
0
        public virtual void canCreateMigrationPlanForSharedDefinitionsWithNoAuthenticatedTenants()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            // when
            engineRule.IdentityService.SetAuthentication("user", null, null);
            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            // then
            Assert.NotNull(migrationPlan);
        }
Ejemplo n.º 12
0
        public virtual void deployProcessesAndCreateMigrationPlan()
        {
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IProcessInstance pi = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            batch1 = engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((pi.Id)).ExecuteAsync();

            batch2 = engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((pi.Id)).ExecuteAsync();
        }
Ejemplo n.º 13
0
        protected internal virtual IDictionary <string, IList <IMigrationInstruction> > OrganizeInstructionsBySourceScope(
            IMigrationPlan migrationPlan)
        {
            IDictionary <string, IList <IMigrationInstruction> > organizedInstructions =
                new Dictionary <string, IList <IMigrationInstruction> >();

            foreach (var instruction in migrationPlan.Instructions)
            {
                CollectionUtil.AddToMapOfLists(organizedInstructions, instruction.SourceActivityId, instruction);
            }

            return(organizedInstructions);
        }
Ejemplo n.º 14
0
        public virtual void canCreateMigrationPlanWithDisabledTenantCheck()
        {
            // given
            IProcessDefinition tenant1Definition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition tenant2Definition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            // when
            engineRule.IdentityService.SetAuthentication("user", null, null);
            engineRule.ProcessEngineConfiguration.SetTenantCheckEnabled(false);
            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(tenant1Definition.Id, tenant2Definition.Id).MapEqualActivities().Build();

            // then
            Assert.NotNull(migrationPlan);
        }
        public virtual void canMigrateInstanceBetweenSameTenantCase2()
        {
            // given
            IProcessDefinition sharedDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = startInstanceForTenant(sharedDefinition, TENANT_ONE);
            IMigrationPlan   migrationPlan   = engineRule.RuntimeService.CreateMigrationPlan(sharedDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            // when
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();

            // then
            AssertInstanceOfDefinition(processInstance, targetDefinition);
        }
Ejemplo n.º 16
0
        public virtual void canMigrateInstanceWithTenantIdToDefinitionWithoutTenantId()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);
            IMigrationPlan   migrationPlan   = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            // when
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();

            // then
            AssertMigratedTo(processInstance, targetDefinition);
        }
Ejemplo n.º 17
0
        public virtual MigratingProcessInstance Parse(string processInstanceId, IMigrationPlan migrationPlan,
                                                      MigratingProcessInstanceValidationReportImpl processInstanceReport)
        {
            var commandContext     = Context.CommandContext;
            var eventSubscriptions = FetchEventSubscriptions(commandContext, processInstanceId);
            var executions         = FetchExecutions(commandContext, processInstanceId);
            var externalTasks      = FetchExternalTasks(commandContext, processInstanceId);
            var incidents          = FetchIncidents(commandContext, processInstanceId);
            var jobs      = FetchJobs(commandContext, processInstanceId);
            var tasks     = FetchTasks(commandContext, processInstanceId);
            var variables = FetchVariables(commandContext, processInstanceId);

            //ExecutionEntity processInstance = commandContext.ExecutionManager.findExecutionById(processInstanceId);
            //processInstance.restoreProcessInstance(executions, eventSubscriptions, variables, tasks, jobs, incidents, externalTasks);

            //ProcessDefinitionEntity targetProcessDefinition = Context.ProcessEngineConfiguration.DeploymentCache.findDeployedProcessDefinitionById(migrationPlan.TargetProcessDefinitionId);
            //IList<JobDefinitionEntity> targetJobDefinitions = fetchJobDefinitions(commandContext, targetProcessDefinition.Id);

            //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
            //ORIGINAL LINE: final MigratingInstanceParseContext parseContext = new MigratingInstanceParseContext(this, migrationPlan, processInstance, targetProcessDefinition).eventSubscriptions(eventSubscriptions).externalTasks(externalTasks).incidents(incidents).jobs(jobs).tasks(tasks).targetJobDefinitions(targetJobDefinitions).variables(variables);
            //MigratingInstanceParseContext parseContext = (new MigratingInstanceParseContext(this, migrationPlan, processInstance, targetProcessDefinition)).eventSubscriptions(eventSubscriptions).externalTasks(externalTasks).incidents(incidents).jobs(jobs).tasks(tasks).targetJobDefinitions(targetJobDefinitions).variables(variables);

            var activityInstance = Engine.RuntimeService.GetActivityInstance(processInstanceId);

            var activityInstanceWalker = new ActivityInstanceWalker(activityInstance);

            //activityInstanceWalker.addPreVisitor(new TreeVisitorAnonymousInnerClass(this, parseContext));

            activityInstanceWalker.WalkWhile();

            //CompensationEventSubscriptionWalker compensateSubscriptionsWalker = new CompensationEventSubscriptionWalker(parseContext.MigratingActivityInstances);

            //compensateSubscriptionsWalker.addPreVisitor(new TreeVisitorAnonymousInnerClass2(this, parseContext));

            //compensateSubscriptionsWalker.walkWhile();

            //foreach (IncidentEntity incidentEntity in incidents)
            //{
            //    incidentHandler.handle(parseContext, incidentEntity);
            //}

            //parseContext.validateNoEntitiesLeft(processInstanceReport);

            //return parseContext.MigratingProcessInstance;
            return(null);
        }
Ejemplo n.º 18
0
        public virtual void canCreateMigrationPlanForDefinitionsOfAuthenticatedTenant()
        {
            // given
            IProcessDefinition tenant1Definition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition tenant2Definition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);


            // when
            engineRule.IdentityService.SetAuthentication("user", null, new List <string>()
            {
                TENANT_ONE
            });
            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(tenant1Definition.Id, tenant2Definition.Id).MapEqualActivities().Build();

            // then
            Assert.NotNull(migrationPlan);
        }
        public virtual void testCreate()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess).ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey));

            // when
            authRule.Init(scenario).WithUser("userId").BindResource("sourceDefinitionKey", sourceDefinition.Key).BindResource("targetDefinitionKey", targetDefinition.Key).Start();

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            // then
            if (authRule.AssertScenario(scenario))
            {
                Assert.NotNull(migrationPlan);
            }
        }
Ejemplo n.º 20
0
        public virtual void canMigrateSharedInstanceWithNoTenant()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            // when
            engineRule.IdentityService.SetAuthentication("user", null, null);
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();

            // then
            AssertMigratedTo(processInstance, targetDefinition);
        }
Ejemplo n.º 21
0
        public virtual void canMigrateInstanceWithTenantCheckDisabled()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            // when
            engineRule.IdentityService.SetAuthentication("user", null, null);
            engineRule.ProcessEngineConfiguration.SetTenantCheckEnabled(false);
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();

            // then
            AssertMigratedTo(processInstance, targetDefinition);
        }
        public virtual void canMigrateInstanceBetweenSameTenantCase1()
        {
            // given
            IProcessDefinition sourceDefinition = defaultTestRule.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = defaultTestRule.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = defaultEngineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);
            IMigrationPlan   migrationPlan   = defaultEngineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IBatch batch = defaultEngineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).ExecuteAsync();

            batchHelper.ExecuteSeedJob(batch);

            // when
            batchHelper.ExecuteJobs(batch);

            // then
            AssertMigratedTo(processInstance, targetDefinition);
        }
Ejemplo n.º 23
0
        public virtual void cannotMigrateWithNoAuthenticatedTenant()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

            engineRule.IdentityService.SetAuthentication("user", null, null);

            // then
            //exception.Expect(typeof(ProcessEngineException));
            //exception.ExpectMessage("Cannot migrate process instance '" + processInstance.Id + "' because it belongs to no authenticated tenant");

            // when
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();
        }
Ejemplo n.º 24
0
        public virtual void MigrateProcessInstance(IMigrationPlan migrationPlan, IProcessInstance processInstance)
        {
            SnapshotBeforeMigration = TakeFullProcessInstanceSnapshot(processInstance);

            var runtimeService = ProcessEngine.RuntimeService;

            runtimeService.NewMigration(migrationPlan)
            .ProcessInstanceIds(new List <string> {
                SnapshotBeforeMigration.ProcessInstanceId
            })
            .Execute();

            // fetch updated process instance
            processInstance =
                runtimeService.CreateProcessInstanceQuery(c => c.ProcessInstanceId == processInstance.Id)
                .First();

            SnapshotAfterMigration = TakeFullProcessInstanceSnapshot(processInstance);
        }
Ejemplo n.º 25
0
        public virtual void cannotMigrateInstanceWithoutTenantIdToDifferentTenant()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);
            IMigrationPlan   migrationPlan   = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            // when
            try
            {
                engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();
                Assert.Fail("exception expected");
            }
            catch (ProcessEngineException e)
            {
                // Assert.That(e.Message, CoreMatchers.Does.Contain("Cannot migrate process instance '" + processInstance.Id + "' without tenant to a process definition with a tenant ('tenant1')"));
            }
        }
        public virtual void cannotMigrateInstanceWithoutTenantIdToDifferentTenant()
        {
            // given
            IProcessDefinition sourceDefinition = defaultTestRule.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = defaultTestRule.DeployForTenantAndGetDefinition(TENANT_ONE, ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = defaultEngineRule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);
            IMigrationPlan   migrationPlan   = defaultEngineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IBatch batch = defaultEngineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).ExecuteAsync();

            batchHelper.ExecuteSeedJob(batch);

            // when
            batchHelper.ExecuteJobs(batch);

            // then
            IJob migrationJob = batchHelper.GetExecutionJobs(batch)[0];
            //Assert.That(migrationJob.ExceptionMessage, CoreMatchers.Does.Contain("Cannot migrate process instance '" + processInstance.Id + "' without tenant to a process definition with a tenant ('tenant1')"));
        }
Ejemplo n.º 27
0
        public virtual void MigrateProcessInstance(CommandContext commandContext, string processInstanceId,
                                                   IMigrationPlan migrationPlan, ProcessDefinitionEntity targetProcessDefinition)
        {
            EnsureUtil.EnsureNotNull(typeof(BadUserRequestException), "Process instance id cannot be null",
                                     "process instance id", processInstanceId);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity processInstance = commandContext.getExecutionManager().findExecutionById(processInstanceId);
            //ExecutionEntity processInstance = commandContext.ExecutionManager.findExecutionById(processInstanceId);

            //ensureProcessInstanceExist(processInstanceId, processInstance);
            //ensureOperationAllowed(commandContext, processInstance, targetProcessDefinition);
            //ensureSameProcessDefinition(processInstance, migrationPlan.SourceProcessDefinitionId);

            var processInstanceReport = new MigratingProcessInstanceValidationReportImpl();

            // Initialize migration: match migration instructions to activity instances and collect required entities
            var migratingInstanceParser = new MigratingInstanceParser(Context.ProcessEngineConfiguration.ProcessEngine);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.migration.instance.MigratingProcessInstance migratingProcessInstance = migratingInstanceParser.parse(processInstance.getId(), migrationPlan, processInstanceReport);
            //MigratingProcessInstance migratingProcessInstance = migratingInstanceParser.parse(processInstance.Id, migrationPlan, processInstanceReport);

            //validateInstructions(commandContext, migratingProcessInstance, processInstanceReport);

            if (processInstanceReport.HasFailures())
            {
                throw Logger.FailingMigratingProcessInstanceValidation(processInstanceReport);
            }

            //executeInContext(() => { deleteUnmappedActivityInstances(migratingProcessInstance); },
            //    migratingProcessInstance.SourceDefinition);

            //executeInContext(() => { migrateProcessInstance(migratingProcessInstance); },
            //    migratingProcessInstance.TargetDefinition);

            //return null;
        }
        public virtual void cannotMigrateInstanceBetweenDifferentTenants()
        {
            // given
            IProcessDefinition sharedDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition tenantDefinition = testHelper.DeployForTenantAndGetDefinition(TENANT_TWO, ProcessModels.OneTaskProcess);

            IProcessInstance processInstance = startInstanceForTenant(sharedDefinition, TENANT_ONE);
            IMigrationPlan   migrationPlan   = engineRule.RuntimeService.CreateMigrationPlan(sharedDefinition.Id, tenantDefinition.Id).MapEqualActivities().Build();

            // when
            try
            {
                engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceIds((processInstance.Id)).Execute();
                Assert.Fail("exception expected");
            }
            catch (ProcessEngineException e)
            {
                // Assert.That(e.Message, CoreMatchers.Does.Contain("Cannot migrate process instance '" + processInstance.Id + "' " + "to a process definition of a different tenant ('tenant1' != 'tenant2')"));
            }

            // then
            Assert.NotNull(migrationPlan);
        }
        public virtual void canMigrateWithProcessInstanceQueryAllInstancesOfAuthenticatedTenants()
        {
            // given
            IProcessDefinition sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            IProcessDefinition targetDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);

            IMigrationPlan migrationPlan = engineRule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id).MapEqualActivities().Build();

            IProcessInstance processInstance1 = startInstanceForTenant(sourceDefinition, TENANT_ONE);
            IProcessInstance processInstance2 = startInstanceForTenant(sourceDefinition, TENANT_TWO);

            // when
            engineRule.IdentityService.SetAuthentication("user", null, new List <string>()
            {
                TENANT_ONE, TENANT_TWO
            });
            engineRule.RuntimeService.NewMigration(migrationPlan).ProcessInstanceQuery(engineRule.RuntimeService.CreateProcessInstanceQuery()).Execute();
            engineRule.IdentityService.ClearAuthentication();

            // then
            AssertInstanceOfDefinition(processInstance1, targetDefinition);
            AssertInstanceOfDefinition(processInstance2, targetDefinition);
        }
        protected internal virtual BatchEntity CreateBatch(CommandContext commandContext, IMigrationPlan migrationPlan,
                                                           ICollection <string> processInstanceIds, ProcessDefinitionEntity sourceProcessDefinition)
        {
            var processEngineConfiguration = commandContext.ProcessEngineConfiguration;
            var batchJobHandler            = getBatchJobHandler(processEngineConfiguration);

            var configuration = new MigrationBatchConfiguration(new List <string>(processInstanceIds), migrationPlan,
                                                                ExecutionBuilder.SkipCustomListenersRenamed, ExecutionBuilder.SkipIoMappingsRenamed);

            var batch = new BatchEntity();

            batch.Type                   = batchJobHandler.Type;
            batch.TotalJobs              = CalculateSize(processEngineConfiguration, configuration);
            batch.BatchJobsPerSeed       = processEngineConfiguration.BatchJobsPerSeed;
            batch.InvocationsPerBatchJob = processEngineConfiguration.InvocationsPerBatchJob;
            batch.ConfigurationBytes     = batchJobHandler.WriteConfiguration(configuration);
            batch.TenantId               = sourceProcessDefinition.TenantId;
            (commandContext.BatchManager).Add(batch);

            return(batch);
        }