Beispiel #1
0
        protected internal virtual IList <BpmnModelInstance> createProcesses(int numberOfProcesses)
        {
            IList <BpmnModelInstance> result = new List <BpmnModelInstance>(numberOfProcesses);

            for (int i = 0; i < numberOfProcesses; i++)
            {
                result.Add(ProcessModels.oneTaskProcess(i));
            }
            return(result);
        }
        protected internal virtual IList <IBpmnModelInstance> createSequentialCallActivityProcessAsync()
        {
            ICollection <IBpmnModelInstance> modelInstances = new LinkedList <IBpmnModelInstance>();

            modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessAsExpressionAsync(0));
            modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessPassingVariables(1, 2));
            modelInstances.Add(CallActivityModels.oneBpmnCallActivityProcessPassingVariables(2, 0));
            modelInstances.Add(ProcessModels.SetOneTaskProcess(3));

            return(modelInstances as IList <IBpmnModelInstance>);
        }
 public virtual IBpmnModelInstance Build()
 {
     return(ProcessModels.NewModel(ProcessKeyRenamed)
            .StartEvent()
            .ServiceTask(ExternalTaskNameRenamed)
            .CamundaType(ExternalTaskTypeRenamed)
            .CamundaTopic(TopicRenamed)
            .CamundaTaskPriority(PriorityRenamed.ToString())
            .EndEvent()
            .Done());
 }
        /// <summary>
        /// Initially populates a list of processes.
        /// </summary>
        private void PopulateProcesses()
        {
            foreach (int key in ProcessModels.Keys)
            {
                ProcessModels.Remove(key);
            }

            foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcesses())
            {
                AddProcess(process);
            }
        }
        public ActionResult Create([Bind(Include = "ProcessID,Name")] ProcessModels processModels)
        {
            if (ModelState.IsValid)
            {
                processModels.CreationTime = DateTime.Now;
                db.ProcessModels.Add(processModels);
                db.SaveChanges();
                return(RedirectToAction("Edit", new { id = processModels.ProcessID }));
            }

            return(View(processModels));
        }
        // GET: ProcessModels/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProcessModels processModels = db.ProcessModels.Find(id);

            if (processModels == null)
            {
                return(HttpNotFound());
            }
            return(View(processModels));
        }
Beispiel #7
0
        public virtual void testMigrateEventSubscriptionUpdateSignalExpressionNameWithVariables()
        {
            // given
            var newSignalName           = "new" + SignalCatchModels.SIGNAL_NAME + "-${var}";
            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(SignalCatchModels.ONE_SIGNAL_CATCH_PROCESS);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(ProcessModels.NewModel()
                                                                            .StartEvent()
                                                                            .IntermediateCatchEvent("signalCatch")
                                                                            .Signal(newSignalName)
                                                                            .UserTask("userTask")
                                                                            .EndEvent()
                                                                            .Done());

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

            var variables = new Dictionary <string, object>();

            variables["var"] = "foo";


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

            // then there should be a variable
            var beforeMigration = testHelper.SnapshotBeforeMigration.GetSingleVariable("var");

            Assert.AreEqual(1, testHelper.SnapshotAfterMigration.GetVariables()
                            .Count);
            testHelper.AssertVariableMigratedToExecution(beforeMigration, beforeMigration.ExecutionId);

            // and the signal event subscription's event name has changed
            var resolvedSignalName = "new" + SignalCatchModels.SIGNAL_NAME + "-foo";

            testHelper.AssertEventSubscriptionMigrated("signalCatch", SignalCatchModels.SIGNAL_NAME, "signalCatch",
                                                       resolvedSignalName);

            // and it is possible to trigger the event and complete the task afterwards
            rule.RuntimeService.SignalEventReceived(resolvedSignalName);

            testHelper.CompleteTask("userTask");
            testHelper.AssertProcessEnded(processInstance.Id);
        }
        public virtual void testCannotMigrateAsyncActivityInstance()
        {
            // given
//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.GetName method:
            var model = ProcessModels.NewModel()
                        .StartEvent()
                        .ServiceTask("serviceTask")
                        //.CamundaAsyncBefore()
                        .CamundaClass(typeof(SignallableServiceTaskDelegate).FullName)
                        .EndEvent()
                        .Done();

            var sourceProcessDefinition = testHelper.DeployAndGetDefinition(model);
            var targetProcessDefinition = testHelper.DeployAndGetDefinition(model);

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

            var ProcessInstanceId = rule.RuntimeService.StartProcessInstanceById(sourceProcessDefinition.Id)
                                    .Id;

            testHelper.ExecuteAvailableJobs();

            // when
            try
            {
                rule.RuntimeService.NewMigration(migrationPlan)
                .ProcessInstanceIds(ProcessInstanceId)
                .Execute();

                Assert.Fail("should Assert.Fail");
            }
            catch (MigratingProcessInstanceValidationException e)
            {
                // then
                MigratingProcessInstanceValidationReportAssert.That(e.ValidationReport)
                .HasActivityInstanceFailures("serviceTask",
                                             "The type of the source activity is not supported for activity instance migration");
            }
        }
Beispiel #9
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testInvokeListenersWhenDeletingProcessInstancesAsync()
        public virtual void testInvokeListenersWhenDeletingProcessInstancesAsync()
        {
            // given
            IncrementCounterListener.counter = 0;

//JAVA TO C# CONVERTER WARNING: The .NET Type.FullName property will not always yield results identical to the Java Class.getName method:
            BpmnModelInstance instance = ProcessModels.newModel(ONE_TASK_PROCESS).startEvent().userTask().camundaExecutionListenerClass([email protected]_Fields.EVENTNAME_END, typeof(IncrementCounterListener).FullName).endEvent().done();

            migrationRule.deploy(instance);
            IList <string> processIds = startTestProcesses(1);

            // when
            Batch batch = runtimeService.deleteProcessInstancesAsync(processIds, TESTING_INSTANCE_DELETE);

            executeSeedJob(batch);
            executeBatchJobs(batch);

            // then
            assertThat(IncrementCounterListener.counter, @is(1));
        }
Beispiel #10
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);
        }
Beispiel #11
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);
        }
Beispiel #12
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testChangeTaskType()
        public virtual void testChangeTaskType()
        {
            // given
            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.newModel().startEvent().businessRuleTask("externalBusinessRuleTask").camundaType(ExternalTaskModels.EXTERNAL_TASK_TYPE).camundaTopic(ExternalTaskModels.TOPIC).camundaTaskPriority(ExternalTaskModels.PRIORITY.ToString()).endEvent().done());

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

            ProcessInstance processInstance = rule.RuntimeService.startProcessInstanceById(sourceProcessDefinition.Id);

            // when
            testHelper.migrateProcessInstance(migrationPlan, processInstance);

            // then the task and process can be completed
            LockedExternalTask task = fetchAndLockSingleTask(ExternalTaskModels.TOPIC);

            rule.ExternalTaskService.complete(task.Id, WORKER_ID);

            testHelper.assertProcessEnded(processInstance.Id);
        }
 private void OnRemovedProcess(int processId) => ProcessModels.Remove(processId);
Beispiel #14
0
 public virtual BpmnModelInstance build()
 {
     return(ProcessModels.newModel(processKey_Renamed).startEvent().serviceTask(externalTaskName_Renamed).camundaType(externalTaskType_Renamed).camundaTopic(topic_Renamed).camundaTaskPriority(priority_Renamed.ToString()).endEvent().done());
 }
Beispiel #15
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testMigrateEventSubscriptionPreserveMessageName()
        public virtual void testMigrateEventSubscriptionPreserveMessageName()
        {
            // given
            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(MessageReceiveModels.ONE_MESSAGE_CATCH_PROCESS);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.newModel().startEvent().intermediateCatchEvent("messageCatch").message("new" + MessageReceiveModels.MESSAGE_NAME).userTask("userTask").endEvent().done());

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

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

            // then the message event subscription's event name has not changed
            testHelper.assertEventSubscriptionMigrated("messageCatch", "messageCatch", MessageReceiveModels.MESSAGE_NAME);

            // and it is possible to trigger the receive task
            rule.RuntimeService.correlateMessage(MessageReceiveModels.MESSAGE_NAME);

            testHelper.completeTask("userTask");
            testHelper.assertProcessEnded(processInstance.Id);
        }
Beispiel #16
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testMigrateEventSubscriptionUpdateSignalName()
        public virtual void testMigrateEventSubscriptionUpdateSignalName()
        {
            // given
            ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(SignalCatchModels.ONE_SIGNAL_CATCH_PROCESS);
            ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(ProcessModels.newModel().startEvent().intermediateCatchEvent("signalCatch").signal("new" + SignalCatchModels.SIGNAL_NAME).userTask("userTask").endEvent().done());

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

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

            // then the message event subscription's event name has not changed
            testHelper.assertEventSubscriptionMigrated("signalCatch", SignalCatchModels.SIGNAL_NAME, "signalCatch", "new" + SignalCatchModels.SIGNAL_NAME);

            // and it is possible to trigger the event
            rule.RuntimeService.signalEventReceived("new" + SignalCatchModels.SIGNAL_NAME);

            testHelper.completeTask("userTask");
            testHelper.assertProcessEnded(processInstance.Id);
        }
        public ActionResult Update(JsonComboUpdate psvm)
        {
            int    success = 0;
            string message = "Unable to save in database";

            switch (psvm.Operation)
            {
            case OperationType.Name:
            {
                ProcessModels processModels = db.ProcessModels.Find(psvm.Identifier);
                processModels.Name = psvm.Value;
                db.SaveChanges();
                success = 1;
                message = "";

                break;
            }

            case OperationType.Parent:
            {
                ProcessModels processModels = db.ProcessModels.Find(psvm.Identifier);
                ProcessModels tmp           = null;
                processModels.ParentID = psvm.Value == null ? null : (int?)int.Parse(psvm.Value);
                if (processModels.ParentID == null)
                {
                    processModels.Level = 0;
                    TasksController.RemoveAllTasks(processModels.ProcessID);
                }
                else
                {
                    tmp = db.ProcessModels.Find(processModels.ParentID);
                    processModels.Level = tmp.Level + 1;
                    if (db.Tasks.Where(x => x.ProcessID == processModels.ProcessID).Count() == 0)
                    {
                        TasksController.AddNewTask(processModels.ProcessID);
                    }
                }
                db.SaveChanges();
                success = 2;
                message = "";
                break;
            }

            case OperationType.Procedure:
            {
                ProcessModels processModels = db.ProcessModels.Find(psvm.Identifier);
                processModels.ProcedureID = psvm.Value == null ? null : (int?)int.Parse(psvm.Value);
                db.SaveChanges();
                success = 1;
                message = "";
                break;
            }

            case OperationType.Manager:
            {
                ProcessModels processModels = db.ProcessModels.Find(psvm.Identifier);
                processModels.ManagerID = psvm.Value == null ? null : (int?)int.Parse(psvm.Value);
                db.SaveChanges();
                success = 1;
                message = "";
                break;
            }
            }
            return(Json(new { code = success, message = message }, "application/json"));
        }