예제 #1
0
        protected internal virtual VariableMap getVariables(object input)
        {
            VariableMap variables = Variables.createVariables();

            variables.put("input1", input);
            return(variables);
        }
예제 #2
0
        public virtual void resultIsSortedByEvaluationTime()
        {
            // given start process and evaluate decision
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            DateTime now = DateTime.Now;
            DateTime nowMinus2Seconds = new DateTime(now.Ticks - 2000L);
            DateTime nowPlus2Seconds  = new DateTime(now.Ticks + 2000L);

            ClockUtil.CurrentTime = nowMinus2Seconds;
            ProcessInstance firstProcessInstance = runtimeService.startProcessInstanceByKey("testProcess", variables);

            ClockUtil.CurrentTime = now;
            ProcessInstance secondProcessInstance = runtimeService.startProcessInstanceByKey("testProcess", variables);

            ClockUtil.CurrentTime = nowPlus2Seconds;
            ProcessInstance thirdProcessInstance = runtimeService.startProcessInstanceByKey("testProcess", variables);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(pastDate(), null, 3);

            // then
            assertThat(decisionInstances.Count, @is(3));
            assertThat(decisionInstances[0].ProcessInstanceId, @is(firstProcessInstance.Id));
            assertThat(decisionInstances[1].ProcessInstanceId, @is(secondProcessInstance.Id));
            assertThat(decisionInstances[2].ProcessInstanceId, @is(thirdProcessInstance.Id));
        }
예제 #3
0
 public virtual MessageCorrelationBuilder setVariableLocal(string variableName, object variableValue)
 {
     ensureNotNull("variableName", variableName);
     ensurePayloadProcessInstanceVariablesLocalInitialized();
     payloadProcessInstanceVariablesLocal.put(variableName, variableValue);
     return(this);
 }
예제 #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testPurgeWithAsyncProcessInstance()
        public virtual void testPurgeWithAsyncProcessInstance()
        {
            // given process with variable and async process instance
            BpmnModelInstance test = Bpmn.createExecutableProcess(PROCESS_DEF_KEY).startEvent().camundaAsyncBefore().userTask().userTask().endEvent().done();

            engineRule.RepositoryService.createDeployment().addModelInstance(PROCESS_MODEL_NAME, test).deploy();

            VariableMap variables = Variables.createVariables();

            variables.put("key", "value");
            engineRule.RuntimeService.startProcessInstanceByKey(PROCESS_DEF_KEY, variables);
            Job job = engineRule.ManagementService.createJobQuery().singleResult();

            engineRule.ManagementService.executeJob(job.Id);
            Task task = engineRule.TaskService.createTaskQuery().singleResult();

            engineRule.TaskService.complete(task.Id);

            // when purge is executed
            ManagementServiceImpl managementService = (ManagementServiceImpl)engineRule.ManagementService;

            managementService.purge();

            // then no more data exist
            assertAndEnsureCleanDbAndCache(engineRule.ProcessEngine, true);
        }
예제 #5
0
        private void executeComplexBpmnProcess(bool complete)
        {
            VariableMap variables = Variables.createVariables();

            variables.put("key", "value");
            engineRule.RuntimeService.startProcessInstanceByKey(PROCESS_DEF_KEY, variables);
            //execute start event
            Job job = engineRule.ManagementService.createJobQuery().singleResult();

            engineRule.ManagementService.executeJob(job.Id);

            //fetch tasks and jobs
            IList <LockedExternalTask> externalTasks = engineRule.ExternalTaskService.fetchAndLock(1, "worker").topic("external", 1500).execute();

            job = engineRule.ManagementService.createJobQuery().singleResult();
            Task task = engineRule.TaskService.createTaskQuery().singleResult();

            //complete
            if (complete)
            {
                engineRule.ManagementService.setJobRetries(job.Id, 0);
                engineRule.ManagementService.executeJob(job.Id);
                engineRule.ExternalTaskService.complete(externalTasks[0].Id, "worker");
                engineRule.TaskService.complete(task.Id);
            }
        }
예제 #6
0
        public virtual void decisionOutputInstanceProperties()
        {
            // given start process and evaluate decision
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            runtimeService.startProcessInstanceByKey("testProcess", variables);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(pastDate(), null, 10);

            // then
            assertThat(decisionInstances.Count, @is(1));
            HistoricDecisionInstance decisionInstance      = decisionInstances[0];
            IList <HistoricDecisionOutputInstance> outputs = decisionInstance.Outputs;

            assertThat(outputs, @is(notNullValue()));
            assertThat(outputs.Count, @is(1));

            HistoricDecisionOutputInstance output = outputs[0];

            assertThat(output.DecisionInstanceId, @is(decisionInstance.Id));
            assertThat(output.ClauseId, @is("out"));
            assertThat(output.ClauseName, @is("output"));

            assertThat(output.RuleId, @is("rule"));
            assertThat(output.RuleOrder, @is(1));

            assertThat(output.VariableName, @is("result"));
        }
예제 #7
0
        public override ProcessInstanceModificationInstantiationBuilder setVariable(string name, object value)
        {
            ensureNotNull(typeof(NotValidException), "Variable name must not be null", "name", name);

            AbstractInstantiationCmd currentInstantiation = CurrentInstantiation;

            if (currentInstantiation != null)
            {
                currentInstantiation.addVariable(name, value);
            }
            else
            {
                processVariables.put(name, value);
            }

            return(this);
        }
예제 #8
0
        public virtual MessageCorrelationBuilder processInstanceVariableEquals(string variableName, object variableValue)
        {
            ensureNotNull("variableName", variableName);
            ensureCorrelationProcessInstanceVariablesInitialized();

            correlationProcessInstanceVariables.put(variableName, variableValue);
            return(this);
        }
예제 #9
0
        public virtual void getCompletedHistoricDecisionInstances()
        {
            // given start process and evaluate decision
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            runtimeService.startProcessInstanceByKey("testProcess", variables);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(pastDate(), null, 10);

            // then
            assertThat(decisionInstances.Count, @is(1));
            assertThatDecisionsHaveAllImportantInformation(decisionInstances);
        }
예제 #10
0
        public virtual void testGetDecisionInstancesWithAuthorization()
        {
            // given
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            startProcessInstanceByKey("testProcess", variables);
            createGrantAuthorization(DECISION_DEFINITION, "*", userId, READ_HISTORY);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(new DateTime(0L), null, 10);

            // then
            assertThat(decisionInstances.Count, @is(1));
        }
예제 #11
0
        public virtual void maxResultsParameterWorks()
        {
            // given start process and evaluate decision
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            runtimeService.startProcessInstanceByKey("testProcess", variables);
            runtimeService.startProcessInstanceByKey("testProcess", variables);
            runtimeService.startProcessInstanceByKey("testProcess", variables);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(null, null, 2);

            // then
            assertThat(decisionInstances.Count, @is(2));
        }
예제 #12
0
        public static VariableMap toMap(IDictionary <string, VariableValueDto> variables, ProcessEngine processEngine, ObjectMapper objectMapper)
        {
            if (variables == null)
            {
                return(null);
            }

            VariableMap result = Variables.createVariables();

            foreach (KeyValuePair <string, VariableValueDto> variableEntry in variables.SetOfKeyValuePairs())
            {
                result.put(variableEntry.Key, variableEntry.Value.toTypedValue(processEngine, objectMapper));
            }

            return(result);
        }
예제 #13
0
        public virtual void applyTo(VariableScope variableScope, VariableMap variables)
        {
            if (readLocal)
            {
                variableScope = new VariableScopeLocalAdapter(variableScope);
            }

            if (allVariables)
            {
                IDictionary <string, object> allVariables = variableScope.Variables;
                variables.putAll(allVariables);
            }
            else
            {
                object value = getSource(variableScope);
                variables.put(target, value);
            }
        }
예제 #14
0
        // CMMN //////////////////////////////////////////////////////////////////////////////////////////////////////////////

//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testPurgeCmmnProcess()
        public virtual void testPurgeCmmnProcess()
        {
            // given cmmn process which is not managed by process engine rule

            engineRule.RepositoryService.createDeployment().addClasspathResource("org/camunda/bpm/engine/test/standalone/db/entitymanager/PurgeDatabaseTest.testPurgeCmmnProcess.cmmn").deploy();
            VariableMap variables = Variables.createVariables();

            variables.put("key", "value");
            engineRule.CaseService.createCaseInstanceByKey(PROCESS_DEF_KEY, variables);

            // when purge is executed
            ManagementServiceImpl managementService = (ManagementServiceImpl)engineRule.ManagementService;
            PurgeReport           purge             = managementService.purge();

            // then database and cache is cleaned
            assertAndEnsureCleanDbAndCache(engineRule.ProcessEngine, true);

            // and report contains deleted entities
            assertFalse(purge.Empty);
            CachePurgeReport cachePurgeReport = purge.CachePurgeReport;

            assertEquals(1, cachePurgeReport.getReportValue(CachePurgeReport.CASE_DEF_CACHE).Count);

            DatabasePurgeReport databasePurgeReport = purge.DatabasePurgeReport;

            assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_DEPLOYMENT"));
            assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_TASK"));
            assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_GE_BYTEARRAY"));
            assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RE_CASE_DEF"));
            assertEquals(3, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_CASE_EXECUTION"));
            assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_VARIABLE"));
            assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_RU_CASE_SENTRY_PART"));

            if (processEngineConfiguration.HistoryLevel.Equals(org.camunda.bpm.engine.impl.history.HistoryLevel_Fields.HISTORY_LEVEL_FULL))
            {
                assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_DETAIL"));
                assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_TASKINST"));
                assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_VARINST"));
                assertEquals(1, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_CASEINST"));
                assertEquals(2, (long)databasePurgeReport.getReportValue(databaseTablePrefix + "ACT_HI_CASEACTINST"));
            }
        }
예제 #15
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void createVariablesUsingVariableMap()
        public virtual void createVariablesUsingVariableMap()
        {
            // given
            BpmnModelInstance simpleInstanceWithListener = Bpmn.createExecutableProcess("Process").startEvent().camundaExecutionListenerClass([email protected]_Fields.EVENTNAME_END, typeof(ReadTransientVariableExecutionListener)).userTask().endEvent().done();

            testRule.deploy(simpleInstanceWithListener);

            // when
            VariableMap variables = Variables.createVariables();

            variables.put(VARIABLE_NAME, Variables.untypedValue(true, true));
            runtimeService.startProcessInstanceByKey("Process", variables);

            // then
            IList <VariableInstance>         variableInstances         = runtimeService.createVariableInstanceQuery().list();
            IList <HistoricVariableInstance> historicVariableInstances = historyService.createHistoricVariableInstanceQuery().list();

            assertEquals(0, variableInstances.Count);
            assertEquals(0, historicVariableInstances.Count);
        }
예제 #16
0
        public virtual void testHappyPathV2()
        {
            Stream      invoiceInputStream = typeof(InvoiceProcessApplication).ClassLoader.getResourceAsStream("invoice.pdf");
            VariableMap variables          = Variables.createVariables().putValue("creditor", "Great Pizza for Everyone Inc.").putValue("amount", 300.0d).putValue("invoiceCategory", "Travel Expenses").putValue("invoiceNumber", "GPFE-23232323").putValue("invoiceDocument", fileValue("invoice.pdf").file(invoiceInputStream).mimeType("application/pdf").create());

            ProcessInstance pi = runtimeService.startProcessInstanceByKey("invoice", variables);

            Task task = taskService.createTaskQuery().processInstanceId(pi.Id).singleResult();

            assertEquals("approveInvoice", task.TaskDefinitionKey);

            IList <IdentityLink> links          = taskService.getIdentityLinksForTask(task.Id);
            ISet <string>        approverGroups = new HashSet <string>();

            foreach (IdentityLink link in links)
            {
                approverGroups.Add(link.GroupId);
            }
            assertEquals(2, approverGroups.Count);
            assertTrue(approverGroups.Contains("accounting"));
            assertTrue(approverGroups.Contains("sales"));

            variables.clear();
            variables.put("approved", true);
            taskService.complete(task.Id, variables);

            task = taskService.createTaskQuery().processInstanceId(pi.Id).singleResult();

            assertEquals("prepareBankTransfer", task.TaskDefinitionKey);
            taskService.complete(task.Id);

            Job archiveInvoiceJob = managementService.createJobQuery().singleResult();

            assertNotNull(archiveInvoiceJob);
            managementService.executeJob(archiveInvoiceJob.Id);

            assertProcessEnded(pi.Id);
        }
예제 #17
0
        public virtual void testGetDecisionInstancesWithoutAuthorization()
        {
            // given
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            startProcessInstanceByKey("testProcess", variables);

            try
            {
                // when
                optimizeService.getHistoricDecisionInstances(new DateTime(0L), null, 10);
                fail("Exception expected: It should not be possible to retrieve the decision instances");
            }
            catch (AuthorizationException e)
            {
                // then
                string exceptionMessage = e.Message;
                assertTextPresent(userId, exceptionMessage);
                assertTextPresent(READ_HISTORY.Name, exceptionMessage);
                assertTextPresent(DECISION_DEFINITION.resourceName(), exceptionMessage);
            }
        }
예제 #18
0
        public virtual void fishedAfterAndFinishedAtParameterWorks()
        {
            // given start process and evaluate decision
            VariableMap variables = Variables.createVariables();

            variables.put("input1", null);
            DateTime now = DateTime.Now;
            DateTime nowMinus2Seconds = new DateTime(now.Ticks - 2000L);
            DateTime nowPlus2Seconds  = new DateTime(now.Ticks + 2000L);

            ClockUtil.CurrentTime = nowMinus2Seconds;
            runtimeService.startProcessInstanceByKey("testProcess", variables);
            ClockUtil.CurrentTime = now;
            runtimeService.startProcessInstanceByKey("testProcess", variables);
            ClockUtil.CurrentTime = nowPlus2Seconds;
            runtimeService.startProcessInstanceByKey("testProcess", variables);

            // when
            IList <HistoricDecisionInstance> decisionInstances = optimizeService.getHistoricDecisionInstances(now, now, 10);

            // then
            assertThat(decisionInstances.Count, @is(0));
        }