コード例 #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testUpdateEventTimer()
        public virtual void testUpdateEventTimer()
        {
            // given
            ClockTestUtil.setClockToDateWithoutMilliseconds();

            BpmnModelInstance sourceProcess = modify(ProcessModels.ONE_TASK_PROCESS).activityBuilder(USER_TASK_ID).boundaryEvent(BOUNDARY_ID).timerWithDate(TIMER_DATE).userTask(AFTER_BOUNDARY_TASK).endEvent().done();
            BpmnModelInstance targetProcess = modify(ProcessModels.ONE_TASK_PROCESS).activityBuilder(USER_TASK_ID).boundaryEvent(BOUNDARY_ID).timerWithDuration("PT50M").userTask(AFTER_BOUNDARY_TASK).endEvent().done();

            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(sourceProcess);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(targetProcess);

            MigrationPlan migrationPlan = rule.RuntimeService.createMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id).mapActivities(USER_TASK_ID, USER_TASK_ID).mapActivities(BOUNDARY_ID, BOUNDARY_ID).updateEventTrigger().build();

            // when
            testHelper.createProcessInstanceAndMigrate(migrationPlan);

            // then
            DateTime newDueDate = (new DateTime(ClockUtil.CurrentTime)).plusMinutes(50).toDate();

            testHelper.assertJobMigrated(testHelper.snapshotBeforeMigration.Jobs[0], BOUNDARY_ID, newDueDate);

            // and it is possible to successfully complete the migrated instance
            Job jobAfterMigration = testHelper.snapshotAfterMigration.Jobs[0];

            rule.ManagementService.executeJob(jobAfterMigration.Id);

            testHelper.completeTask(AFTER_BOUNDARY_TASK);
            testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.ProcessInstanceId);
        }
コード例 #2
0
        public virtual void TestAcquisitionByPriorityAndDueDate()
        {
            // job with priority 10
            var instance1 = StartProcess("jobPrioProcess", "task1");

            // job with priority 5
            ClockTestUtil.IncrementClock(1);
            var instance2 = StartProcess("jobPrioProcess", "task2");

            // job with priority 10
            ClockTestUtil.IncrementClock(1);
            var instance3 = StartProcess("jobPrioProcess", "task1");

            // job with priority 5
            ClockTestUtil.IncrementClock(1);
            var instance4 = StartProcess("jobPrioProcess", "task2");

            var acquirableJobs = FindAcquirableJobs();

            Assert.AreEqual(4, acquirableJobs.Count);
            Assert.AreEqual(instance1, acquirableJobs[0].ProcessInstanceId);
            Assert.AreEqual(instance3, acquirableJobs[1].ProcessInstanceId);
            Assert.AreEqual(instance2, acquirableJobs[2].ProcessInstanceId);
            Assert.AreEqual(instance4, acquirableJobs[3].ProcessInstanceId);
        }
コード例 #3
0
        public virtual void TestJobPriorityIsNotConsidered()
        {
            // prio 5
            var instance1 = StartProcess("jobPrioProcess", "task2");

            // prio 10
            ClockTestUtil.IncrementClock(1);
            var instance2 = StartProcess("jobPrioProcess", "task1");

            // prio 5
            ClockTestUtil.IncrementClock(1);
            var instance3 = StartProcess("jobPrioProcess", "task2");

            // prio 10
            ClockTestUtil.IncrementClock(1);
            var instance4 = StartProcess("jobPrioProcess", "task1");

            var acquirableJobs = FindAcquirableJobs();

            Assert.AreEqual(4, acquirableJobs.Count);

            Assert.AreEqual(5, (int)acquirableJobs[0].Priority);
            Assert.AreEqual(instance1, acquirableJobs[0].ProcessInstanceId);
            Assert.AreEqual(10, (int)acquirableJobs[1].Priority);
            Assert.AreEqual(instance2, acquirableJobs[1].ProcessInstanceId);
            Assert.AreEqual(5, (int)acquirableJobs[2].Priority);
            Assert.AreEqual(instance3, acquirableJobs[2].ProcessInstanceId);
            Assert.AreEqual(10, (int)acquirableJobs[3].Priority);
            Assert.AreEqual(instance4, acquirableJobs[3].ProcessInstanceId);
        }
コード例 #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testUpdateEventTimer()
        public virtual void testUpdateEventTimer()
        {
            // given
            ClockTestUtil.setClockToDateWithoutMilliseconds();

            BpmnModelInstance sourceProcess = EventSubProcessModels.TIMER_EVENT_SUBPROCESS_PROCESS;
            BpmnModelInstance targetProcess = modify(EventSubProcessModels.TIMER_EVENT_SUBPROCESS_PROCESS).removeChildren(EVENT_SUB_PROCESS_START_ID).startEventBuilder(EVENT_SUB_PROCESS_START_ID).timerWithDuration("PT50M").done();

            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(sourceProcess);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(targetProcess);

            MigrationPlan migrationPlan = rule.RuntimeService.createMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id).mapActivities(USER_TASK_ID, USER_TASK_ID).mapActivities(EVENT_SUB_PROCESS_START_ID, EVENT_SUB_PROCESS_START_ID).updateEventTrigger().build();

            // when
            testHelper.createProcessInstanceAndMigrate(migrationPlan);

            // then
            DateTime newDueDate = (new DateTime(ClockUtil.CurrentTime)).plusMinutes(50).toDate();

            testHelper.assertJobMigrated(testHelper.snapshotBeforeMigration.Jobs[0], EVENT_SUB_PROCESS_START_ID, newDueDate);

            // and it is possible to successfully complete the migrated instance
            Job jobAfterMigration = testHelper.snapshotAfterMigration.Jobs[0];

            rule.ManagementService.executeJob(jobAfterMigration.Id);

            testHelper.completeTask(EVENT_SUB_PROCESS_TASK_ID);
            testHelper.assertProcessEnded(testHelper.snapshotBeforeMigration.ProcessInstanceId);
        }
コード例 #5
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testMigrateJobUpdateTimerConfiguration()
        public virtual void testMigrateJobUpdateTimerConfiguration()
        {
            // given
            ClockTestUtil.setClockToDateWithoutMilliseconds();

            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(TimerCatchModels.ONE_TIMER_CATCH_PROCESS);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.newModel().startEvent().intermediateCatchEvent("timerCatch").timerWithDuration("PT50M").userTask("userTask").endEvent().done());

            MigrationPlan migrationPlan = rule.RuntimeService.createMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id).mapActivities("timerCatch", "timerCatch").updateEventTrigger().build();

            // when
            ProcessInstance processInstance = testHelper.createProcessInstanceAndMigrate(migrationPlan);

            // then
            DateTime newDueDate = (new DateTime(ClockUtil.CurrentTime)).plusMinutes(50).toDate();

            testHelper.assertJobMigrated(testHelper.snapshotBeforeMigration.Jobs[0], "timerCatch", newDueDate);

            // and it is possible to trigger the event
            Job jobAfterMigration = testHelper.snapshotAfterMigration.Jobs[0];

            rule.ManagementService.executeJob(jobAfterMigration.Id);

            testHelper.completeTask("userTask");
            testHelper.assertProcessEnded(processInstance.Id);
        }
コード例 #6
0
        public virtual void testMonitorJobPollingForCompletion()
        {
            var processDefinition = testRule.DeployAndGetDefinition(instance);
            var batch             = helper.StartAfterAsync("process1", 3, "user1", processDefinition.Id);

            // when the seed job creates the monitor job
            var createDate = ClockTestUtil.SetClockToDateWithoutMilliseconds();

            helper.ExecuteSeedJob(batch);

            // then the monitor job has a no due date set
            var monitorJob = helper.GetMonitorJob(batch);

            Assert.NotNull(monitorJob);
            Assert.IsNull(monitorJob.Duedate);

            // when the monitor job is executed
            helper.ExecuteMonitorJob(batch);

            // then the monitor job has a due date of the default batch poll time
            monitorJob = helper.GetMonitorJob(batch);
            var dueDate = helper.AddSeconds(createDate, 30);

            Assert.AreEqual(dueDate, monitorJob.Duedate);
        }
コード例 #7
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Parameterized.Parameters(name = "Job DueDate is set: {0}") public static java.util.Collection<Object[]> scenarios() throws java.text.ParseException
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        public static ICollection <object[]> scenarios()
        {
            return(Arrays.asList(new object[][]
            {
                new object[] { false, null },
                new object[] { true, ClockTestUtil.setClockToDateWithoutMilliseconds() }
            }));
        }
コード例 #8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testBatchQueryOrderByStartTimeDec()
        public virtual void testBatchQueryOrderByStartTimeDec()
        {
            // given
            ClockTestUtil.setClockToDateWithoutMilliseconds();
            helper.migrateProcessInstancesAsync(1);
            ClockTestUtil.incrementClock(1000);
            helper.migrateProcessInstancesAsync(1);

            // when
            IList <HistoricBatch> orderedBatches = historyService.createHistoricBatchQuery().orderByStartTime().desc().list();

            // then
            verifySorting(orderedBatches, inverted(historicBatchByStartTime()));
        }
コード例 #9
0
        public virtual void testUpdateEventTimer()
        {
            // given
            ClockTestUtil.SetClockToDateWithoutMilliseconds();

            IBpmnModelInstance sourceProcess = ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                               //.ActivityBuilder(USER_TASK_ID)
                                               //.BoundaryEvent(BOUNDARY_ID)
                                               //.TimerWithDate(TIMER_DATE)
                                               //.UserTask(AFTER_BOUNDARY_TASK)
                                               //.EndEvent()
                                               //.Done()
            ;
            IBpmnModelInstance targetProcess = ModifiableBpmnModelInstance.Modify(ProcessModels.OneTaskProcess)
                                               //.ActivityBuilder(USER_TASK_ID)
                                               //.BoundaryEvent(BOUNDARY_ID)
                                               //.TimerWithDuration("PT50M")
                                               //.UserTask(AFTER_BOUNDARY_TASK)
                                               //.EndEvent()
                                               //.Done()
            ;

            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(sourceProcess);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(targetProcess);

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities(USER_TASK_ID, USER_TASK_ID)
                .MapActivities(BOUNDARY_ID, BOUNDARY_ID)
                .UpdateEventTrigger()
                .Build();

            // when
            testHelper.CreateProcessInstanceAndMigrate(migrationPlan);

            // then
            var newDueDate = new DateTime(ClockUtil.CurrentTime.Ticks).AddMinutes(50);

            testHelper.AssertJobMigrated(testHelper.SnapshotBeforeMigration.Jobs[0], BOUNDARY_ID, newDueDate);

            // and it is possible to successfully complete the migrated instance
            var jobAfterMigration = testHelper.SnapshotAfterMigration.Jobs[0];

            rule.ManagementService.ExecuteJob(jobAfterMigration.Id);

            testHelper.CompleteTask(AFTER_BOUNDARY_TASK);
            testHelper.AssertProcessEnded(testHelper.SnapshotBeforeMigration.ProcessInstanceId);
        }
コード例 #10
0
        public virtual void testBatchQueryOrderByStartTimeDec()
        {
            // given
            ClockTestUtil.SetClockToDateWithoutMilliseconds();
            helper.MigrateProcessInstancesAsync(1);
            ClockTestUtil.IncrementClock(1000);
            helper.MigrateProcessInstancesAsync(1);

            // when
            var orderedBatches = historyService.CreateHistoricBatchQuery()
                                 // .OrderByStartTime()
                                 /*.Desc()*/

                                 .ToList();

            // then
            //verifySorting(orderedBatches, inverted(historicBatchByStartTime()));
        }
コード例 #11
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testBatchQueryOrderByEndTimeAsc()
        public virtual void testBatchQueryOrderByEndTimeAsc()
        {
            // given
            ClockTestUtil.setClockToDateWithoutMilliseconds();
            Batch batch1 = helper.migrateProcessInstancesAsync(1);

            helper.completeBatch(batch1);

            ClockTestUtil.incrementClock(1000);
            Batch batch2 = helper.migrateProcessInstancesAsync(1);

            helper.completeBatch(batch2);

            // when
            IList <HistoricBatch> orderedBatches = historyService.createHistoricBatchQuery().orderByEndTime().asc().list();

            // then
            verifySorting(orderedBatches, historicBatchByEndTime());
        }
コード例 #12
0
        public virtual void TestAcquisitionByPriority()
        {
            // jobs with priority 10
            StartProcess("jobPrioProcess", "task1", 5);

            // jobs with priority 5
            StartProcess("jobPrioProcess", "task2", 5);

            // jobs with priority 8
            StartProcess("timerJobPrioProcess", "timer1", 5);

            // jobs with priority 4
            StartProcess("timerJobPrioProcess", "timer2", 5);

            // make timers due
            ClockTestUtil.IncrementClock(61);

            var acquirableJobs = FindAcquirableJobs();

            Assert.AreEqual(20, acquirableJobs.Count);
            for (var i = 0; i < 5; i++)
            {
                Assert.AreEqual(10, acquirableJobs[i].Priority);
            }

            for (var i = 5; i < 10; i++)
            {
                Assert.AreEqual(8, acquirableJobs[i].Priority);
            }

            for (var i = 10; i < 15; i++)
            {
                Assert.AreEqual(5, acquirableJobs[i].Priority);
            }

            for (var i = 15; i < 20; i++)
            {
                Assert.AreEqual(4, acquirableJobs[i].Priority);
            }
        }
コード例 #13
0
        public virtual void TestTimerJobsArePreferred()
        {
            // first start process with timer job
            RuntimeService.StartProcessInstanceByKey("testProcess");
            // then start process with async task
            RuntimeService.StartProcessInstanceByKey("simpleAsyncProcess");
            // then start process with timer job
            RuntimeService.StartProcessInstanceByKey("testProcess");
            // and another process with async task
            RuntimeService.StartProcessInstanceByKey("simpleAsyncProcess");

            // increment clock so that timer events are acquirable
            ClockTestUtil.IncrementClock(70);

            var acquirableJobs = FindAcquirableJobs();

            Assert.AreEqual(4, acquirableJobs.Count);
            Assert.True(acquirableJobs[0] is TimerEntity);
            Assert.True(acquirableJobs[1] is TimerEntity);
            Assert.True(acquirableJobs[2] is MessageEntity);
            Assert.True(acquirableJobs[3] is MessageEntity);
        }
コード例 #14
0
        public virtual void testUpdateEventTimer()
        {
            // given
            ClockTestUtil.SetClockToDateWithoutMilliseconds();

            var sourceProcess = EventSubProcessModels.TIMER_EVENT_SUBPROCESS_PROCESS;
            var targetProcess = ModifiableBpmnModelInstance.Modify(EventSubProcessModels.TIMER_EVENT_SUBPROCESS_PROCESS)
                                .RemoveChildren(EVENT_SUB_PROCESS_START_ID)
                                .StartEventBuilder(EVENT_SUB_PROCESS_START_ID)
                                .TimerWithDuration("PT50M")
                                .Done();

            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(sourceProcess);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(targetProcess);

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities(USER_TASK_ID, USER_TASK_ID)
                .MapActivities(EVENT_SUB_PROCESS_START_ID, EVENT_SUB_PROCESS_START_ID)
                .UpdateEventTrigger()
                .Build();

            // when
            testHelper.CreateProcessInstanceAndMigrate(migrationPlan);

            // then
            var newDueDate = new DateTime(ClockUtil.CurrentTime.Ticks).AddMinutes(50);

            testHelper.AssertJobMigrated(testHelper.SnapshotBeforeMigration.Jobs[0], EVENT_SUB_PROCESS_START_ID,
                                         newDueDate);

            // and it is possible to successfully complete the migrated instance
            var jobAfterMigration = testHelper.SnapshotAfterMigration.Jobs[0];

            rule.ManagementService.ExecuteJob(jobAfterMigration.Id);

            testHelper.CompleteTask(EVENT_SUB_PROCESS_TASK_ID);
            testHelper.AssertProcessEnded(testHelper.SnapshotBeforeMigration.ProcessInstanceId);
        }
コード例 #15
0
        public virtual void TestTimerAndOldJobsArePreferred()
        {
            // first start process with timer job
            var timerProcess1 = RuntimeService.StartProcessInstanceByKey("testProcess");

            // then start process with async task
            ClockTestUtil.IncrementClock(1);
            var asyncProcess1 = RuntimeService.StartProcessInstanceByKey("simpleAsyncProcess");

            // then start process with timer job
            ClockTestUtil.IncrementClock(1);
            var timerProcess2 = RuntimeService.StartProcessInstanceByKey("testProcess");

            // and another process with async task after the timers are acquirable
            ClockTestUtil.IncrementClock(61);
            var asyncProcess2 = RuntimeService.StartProcessInstanceByKey("simpleAsyncProcess");

            var timerJob1   = ManagementService.CreateJobQuery(c => c.ProcessInstanceId == timerProcess1.Id).First();
            var timerJob2   = ManagementService.CreateJobQuery(c => c.ProcessInstanceId == timerProcess2.Id).First();
            var messageJob1 = ManagementService.CreateJobQuery(c => c.ProcessInstanceId == asyncProcess1.Id).First();
            var messageJob2 = ManagementService.CreateJobQuery(c => c.ProcessInstanceId == asyncProcess2.Id).First();

            Assert.NotNull(timerJob1.Duedate);
            Assert.NotNull(timerJob2.Duedate);
            Assert.NotNull(messageJob1.Duedate);
            Assert.NotNull(messageJob2.Duedate);

            Assert.True(messageJob1.Duedate < timerJob1.Duedate);
            Assert.True(timerJob1.Duedate < timerJob2.Duedate);
            Assert.True(timerJob2.Duedate < messageJob2.Duedate);

            var acquirableJobs = FindAcquirableJobs();

            Assert.AreEqual(4, acquirableJobs.Count);
            Assert.AreEqual(timerJob1.Id, acquirableJobs[0].Id);
            Assert.AreEqual(timerJob2.Id, acquirableJobs[1].Id);
            Assert.AreEqual(messageJob1.Id, acquirableJobs[2].Id);
            Assert.AreEqual(messageJob2.Id, acquirableJobs[3].Id);
        }
コード例 #16
0
        public virtual void testBatchQueryOrderByEndTimeAsc()
        {
            // given
            ClockTestUtil.SetClockToDateWithoutMilliseconds();
            var batch1 = helper.MigrateProcessInstancesAsync(1);

            helper.CompleteBatch(batch1);

            ClockTestUtil.IncrementClock(1000);
            var batch2 = helper.MigrateProcessInstancesAsync(1);

            helper.CompleteBatch(batch2);

            // when
            var orderedBatches = historyService.CreateHistoricBatchQuery()
                                 //.OrderByEndTime()
                                 /*.Asc()*/

                                 .ToList();

            // then
            //verifySorting(orderedBatches, historicBatchByEndTime());
        }
コード例 #17
0
        public virtual void testMonitorJobPollingForCompletion()
        {
            var batch = helper.MigrateProcessInstancesAsync(10);

            // when the seed job creates the monitor job
            var createDate = ClockTestUtil.SetClockToDateWithoutMilliseconds();

            helper.ExecuteSeedJob(batch);

            // then the monitor job has a no due date set
            var monitorJob = helper.GetMonitorJob(batch);

            Assert.NotNull(monitorJob);
            Assert.IsNull(monitorJob.Duedate);

            // when the monitor job is executed
            helper.ExecuteMonitorJob(batch);

            // then the monitor job has a due date of the default batch poll time
            monitorJob = helper.GetMonitorJob(batch);
            var dueDate = helper.AddSeconds(createDate, 30);

            Assert.AreEqual(dueDate, monitorJob.Duedate);
        }
コード例 #18
0
        public virtual void testMigrateJobUpdateTimerConfiguration()
        {
            // given
            ClockTestUtil.SetClockToDateWithoutMilliseconds();

            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(TimerCatchModels.ONE_TIMER_CATCH_PROCESS);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.NewModel()
                                                                            .StartEvent()
                                                                            .IntermediateCatchEvent("timerCatch")
                                                                            .TimerWithDuration("PT50M")
                                                                            .UserTask("userTask")
                                                                            .EndEvent()
                                                                            .Done());

            var migrationPlan =
                rule.RuntimeService.CreateMigrationPlan(sourceProcessDefinition.Id, targetProcessDefinition.Id)
                .MapActivities("timerCatch", "timerCatch")
                .UpdateEventTrigger()
                .Build();

            // when
            var processInstance = testHelper.CreateProcessInstanceAndMigrate(migrationPlan);

            // then
            var newDueDate = new DateTime(ClockUtil.CurrentTime.Ticks).AddMinutes(50);

            testHelper.AssertJobMigrated(testHelper.SnapshotBeforeMigration.Jobs[0], "timerCatch", newDueDate);

            // and it is possible to trigger the event
            var jobAfterMigration = testHelper.SnapshotAfterMigration.Jobs[0];

            rule.ManagementService.ExecuteJob(jobAfterMigration.Id);

            testHelper.CompleteTask("userTask");
            testHelper.AssertProcessEnded(processInstance.Id);
        }
コード例 #19
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Before public void setClock()
        public virtual void setClock()
        {
            ClockTestUtil.setClockToDateWithoutMilliseconds();
        }