示例#1
0
        public virtual void testUpdateEventTrigger()
        {
            // given
            var newMessageName = "newMessage";

            var sourceProcessDefinition = migrationRule.DeployAndGetDefinition(ProcessModels.OneReceiveTaskProcess);
            var targetProcessDefinition =
                migrationRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(
                                                         ProcessModels.OneReceiveTaskProcess)
                                                     .RenameMessage("Message", newMessageName));

            var processInstance = runtimeService.StartProcessInstanceById(sourceProcessDefinition.Id);
            var migrationPlan   =
                runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapEqualActivities()
                .UpdateEventTriggers()
                .Build();

            var batch = runtimeService.NewMigration(migrationPlan)
                        .ProcessInstanceIds(new List <string> {
                processInstance.Id
            })
                        .ExecuteAsync();

            helper.ExecuteSeedJob(batch);

            // when
            helper.ExecuteJobs(batch);

            // then the message event subscription's event name was changed
            var eventSubscription = runtimeService.CreateEventSubscriptionQuery()
                                    .First();

            Assert.AreEqual(newMessageName, eventSubscription.EventName);
        }
        public virtual void shouldSkipIoMappings()
        {
            // given
            var processDefinition =
                testRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.TwoTasksProcess)
                                                //.ActivityBuilder("userTask1")
                                                //.CamundaInputParameter("foo", "bar")
                                                //.Done()
                                                );
            var processInstance = runtimeService.StartProcessInstanceByKey("Process");

            runtimeService.DeleteProcessInstance(processInstance.Id, "test");

            // when
            runtimeService.RestartProcessInstances(processDefinition.Id)
            .StartBeforeActivity("userTask1")
            .SetSkipIoMappings()
            .SetProcessInstanceIds(processInstance.Id)
            .Execute();

            // then
            var task1Execution = runtimeService.CreateExecutionQuery(c => c.ActivityId == "userTask1")
                                 .First();

            Assert.NotNull(task1Execution);
            Assert.IsNull(runtimeService.GetVariable(task1Execution.Id, "foo"));
        }
示例#3
0
        public virtual void testSkipListenerInvocationForNewlyCreatedScope()
        {
            // given
            DelegateEvent.ClearEvents();

            var sourceProcessDefinition = migrationRule.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.GetName method:
            var targetProcessDefinition =
                migrationRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess)
                                                     //.ActivityBuilder("subProcess")
                                                     //.CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                                     //    typeof(DelegateExecutionListener).FullName)
                                                     /*.Done()*/);

            var migrationPlan =
                engineRule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("userTask", "userTask")
                .Build();

            var processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceProcessDefinition.Id);

            var batch = engineRule.RuntimeService.NewMigration(migrationPlan)
                        .ProcessInstanceIds(processInstance.Id)
                        .SkipCustomListeners()
                        .ExecuteAsync();

            helper.ExecuteSeedJob(batch);

            // when
            helper.ExecuteJobs(batch);

            // then
            Assert.AreEqual(0, DelegateEvent.Events.Count);
        }
示例#4
0
        public virtual void testSkipIoMappingInvocationForNewlyCreatedScope()
        {
            // given
            var sourceProcessDefinition = migrationRule.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var targetProcessDefinition =
                migrationRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess)
                                                     //.ActivityBuilder("subProcess")
                                                     //.camundaInputParameter("foo", "bar")
                                                     //.Done()
                                                     );

            var migrationPlan =
                engineRule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("userTask", "userTask")
                .Build();

            var processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceProcessDefinition.Id);

            var batch = engineRule.RuntimeService.NewMigration(migrationPlan)
                        .ProcessInstanceIds(processInstance.Id)
                        .SkipIoMappings()
                        .ExecuteAsync();

            helper.ExecuteSeedJob(batch);

            // when
            helper.ExecuteJobs(batch);

            // then
            Assert.AreEqual(0, engineRule.RuntimeService.CreateVariableInstanceQuery()
                            .Count());
        }
示例#5
0
        public virtual void testMigrateHistoricSubProcessRename()
        {
            //given
            var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.SubprocessProcess);
            var targetDefinition =
                testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.SubprocessProcess)
                                                  .ChangeElementId("subProcess", "newSubProcess"));

            var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id)
                                .MapActivities("subProcess", "newSubProcess")
                                .MapActivities("userTask", "userTask")
                                .Build();

            var processInstance = rule.RuntimeService.StartProcessInstanceById(sourceDefinition.Id);

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

            // then
            var historicInstances = historyService.CreateHistoricActivityInstanceQuery(c => c.ProcessInstanceId == processInstance.Id)
                                    /*.Unfinished()*/
                                    /*.OrderByActivityId()*/
                                    /*.Asc()*/

                                    .ToList();

            Assert.AreEqual(2, historicInstances.Count);

            AssertMigratedTo(historicInstances[0], targetDefinition, "newSubProcess");
            AssertMigratedTo(historicInstances[1], targetDefinition, "userTask");
            Assert.AreEqual(processInstance.Id, historicInstances[0].ParentActivityInstanceId);
            Assert.AreEqual(historicInstances[0].Id, historicInstances[1].ParentActivityInstanceId);
        }
示例#6
0
        public virtual void testMigrateHistoryVariableInstance()
        {
            //given
            var sourceDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var targetDefinition =
                testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                                  .ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey));

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

            runtimeService.SetVariable(processInstance.Id, "test", 3537);
            var instance = historyService.CreateHistoricVariableInstanceQuery()
                           .First();

            var migrationPlan = rule.RuntimeService.CreateMigrationPlan(sourceDefinition.Id, targetDefinition.Id)
                                .MapActivities("userTask", "userTask")
                                .Build();

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

            //then
            var migratedInstance = historyService.CreateHistoricVariableInstanceQuery()
                                   .First();

            Assert.AreEqual(targetDefinition.Key, migratedInstance.ProcessDefinitionKey);
            Assert.AreEqual(targetDefinition.Id, migratedInstance.ProcessDefinitionId);
            Assert.AreEqual(instance.ActivityInstanceId, migratedInstance.ActivityInstanceId);
            Assert.AreEqual(instance.ExecutionId, migratedInstance.ExecutionId);
        }
示例#7
0
        private static IBpmnModelInstance GetDone()
        {
            var task = ESS.FW.Bpm.Model.Bpmn.Bpmn.CreateExecutableProcess("Process")
                       .StartEvent()
                       .UserTask("userTask")
                       .ServiceTask("sendTask");

            task
            .CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                           typeof(SendMessageDelegate).FullName)
            .CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                           typeof(RecorderExecutionListener).FullName);
            var model = task.CamundaExpression("${true}")
                        .EndEvent("endEvent")
                        .CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                                       typeof(RecorderExecutionListener).FullName)
                        .Done();
            var start = ModifiableBpmnModelInstance.Modify(model)
                        .AddSubProcessTo("Process")
                        .TriggerByEvent()
                        .EmbeddedSubProcess()
                        .StartEvent("startSubProcess");

            start.Interrupting(false)
            .CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                           typeof(RecorderExecutionListener).FullName);
            return(start.Message(MESSAGE)
                   .UserTask("subProcessTask")
                   .CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                                  typeof(RecorderExecutionListener).FullName)
                   .EndEvent("endSubProcess")
                   .Done());
        }
示例#8
0
        public virtual void testNoCreationOnSyncBatchJobExecution()
        {
            // given
            var sourceProcessDefinition = migrationRule.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var targetProcessDefinition =
                migrationRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                                     .ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey));

            var migrationPlan =
                engineRule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapEqualActivities()
                .Build();

            var processInstance = engineRule.RuntimeService.StartProcessInstanceById(sourceProcessDefinition.Id);
            var batch           = engineRule.RuntimeService.NewMigration(migrationPlan)
                                  .ProcessInstanceIds(processInstance.Id)
                                  .ExecuteAsync();

            batchHelper.ExecuteSeedJob(batch);

            // when
            engineRule.IdentityService.AuthenticatedUserId = USER_ID;
            batchHelper.ExecuteJobs(batch);
            engineRule.IdentityService.ClearAuthentication();

            // then
            Assert.AreEqual(0, engineRule.HistoryService.CreateUserOperationLogQuery()
                            .Count());
        }
        public virtual void shouldSkipCustomListeners()
        {
            // given
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.GetName method:
            var processDefinition =
                testRule.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.TwoTasksProcess)
                                                //.ActivityBuilder("userTask1")
                                                //.CamundaExecutionListenerClass(ExecutionListenerFields.EventNameStart,
                                                //    typeof(IncrementCounterListener).FullName)
                                                //.Done()
                                                );
            var processInstance = runtimeService.StartProcessInstanceByKey("Process");

            runtimeService.DeleteProcessInstance(processInstance.Id, "test");

            IncrementCounterListener.Counter = 0;
            // when
            runtimeService.RestartProcessInstances(processDefinition.Id)
            .StartBeforeActivity("userTask1")
            .SetProcessInstanceIds(processInstance.Id)
            .SetSkipCustomListeners()
            .Execute();

            // then
            Assert.AreEqual(0, IncrementCounterListener.Counter);
        }
示例#10
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);
            }
        }
示例#11
0
        public virtual MigratingBpmnEventTrigger addBoundaryEvent(ProcessEngine engine, BpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).activityBuilder(activityId).boundaryEvent(boundaryEventId).timerWithDate(TIMER_DATE).done();

            TimerEventTrigger trigger = new TimerEventTrigger();

            trigger.engine      = engine;
            trigger.activityId  = boundaryEventId;
            trigger.handlerType = TimerExecuteNestedActivityJobHandler.TYPE;

            return(trigger);
        }
示例#12
0
        public virtual MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).addSubProcessTo(parentId).id(subProcessId).triggerByEvent().embeddedSubProcess().startEvent(startEventId).signal(SIGNAL_NAME).subProcessDone().done();

            SignalTrigger trigger = new SignalTrigger();

            trigger.engine     = engine;
            trigger.signalName = SIGNAL_NAME;
            trigger.activityId = startEventId;

            return(trigger);
        }
示例#13
0
        public virtual MigratingBpmnEventTrigger addBoundaryEvent(ProcessEngine engine, BpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).activityBuilder(activityId).boundaryEvent(boundaryEventId).signal(SIGNAL_NAME).done();

            SignalTrigger trigger = new SignalTrigger();

            trigger.engine     = engine;
            trigger.signalName = SIGNAL_NAME;
            trigger.activityId = boundaryEventId;

            return(trigger);
        }
示例#14
0
        public virtual MigratingBpmnEventTrigger addBoundaryEvent(ProcessEngine engine, BpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).activityBuilder(activityId).boundaryEvent(boundaryEventId).message(MESSAGE_NAME).done();

            MessageTrigger trigger = new MessageTrigger();

            trigger.engine      = engine;
            trigger.messageName = MESSAGE_NAME;
            trigger.activityId  = boundaryEventId;

            return(trigger);
        }
示例#15
0
        public virtual MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).addSubProcessTo(parentId).id(subProcessId).triggerByEvent().embeddedSubProcess().startEvent(startEventId).timerWithDuration("PT10M").subProcessDone().done();

            TimerEventTrigger trigger = new TimerEventTrigger();

            trigger.engine      = engine;
            trigger.activityId  = startEventId;
            trigger.handlerType = TimerStartEventSubprocessJobHandler.TYPE;

            return(trigger);
        }
示例#16
0
        public virtual MigratingBpmnEventTrigger addEventSubProcess(ProcessEngine engine, BpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).addSubProcessTo(parentId).id(subProcessId).triggerByEvent().embeddedSubProcess().startEvent(startEventId).condition(VAR_CONDITION).subProcessDone().done();

            ConditionalEventTrigger trigger = new ConditionalEventTrigger();

            trigger.engine        = engine;
            trigger.variableName  = "any";
            trigger.variableValue = "any";
            trigger.activityId    = startEventId;

            return(trigger);
        }
示例#17
0
        public virtual MigratingBpmnEventTrigger addBoundaryEvent(ProcessEngine engine, BpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.wrap(modelInstance).activityBuilder(activityId).boundaryEvent(boundaryEventId).condition(VAR_CONDITION).done();

            ConditionalEventTrigger trigger = new ConditionalEventTrigger();

            trigger.engine        = engine;
            trigger.variableName  = "any";
            trigger.variableValue = "any";
            trigger.activityId    = boundaryEventId;

            return(trigger);
        }
示例#18
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Before public void initTest()
        public virtual void initTest()
        {
            runtimeService = rule.RuntimeService;
            historyService = rule.HistoryService;


            sourceProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.ONE_TASK_PROCESS);
            ModifiableBpmnModelInstance modifiedModel = modify(ProcessModels.ONE_TASK_PROCESS).changeElementId("Process", "Process2").changeElementId("userTask", "userTask2");

            targetProcessDefinition = testHelper.deployAndGetDefinition(modifiedModel);
            migrationPlan           = runtimeService.createMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id).mapActivities("userTask", "userTask2").build();
            runtimeService.startProcessInstanceById(sourceProcessDefinition.Id);
        }
示例#19
0
        public virtual void testMigrateHistoricIncident()
        {
            // given
            var sourceProcess = testHelper.DeployAndGetDefinition(AsyncProcessModels.ASYNC_BEFORE_USER_TASK_PROCESS);
            var targetProcess =
                testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(
                                                      AsyncProcessModels.ASYNC_BEFORE_USER_TASK_PROCESS)
                                                  .ChangeElementId(ProcessModels.ProcessKey, "new" + ProcessModels.ProcessKey)
                                                  .ChangeElementId("userTask", "newUserTask"));

            var targetJobDefinition = managementService.CreateJobDefinitionQuery(c => c.ProcessDefinitionId == targetProcess.Id)
                                      .First();

            var migrationPlan = runtimeService.CreateMigrationPlan(sourceProcess.Id, targetProcess.Id)
                                .MapActivities("userTask", "newUserTask")
                                .Build();

            var processInstance = runtimeService.StartProcessInstanceById(sourceProcess.Id);

            var job = managementService.CreateJobQuery()
                      .First();

            managementService.SetJobRetries(job.Id, 0);

            var incidentBeforeMigration = historyService.CreateHistoricIncidentQuery()
                                          .First();

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

            // then
            var historicIncident = historyService.CreateHistoricIncidentQuery()
                                   .First();

            Assert.NotNull(historicIncident);

            Assert.AreEqual("newUserTask", historicIncident.ActivityId);
            Assert.AreEqual(targetJobDefinition.Id, historicIncident.JobDefinitionId);
            Assert.AreEqual(targetProcess.Id, historicIncident.ProcessDefinitionId);
            Assert.AreEqual(targetProcess.Key, historicIncident.ProcessDefinitionKey);
            Assert.AreEqual(processInstance.Id, historicIncident.ExecutionId);

            // and other properties have not changed
            Assert.AreEqual(incidentBeforeMigration.CreateTime, historicIncident.CreateTime);
            Assert.AreEqual(incidentBeforeMigration.ProcessInstanceId, historicIncident.ProcessInstanceId);
        }
        public virtual void initTest()
        {
            runtimeService = rule.RuntimeService;
            historyService = rule.HistoryService;


            sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var modifiedModel = ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                .ChangeElementId("Process", "Process2")
                                .ChangeElementId("userTask", "userTask2");

            targetProcessDefinition = testHelper.DeployAndGetDefinition(modifiedModel);
            migrationPlan           = runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                                      .MapActivities("userTask", "userTask2")
                                      .Build();
            runtimeService.StartProcessInstanceById(sourceProcessDefinition.Id);
        }
        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);
            }
        }
示例#22
0
        public virtual IMigratingBpmnEventTrigger AddBoundaryEvent(IProcessEngine engine,
                                                                   IBpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            //.ActivityBuilder(activityId)
            //.BoundaryEvent(boundaryEventId)
            //.Signal(SIGNAL_NAME)
            //.Done()
            ;

            var trigger = new SignalTrigger();

            trigger.engine     = engine;
            trigger.signalName = SIGNAL_NAME;
            trigger.activityId = boundaryEventId;

            return(trigger);
        }
示例#23
0
        public virtual IMigratingBpmnEventTrigger AddBoundaryEvent(IProcessEngine engine,
                                                                   IBpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            //.ActivityBuilder(activityId)
            //.BoundaryEvent(boundaryEventId)
            ////.Message(MESSAGE_NAME)
            //.Done()
            ;

            var trigger = new MessageTrigger();

            trigger.Engine      = engine;
            trigger.MessageName = MESSAGE_NAME;
            trigger.ActivityId  = boundaryEventId;

            return(trigger);
        }
示例#24
0
        public virtual IMigratingBpmnEventTrigger AddBoundaryEvent(IProcessEngine engine,
                                                                   IBpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            //.ActivityBuilder(activityId)
            //.BoundaryEvent(boundaryEventId)
            //.TimerWithDate(TIMER_DATE)
            //.Done()
            ;

            var trigger = new TimerEventTrigger();

            trigger.Engine      = engine;
            trigger.ActivityId  = boundaryEventId;
            trigger.HandlerType = TimerExecuteNestedActivityJobHandler.TYPE;

            return(trigger);
        }
示例#25
0
        public virtual IMigratingBpmnEventTrigger AddBoundaryEvent(IProcessEngine engine,
                                                                   IBpmnModelInstance modelInstance, string activityId, string boundaryEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            //.ActivityBuilder(activityId)
            //.BoundaryEvent(boundaryEventId)
            //.Condition(VAR_CONDITION)
            //.Done()
            ;

            var trigger = new ConditionalEventTrigger();

            trigger.Engine        = engine;
            trigger.VariableName  = "any";
            trigger.VariableValue = "any";
            trigger.ActivityId    = boundaryEventId;

            return(trigger);
        }
        public virtual void testMigrateHistoryUserTaskInstance()
        {
            //given
            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var targetProcessDefinition =
                testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                                  .ChangeElementId("Process", "Process2")
                                                  .ChangeElementId("userTask", "userTask2"));

            var migrationPlan =
                runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("userTask", "userTask2")
                .Build();

            var processInstance = runtimeService.StartProcessInstanceById(sourceProcessDefinition.Id);

            var sourceHistoryTaskInstanceQuery = historyService.CreateHistoricTaskInstanceQuery(c => c.ProcessDefinitionId == sourceProcessDefinition.Id);
            var targetHistoryTaskInstanceQuery = historyService.CreateHistoricTaskInstanceQuery(c => c.ProcessDefinitionId == targetProcessDefinition.Id);

            var activityInstance = runtimeService.GetActivityInstance(processInstance.Id);

            //when
            Assert.AreEqual(1, sourceHistoryTaskInstanceQuery.Count());
            Assert.AreEqual(0, targetHistoryTaskInstanceQuery.Count());
            var sourceProcessInstanceQuery = runtimeService.CreateProcessInstanceQuery(c => c.ProcessDefinitionId == sourceProcessDefinition.Id);

            runtimeService.NewMigration(migrationPlan)
            .ProcessInstanceQuery(sourceProcessInstanceQuery)
            .Execute();

            //then
            Assert.AreEqual(0, sourceHistoryTaskInstanceQuery.Count());
            Assert.AreEqual(1, targetHistoryTaskInstanceQuery.Count());

            var instance = targetHistoryTaskInstanceQuery.First();

            Assert.AreEqual(targetProcessDefinition.Key, instance.ProcessDefinitionKey);
            Assert.AreEqual(targetProcessDefinition.Id, instance.ProcessDefinitionId);
            Assert.AreEqual("userTask2", instance.TaskDefinitionKey);
            Assert.AreEqual(activityInstance.GetActivityInstances("userTask")[0].Id, instance.ActivityInstanceId);
        }
示例#27
0
        public virtual void testMigrateHistoryActivityInstance()
        {
            //given
            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.OneTaskProcess);
            var targetProcessDefinition =
                testHelper.DeployAndGetDefinition(ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                                  .ChangeElementId("Process", "Process2")
                                                  .ChangeElementId("userTask", "userTask2")
                                                  .ChangeElementName("userTask", "new activity name"));

            var migrationPlan =
                runtimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("userTask", "userTask2")
                .Build();

            var processInstance = runtimeService.StartProcessInstanceById(sourceProcessDefinition.Id);

            var sourceHistoryActivityInstanceQuery = historyService.CreateHistoricActivityInstanceQuery(c => c.ProcessDefinitionId == sourceProcessDefinition.Id);
            var targetHistoryActivityInstanceQuery = historyService.CreateHistoricActivityInstanceQuery(c => c.ProcessDefinitionId == targetProcessDefinition.Id);

            //when
            Assert.AreEqual(2, sourceHistoryActivityInstanceQuery.Count());
            Assert.AreEqual(0, targetHistoryActivityInstanceQuery.Count());
            var sourceProcessInstanceQuery = runtimeService.CreateProcessInstanceQuery(c => c.ProcessDefinitionId == sourceProcessDefinition.Id);

            runtimeService.NewMigration(migrationPlan)
            .ProcessInstanceQuery(sourceProcessInstanceQuery)
            .Execute();

            // then one instance of the start event still belongs to the source process
            // and one active user task instances is now migrated to the target process
            Assert.AreEqual(1, sourceHistoryActivityInstanceQuery.Count());
            Assert.AreEqual(1, targetHistoryActivityInstanceQuery.Count());

            var instance = targetHistoryActivityInstanceQuery.First();

            AssertMigratedTo(instance, targetProcessDefinition, "userTask2");
            Assert.AreEqual("new activity name", instance.ActivityName);
            Assert.AreEqual(processInstance.Id, instance.ParentActivityInstanceId);
            Assert.AreEqual("userTask", instance.ActivityType);
        }
示例#28
0
        public virtual IMigratingBpmnEventTrigger AddEventSubProcess(IProcessEngine engine,
                                                                     IBpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            .AddSubProcessTo(parentId)
            //.Id(subProcessId)
            .TriggerByEvent()
            ////.EmbeddedSubProcess()
            //.StartEvent(startEventId)
            //.TimerWithDuration("PT10M")
            .SubProcessDone()
            .Done();

            var trigger = new TimerEventTrigger();

            trigger.Engine      = engine;
            trigger.ActivityId  = startEventId;
            trigger.HandlerType = TimerStartEventSubprocessJobHandler.TYPE;

            return(trigger);
        }
示例#29
0
        public virtual IMigratingBpmnEventTrigger AddEventSubProcess(IProcessEngine engine,
                                                                     IBpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            .AddSubProcessTo(parentId)
            //.Id(subProcessId)
            .TriggerByEvent()
            ////.EmbeddedSubProcess()
            //.StartEvent(startEventId)
            ////.Message(MESSAGE_NAME)
            .SubProcessDone()
            .Done();

            var trigger = new MessageTrigger();

            trigger.Engine      = engine;
            trigger.MessageName = MESSAGE_NAME;
            trigger.ActivityId  = startEventId;

            return(trigger);
        }
示例#30
0
        public virtual IMigratingBpmnEventTrigger AddEventSubProcess(IProcessEngine engine,
                                                                     IBpmnModelInstance modelInstance, string parentId, string subProcessId, string startEventId)
        {
            ModifiableBpmnModelInstance.Wrap(modelInstance)
            .AddSubProcessTo(parentId)
            //.Id(subProcessId)
            .TriggerByEvent()
            ////.EmbeddedSubProcess()
            //.StartEvent(startEventId)
            //.Signal(SIGNAL_NAME)
            .SubProcessDone()
            .Done();

            var trigger = new SignalTrigger();

            trigger.engine     = engine;
            trigger.signalName = SIGNAL_NAME;
            trigger.activityId = startEventId;

            return(trigger);
        }